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

Side by Side Diff: source/libvpx/test/convolve_test.cc

Issue 668403002: libvpx: Pull from upstream (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/libvpx/
Patch Set: Created 6 years, 2 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
« no previous file with comments | « source/libvpx/examples/vpx_temporal_svc_encoder.c ('k') | source/libvpx/test/dct16x16_test.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
(...skipping 18 matching lines...) Expand all
29 const int16_t *filter_x, int filter_x_stride, 29 const int16_t *filter_x, int filter_x_stride,
30 const int16_t *filter_y, int filter_y_stride, 30 const int16_t *filter_y, int filter_y_stride,
31 int w, int h); 31 int w, int h);
32 32
33 struct ConvolveFunctions { 33 struct ConvolveFunctions {
34 ConvolveFunctions(ConvolveFunc h8, ConvolveFunc h8_avg, 34 ConvolveFunctions(ConvolveFunc h8, ConvolveFunc h8_avg,
35 ConvolveFunc v8, ConvolveFunc v8_avg, 35 ConvolveFunc v8, ConvolveFunc v8_avg,
36 ConvolveFunc hv8, ConvolveFunc hv8_avg, 36 ConvolveFunc hv8, ConvolveFunc hv8_avg,
37 int bd) 37 int bd)
38 : h8_(h8), v8_(v8), hv8_(hv8), h8_avg_(h8_avg), v8_avg_(v8_avg), 38 : h8_(h8), v8_(v8), hv8_(hv8), h8_avg_(h8_avg), v8_avg_(v8_avg),
39 hv8_avg_(hv8_avg), use_high_bd_(bd) {} 39 hv8_avg_(hv8_avg), use_highbd_(bd) {}
40 40
41 ConvolveFunc h8_; 41 ConvolveFunc h8_;
42 ConvolveFunc v8_; 42 ConvolveFunc v8_;
43 ConvolveFunc hv8_; 43 ConvolveFunc hv8_;
44 ConvolveFunc h8_avg_; 44 ConvolveFunc h8_avg_;
45 ConvolveFunc v8_avg_; 45 ConvolveFunc v8_avg_;
46 ConvolveFunc hv8_avg_; 46 ConvolveFunc hv8_avg_;
47 int use_high_bd_; // 0 if high bitdepth not used, else the actual bit depth. 47 int use_highbd_; // 0 if high bitdepth not used, else the actual bit depth.
48 }; 48 };
49 49
50 typedef std::tr1::tuple<int, int, const ConvolveFunctions *> ConvolveParam; 50 typedef std::tr1::tuple<int, int, const ConvolveFunctions *> ConvolveParam;
51 51
52 // Reference 8-tap subpixel filter, slightly modified to fit into this test. 52 // Reference 8-tap subpixel filter, slightly modified to fit into this test.
53 #define VP9_FILTER_WEIGHT 128 53 #define VP9_FILTER_WEIGHT 128
54 #define VP9_FILTER_SHIFT 7 54 #define VP9_FILTER_SHIFT 7
55 uint8_t clip_pixel(int x) { 55 uint8_t clip_pixel(int x) {
56 return x < 0 ? 0 : 56 return x < 0 ? 0 :
57 x > 255 ? 255 : 57 x > 255 ? 255 :
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
163 163
164 assert(output_width <= kMaxDimension); 164 assert(output_width <= kMaxDimension);
165 assert(output_height <= kMaxDimension); 165 assert(output_height <= kMaxDimension);
166 filter_block2d_8_c(src_ptr, src_stride, HFilter, VFilter, tmp, 64, 166 filter_block2d_8_c(src_ptr, src_stride, HFilter, VFilter, tmp, 64,
167 output_width, output_height); 167 output_width, output_height);
168 block2d_average_c(tmp, 64, dst_ptr, dst_stride, 168 block2d_average_c(tmp, 64, dst_ptr, dst_stride,
169 output_width, output_height); 169 output_width, output_height);
170 } 170 }
171 171
172 #if CONFIG_VP9_HIGHBITDEPTH 172 #if CONFIG_VP9_HIGHBITDEPTH
173 void high_filter_block2d_8_c(const uint16_t *src_ptr, 173 void highbd_filter_block2d_8_c(const uint16_t *src_ptr,
174 const unsigned int src_stride, 174 const unsigned int src_stride,
175 const int16_t *HFilter, 175 const int16_t *HFilter,
176 const int16_t *VFilter, 176 const int16_t *VFilter,
177 uint16_t *dst_ptr, 177 uint16_t *dst_ptr,
178 unsigned int dst_stride, 178 unsigned int dst_stride,
179 unsigned int output_width, 179 unsigned int output_width,
180 unsigned int output_height, 180 unsigned int output_height,
181 int bd) { 181 int bd) {
182 // Between passes, we use an intermediate buffer whose height is extended to 182 // Between passes, we use an intermediate buffer whose height is extended to
183 // have enough horizontally filtered values as input for the vertical pass. 183 // have enough horizontally filtered values as input for the vertical pass.
184 // This buffer is allocated to be big enough for the largest block type we 184 // This buffer is allocated to be big enough for the largest block type we
185 // support. 185 // support.
186 const int kInterp_Extend = 4; 186 const int kInterp_Extend = 4;
187 const unsigned int intermediate_height = 187 const unsigned int intermediate_height =
188 (kInterp_Extend - 1) + output_height + kInterp_Extend; 188 (kInterp_Extend - 1) + output_height + kInterp_Extend;
189 189
190 /* Size of intermediate_buffer is max_intermediate_height * filter_max_width, 190 /* Size of intermediate_buffer is max_intermediate_height * filter_max_width,
191 * where max_intermediate_height = (kInterp_Extend - 1) + filter_max_height 191 * where max_intermediate_height = (kInterp_Extend - 1) + filter_max_height
(...skipping 18 matching lines...) Expand all
210 (src_ptr[1] * HFilter[1]) + 210 (src_ptr[1] * HFilter[1]) +
211 (src_ptr[2] * HFilter[2]) + 211 (src_ptr[2] * HFilter[2]) +
212 (src_ptr[3] * HFilter[3]) + 212 (src_ptr[3] * HFilter[3]) +
213 (src_ptr[4] * HFilter[4]) + 213 (src_ptr[4] * HFilter[4]) +
214 (src_ptr[5] * HFilter[5]) + 214 (src_ptr[5] * HFilter[5]) +
215 (src_ptr[6] * HFilter[6]) + 215 (src_ptr[6] * HFilter[6]) +
216 (src_ptr[7] * HFilter[7]) + 216 (src_ptr[7] * HFilter[7]) +
217 (VP9_FILTER_WEIGHT >> 1); // Rounding 217 (VP9_FILTER_WEIGHT >> 1); // Rounding
218 218
219 // Normalize back to 0-255... 219 // Normalize back to 0-255...
220 *output_ptr = clip_pixel_high(temp >> VP9_FILTER_SHIFT, bd); 220 *output_ptr = clip_pixel_highbd(temp >> VP9_FILTER_SHIFT, bd);
221 ++src_ptr; 221 ++src_ptr;
222 output_ptr += intermediate_height; 222 output_ptr += intermediate_height;
223 } 223 }
224 src_ptr += src_next_row_stride; 224 src_ptr += src_next_row_stride;
225 output_ptr += intermediate_next_stride; 225 output_ptr += intermediate_next_stride;
226 } 226 }
227 } 227 }
228 228
229 // Vertical pass (transposed intermediate -> dst). 229 // Vertical pass (transposed intermediate -> dst).
230 { 230 {
231 uint16_t *src_ptr = intermediate_buffer; 231 uint16_t *src_ptr = intermediate_buffer;
232 const int dst_next_row_stride = dst_stride - output_width; 232 const int dst_next_row_stride = dst_stride - output_width;
233 unsigned int i, j; 233 unsigned int i, j;
234 for (i = 0; i < output_height; ++i) { 234 for (i = 0; i < output_height; ++i) {
235 for (j = 0; j < output_width; ++j) { 235 for (j = 0; j < output_width; ++j) {
236 // Apply filter... 236 // Apply filter...
237 const int temp = (src_ptr[0] * VFilter[0]) + 237 const int temp = (src_ptr[0] * VFilter[0]) +
238 (src_ptr[1] * VFilter[1]) + 238 (src_ptr[1] * VFilter[1]) +
239 (src_ptr[2] * VFilter[2]) + 239 (src_ptr[2] * VFilter[2]) +
240 (src_ptr[3] * VFilter[3]) + 240 (src_ptr[3] * VFilter[3]) +
241 (src_ptr[4] * VFilter[4]) + 241 (src_ptr[4] * VFilter[4]) +
242 (src_ptr[5] * VFilter[5]) + 242 (src_ptr[5] * VFilter[5]) +
243 (src_ptr[6] * VFilter[6]) + 243 (src_ptr[6] * VFilter[6]) +
244 (src_ptr[7] * VFilter[7]) + 244 (src_ptr[7] * VFilter[7]) +
245 (VP9_FILTER_WEIGHT >> 1); // Rounding 245 (VP9_FILTER_WEIGHT >> 1); // Rounding
246 246
247 // Normalize back to 0-255... 247 // Normalize back to 0-255...
248 *dst_ptr++ = clip_pixel_high(temp >> VP9_FILTER_SHIFT, bd); 248 *dst_ptr++ = clip_pixel_highbd(temp >> VP9_FILTER_SHIFT, bd);
249 src_ptr += intermediate_height; 249 src_ptr += intermediate_height;
250 } 250 }
251 src_ptr += intermediate_next_stride; 251 src_ptr += intermediate_next_stride;
252 dst_ptr += dst_next_row_stride; 252 dst_ptr += dst_next_row_stride;
253 } 253 }
254 } 254 }
255 } 255 }
256 256
257 void high_block2d_average_c(uint16_t *src, 257 void highbd_block2d_average_c(uint16_t *src,
258 unsigned int src_stride, 258 unsigned int src_stride,
259 uint16_t *output_ptr, 259 uint16_t *output_ptr,
260 unsigned int output_stride, 260 unsigned int output_stride,
261 unsigned int output_width, 261 unsigned int output_width,
262 unsigned int output_height, 262 unsigned int output_height,
263 int bd) { 263 int bd) {
264 unsigned int i, j; 264 unsigned int i, j;
265 for (i = 0; i < output_height; ++i) { 265 for (i = 0; i < output_height; ++i) {
266 for (j = 0; j < output_width; ++j) { 266 for (j = 0; j < output_width; ++j) {
267 output_ptr[j] = (output_ptr[j] + src[i * src_stride + j] + 1) >> 1; 267 output_ptr[j] = (output_ptr[j] + src[i * src_stride + j] + 1) >> 1;
268 } 268 }
269 output_ptr += output_stride; 269 output_ptr += output_stride;
270 } 270 }
271 } 271 }
272 272
273 void high_filter_average_block2d_8_c(const uint16_t *src_ptr, 273 void highbd_filter_average_block2d_8_c(const uint16_t *src_ptr,
274 const unsigned int src_stride, 274 const unsigned int src_stride,
275 const int16_t *HFilter, 275 const int16_t *HFilter,
276 const int16_t *VFilter, 276 const int16_t *VFilter,
277 uint16_t *dst_ptr, 277 uint16_t *dst_ptr,
278 unsigned int dst_stride, 278 unsigned int dst_stride,
279 unsigned int output_width, 279 unsigned int output_width,
280 unsigned int output_height, 280 unsigned int output_height,
281 int bd) { 281 int bd) {
282 uint16_t tmp[kMaxDimension * kMaxDimension]; 282 uint16_t tmp[kMaxDimension * kMaxDimension];
283 283
284 assert(output_width <= kMaxDimension); 284 assert(output_width <= kMaxDimension);
285 assert(output_height <= kMaxDimension); 285 assert(output_height <= kMaxDimension);
286 high_filter_block2d_8_c(src_ptr, src_stride, HFilter, VFilter, tmp, 64, 286 highbd_filter_block2d_8_c(src_ptr, src_stride, HFilter, VFilter, tmp, 64,
287 output_width, output_height, bd); 287 output_width, output_height, bd);
288 high_block2d_average_c(tmp, 64, dst_ptr, dst_stride, 288 highbd_block2d_average_c(tmp, 64, dst_ptr, dst_stride,
289 output_width, output_height, bd); 289 output_width, output_height, bd);
290 } 290 }
291 #endif // CONFIG_VP9_HIGHBITDEPTH 291 #endif // CONFIG_VP9_HIGHBITDEPTH
292 292
293 class ConvolveTest : public ::testing::TestWithParam<ConvolveParam> { 293 class ConvolveTest : public ::testing::TestWithParam<ConvolveParam> {
294 public: 294 public:
295 static void SetUpTestCase() { 295 static void SetUpTestCase() {
296 // Force input_ to be unaligned, output to be 16 byte aligned. 296 // Force input_ to be unaligned, output to be 16 byte aligned.
297 input_ = reinterpret_cast<uint8_t*>( 297 input_ = reinterpret_cast<uint8_t*>(
298 vpx_memalign(kDataAlignment, kInputBufferSize + 1)) + 1; 298 vpx_memalign(kDataAlignment, kInputBufferSize + 1)) + 1;
299 output_ = reinterpret_cast<uint8_t*>( 299 output_ = reinterpret_cast<uint8_t*>(
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 bool IsIndexInBorder(int i) { 339 bool IsIndexInBorder(int i) {
340 return (i < BorderTop() * kOuterBlockSize || 340 return (i < BorderTop() * kOuterBlockSize ||
341 i >= (BorderTop() + Height()) * kOuterBlockSize || 341 i >= (BorderTop() + Height()) * kOuterBlockSize ||
342 i % kOuterBlockSize < BorderLeft() || 342 i % kOuterBlockSize < BorderLeft() ||
343 i % kOuterBlockSize >= (BorderLeft() + Width())); 343 i % kOuterBlockSize >= (BorderLeft() + Width()));
344 } 344 }
345 345
346 virtual void SetUp() { 346 virtual void SetUp() {
347 UUT_ = GET_PARAM(2); 347 UUT_ = GET_PARAM(2);
348 #if CONFIG_VP9_HIGHBITDEPTH 348 #if CONFIG_VP9_HIGHBITDEPTH
349 if (UUT_->use_high_bd_ != 0) 349 if (UUT_->use_highbd_ != 0)
350 mask_ = (1 << UUT_->use_high_bd_) - 1; 350 mask_ = (1 << UUT_->use_highbd_) - 1;
351 else 351 else
352 mask_ = 255; 352 mask_ = 255;
353 #endif 353 #endif
354 /* Set up guard blocks for an inner block centered in the outer block */ 354 /* Set up guard blocks for an inner block centered in the outer block */
355 for (int i = 0; i < kOutputBufferSize; ++i) { 355 for (int i = 0; i < kOutputBufferSize; ++i) {
356 if (IsIndexInBorder(i)) 356 if (IsIndexInBorder(i))
357 output_[i] = 255; 357 output_[i] = 255;
358 else 358 else
359 output_[i] = 0; 359 output_[i] = 0;
360 } 360 }
(...skipping 23 matching lines...) Expand all
384 384
385 void CheckGuardBlocks() { 385 void CheckGuardBlocks() {
386 for (int i = 0; i < kOutputBufferSize; ++i) { 386 for (int i = 0; i < kOutputBufferSize; ++i) {
387 if (IsIndexInBorder(i)) 387 if (IsIndexInBorder(i))
388 EXPECT_EQ(255, output_[i]); 388 EXPECT_EQ(255, output_[i]);
389 } 389 }
390 } 390 }
391 391
392 uint8_t *input() const { 392 uint8_t *input() const {
393 #if CONFIG_VP9_HIGHBITDEPTH 393 #if CONFIG_VP9_HIGHBITDEPTH
394 if (UUT_->use_high_bd_ == 0) { 394 if (UUT_->use_highbd_ == 0) {
395 return input_ + BorderTop() * kOuterBlockSize + BorderLeft(); 395 return input_ + BorderTop() * kOuterBlockSize + BorderLeft();
396 } else { 396 } else {
397 return CONVERT_TO_BYTEPTR(input16_ + BorderTop() * kOuterBlockSize + 397 return CONVERT_TO_BYTEPTR(input16_ + BorderTop() * kOuterBlockSize +
398 BorderLeft()); 398 BorderLeft());
399 } 399 }
400 #else 400 #else
401 return input_ + BorderTop() * kOuterBlockSize + BorderLeft(); 401 return input_ + BorderTop() * kOuterBlockSize + BorderLeft();
402 #endif 402 #endif
403 } 403 }
404 404
405 uint8_t *output() const { 405 uint8_t *output() const {
406 #if CONFIG_VP9_HIGHBITDEPTH 406 #if CONFIG_VP9_HIGHBITDEPTH
407 if (UUT_->use_high_bd_ == 0) { 407 if (UUT_->use_highbd_ == 0) {
408 return output_ + BorderTop() * kOuterBlockSize + BorderLeft(); 408 return output_ + BorderTop() * kOuterBlockSize + BorderLeft();
409 } else { 409 } else {
410 return CONVERT_TO_BYTEPTR(output16_ + BorderTop() * kOuterBlockSize + 410 return CONVERT_TO_BYTEPTR(output16_ + BorderTop() * kOuterBlockSize +
411 BorderLeft()); 411 BorderLeft());
412 } 412 }
413 #else 413 #else
414 return output_ + BorderTop() * kOuterBlockSize + BorderLeft(); 414 return output_ + BorderTop() * kOuterBlockSize + BorderLeft();
415 #endif 415 #endif
416 } 416 }
417 417
418 uint16_t lookup(uint8_t *list, int index) const { 418 uint16_t lookup(uint8_t *list, int index) const {
419 #if CONFIG_VP9_HIGHBITDEPTH 419 #if CONFIG_VP9_HIGHBITDEPTH
420 if (UUT_->use_high_bd_ == 0) { 420 if (UUT_->use_highbd_ == 0) {
421 return list[index]; 421 return list[index];
422 } else { 422 } else {
423 return CONVERT_TO_SHORTPTR(list)[index]; 423 return CONVERT_TO_SHORTPTR(list)[index];
424 } 424 }
425 #else 425 #else
426 return list[index]; 426 return list[index];
427 #endif 427 #endif
428 } 428 }
429 429
430 void assign_val(uint8_t *list, int index, uint16_t val) const { 430 void assign_val(uint8_t *list, int index, uint16_t val) const {
431 #if CONFIG_VP9_HIGHBITDEPTH 431 #if CONFIG_VP9_HIGHBITDEPTH
432 if (UUT_->use_high_bd_ == 0) { 432 if (UUT_->use_highbd_ == 0) {
433 list[index] = (uint8_t) val; 433 list[index] = (uint8_t) val;
434 } else { 434 } else {
435 CONVERT_TO_SHORTPTR(list)[index] = val; 435 CONVERT_TO_SHORTPTR(list)[index] = val;
436 } 436 }
437 #else 437 #else
438 list[index] = (uint8_t) val; 438 list[index] = (uint8_t) val;
439 #endif 439 #endif
440 } 440 }
441 441
442 void wrapper_filter_average_block2d_8_c(const uint8_t *src_ptr, 442 void wrapper_filter_average_block2d_8_c(const uint8_t *src_ptr,
443 const unsigned int src_stride, 443 const unsigned int src_stride,
444 const int16_t *HFilter, 444 const int16_t *HFilter,
445 const int16_t *VFilter, 445 const int16_t *VFilter,
446 uint8_t *dst_ptr, 446 uint8_t *dst_ptr,
447 unsigned int dst_stride, 447 unsigned int dst_stride,
448 unsigned int output_width, 448 unsigned int output_width,
449 unsigned int output_height) { 449 unsigned int output_height) {
450 #if CONFIG_VP9_HIGHBITDEPTH 450 #if CONFIG_VP9_HIGHBITDEPTH
451 if (UUT_->use_high_bd_ == 0) { 451 if (UUT_->use_highbd_ == 0) {
452 filter_average_block2d_8_c(src_ptr, src_stride, HFilter, VFilter, 452 filter_average_block2d_8_c(src_ptr, src_stride, HFilter, VFilter,
453 dst_ptr, dst_stride, output_width, 453 dst_ptr, dst_stride, output_width,
454 output_height); 454 output_height);
455 } else { 455 } else {
456 high_filter_average_block2d_8_c(CONVERT_TO_SHORTPTR(src_ptr), src_stride, 456 highbd_filter_average_block2d_8_c(CONVERT_TO_SHORTPTR(src_ptr),
457 HFilter, VFilter, 457 src_stride, HFilter, VFilter,
458 CONVERT_TO_SHORTPTR(dst_ptr), dst_stride, 458 CONVERT_TO_SHORTPTR(dst_ptr),
459 output_width, output_height, 459 dst_stride, output_width, output_height,
460 UUT_->use_high_bd_); 460 UUT_->use_highbd_);
461 } 461 }
462 #else 462 #else
463 filter_average_block2d_8_c(src_ptr, src_stride, HFilter, VFilter, 463 filter_average_block2d_8_c(src_ptr, src_stride, HFilter, VFilter,
464 dst_ptr, dst_stride, output_width, 464 dst_ptr, dst_stride, output_width,
465 output_height); 465 output_height);
466 #endif 466 #endif
467 } 467 }
468 468
469 void wrapper_filter_block2d_8_c(const uint8_t *src_ptr, 469 void wrapper_filter_block2d_8_c(const uint8_t *src_ptr,
470 const unsigned int src_stride, 470 const unsigned int src_stride,
471 const int16_t *HFilter, 471 const int16_t *HFilter,
472 const int16_t *VFilter, 472 const int16_t *VFilter,
473 uint8_t *dst_ptr, 473 uint8_t *dst_ptr,
474 unsigned int dst_stride, 474 unsigned int dst_stride,
475 unsigned int output_width, 475 unsigned int output_width,
476 unsigned int output_height) { 476 unsigned int output_height) {
477 #if CONFIG_VP9_HIGHBITDEPTH 477 #if CONFIG_VP9_HIGHBITDEPTH
478 if (UUT_->use_high_bd_ == 0) { 478 if (UUT_->use_highbd_ == 0) {
479 filter_block2d_8_c(src_ptr, src_stride, HFilter, VFilter, 479 filter_block2d_8_c(src_ptr, src_stride, HFilter, VFilter,
480 dst_ptr, dst_stride, output_width, output_height); 480 dst_ptr, dst_stride, output_width, output_height);
481 } else { 481 } else {
482 high_filter_block2d_8_c(CONVERT_TO_SHORTPTR(src_ptr), src_stride, 482 highbd_filter_block2d_8_c(CONVERT_TO_SHORTPTR(src_ptr), src_stride,
483 HFilter, VFilter, 483 HFilter, VFilter,
484 CONVERT_TO_SHORTPTR(dst_ptr), dst_stride, 484 CONVERT_TO_SHORTPTR(dst_ptr), dst_stride,
485 output_width, output_height, UUT_->use_high_bd_); 485 output_width, output_height, UUT_->use_highbd_);
486 } 486 }
487 #else 487 #else
488 filter_block2d_8_c(src_ptr, src_stride, HFilter, VFilter, 488 filter_block2d_8_c(src_ptr, src_stride, HFilter, VFilter,
489 dst_ptr, dst_stride, output_width, output_height); 489 dst_ptr, dst_stride, output_width, output_height);
490 #endif 490 #endif
491 } 491 }
492 492
493 const ConvolveFunctions* UUT_; 493 const ConvolveFunctions* UUT_;
494 static uint8_t* input_; 494 static uint8_t* input_;
495 static uint8_t* output_; 495 static uint8_t* output_;
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
591 591
592 const int16_t kInvalidFilter[8] = { 0 }; 592 const int16_t kInvalidFilter[8] = { 0 };
593 593
594 TEST_P(ConvolveTest, MatchesReferenceSubpixelFilter) { 594 TEST_P(ConvolveTest, MatchesReferenceSubpixelFilter) {
595 uint8_t* const in = input(); 595 uint8_t* const in = input();
596 uint8_t* const out = output(); 596 uint8_t* const out = output();
597 #if CONFIG_VP9_HIGHBITDEPTH 597 #if CONFIG_VP9_HIGHBITDEPTH
598 uint8_t ref8[kOutputStride * kMaxDimension]; 598 uint8_t ref8[kOutputStride * kMaxDimension];
599 uint16_t ref16[kOutputStride * kMaxDimension]; 599 uint16_t ref16[kOutputStride * kMaxDimension];
600 uint8_t* ref; 600 uint8_t* ref;
601 if (UUT_->use_high_bd_ == 0) { 601 if (UUT_->use_highbd_ == 0) {
602 ref = ref8; 602 ref = ref8;
603 } else { 603 } else {
604 ref = CONVERT_TO_BYTEPTR(ref16); 604 ref = CONVERT_TO_BYTEPTR(ref16);
605 } 605 }
606 #else 606 #else
607 uint8_t ref[kOutputStride * kMaxDimension]; 607 uint8_t ref[kOutputStride * kMaxDimension];
608 #endif 608 #endif
609 609
610 for (int filter_bank = 0; filter_bank < kNumFilterBanks; ++filter_bank) { 610 for (int filter_bank = 0; filter_bank < kNumFilterBanks; ++filter_bank) {
611 const InterpKernel *filters = 611 const InterpKernel *filters =
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
650 } 650 }
651 } 651 }
652 652
653 TEST_P(ConvolveTest, MatchesReferenceAveragingSubpixelFilter) { 653 TEST_P(ConvolveTest, MatchesReferenceAveragingSubpixelFilter) {
654 uint8_t* const in = input(); 654 uint8_t* const in = input();
655 uint8_t* const out = output(); 655 uint8_t* const out = output();
656 #if CONFIG_VP9_HIGHBITDEPTH 656 #if CONFIG_VP9_HIGHBITDEPTH
657 uint8_t ref8[kOutputStride * kMaxDimension]; 657 uint8_t ref8[kOutputStride * kMaxDimension];
658 uint16_t ref16[kOutputStride * kMaxDimension]; 658 uint16_t ref16[kOutputStride * kMaxDimension];
659 uint8_t* ref; 659 uint8_t* ref;
660 if (UUT_->use_high_bd_ == 0) { 660 if (UUT_->use_highbd_ == 0) {
661 ref = ref8; 661 ref = ref8;
662 } else { 662 } else {
663 ref = CONVERT_TO_BYTEPTR(ref16); 663 ref = CONVERT_TO_BYTEPTR(ref16);
664 } 664 }
665 #else 665 #else
666 uint8_t ref[kOutputStride * kMaxDimension]; 666 uint8_t ref[kOutputStride * kMaxDimension];
667 #endif 667 #endif
668 668
669 // Populate ref and out with some random data 669 // Populate ref and out with some random data
670 ::libvpx_test::ACMRandom prng; 670 ::libvpx_test::ACMRandom prng;
671 for (int y = 0; y < Height(); ++y) { 671 for (int y = 0; y < Height(); ++y) {
672 for (int x = 0; x < Width(); ++x) { 672 for (int x = 0; x < Width(); ++x) {
673 uint16_t r; 673 uint16_t r;
674 #if CONFIG_VP9_HIGHBITDEPTH 674 #if CONFIG_VP9_HIGHBITDEPTH
675 if (UUT_->use_high_bd_ == 0 || UUT_->use_high_bd_ == 8) { 675 if (UUT_->use_highbd_ == 0 || UUT_->use_highbd_ == 8) {
676 r = prng.Rand8Extremes(); 676 r = prng.Rand8Extremes();
677 } else { 677 } else {
678 r = prng.Rand16() & mask_; 678 r = prng.Rand16() & mask_;
679 } 679 }
680 #else 680 #else
681 r = prng.Rand8Extremes(); 681 r = prng.Rand8Extremes();
682 #endif 682 #endif
683 683
684 assign_val(out, y * kOutputStride + x, r); 684 assign_val(out, y * kOutputStride + x, r);
685 assign_val(ref, y * kOutputStride + x, r); 685 assign_val(ref, y * kOutputStride + x, r);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 } 729 }
730 } 730 }
731 731
732 TEST_P(ConvolveTest, FilterExtremes) { 732 TEST_P(ConvolveTest, FilterExtremes) {
733 uint8_t *const in = input(); 733 uint8_t *const in = input();
734 uint8_t *const out = output(); 734 uint8_t *const out = output();
735 #if CONFIG_VP9_HIGHBITDEPTH 735 #if CONFIG_VP9_HIGHBITDEPTH
736 uint8_t ref8[kOutputStride * kMaxDimension]; 736 uint8_t ref8[kOutputStride * kMaxDimension];
737 uint16_t ref16[kOutputStride * kMaxDimension]; 737 uint16_t ref16[kOutputStride * kMaxDimension];
738 uint8_t *ref; 738 uint8_t *ref;
739 if (UUT_->use_high_bd_ == 0) { 739 if (UUT_->use_highbd_ == 0) {
740 ref = ref8; 740 ref = ref8;
741 } else { 741 } else {
742 ref = CONVERT_TO_BYTEPTR(ref16); 742 ref = CONVERT_TO_BYTEPTR(ref16);
743 } 743 }
744 #else 744 #else
745 uint8_t ref[kOutputStride * kMaxDimension]; 745 uint8_t ref[kOutputStride * kMaxDimension];
746 #endif 746 #endif
747 747
748 // Populate ref and out with some random data 748 // Populate ref and out with some random data
749 ::libvpx_test::ACMRandom prng; 749 ::libvpx_test::ACMRandom prng;
750 for (int y = 0; y < Height(); ++y) { 750 for (int y = 0; y < Height(); ++y) {
751 for (int x = 0; x < Width(); ++x) { 751 for (int x = 0; x < Width(); ++x) {
752 uint16_t r; 752 uint16_t r;
753 #if CONFIG_VP9_HIGHBITDEPTH 753 #if CONFIG_VP9_HIGHBITDEPTH
754 if (UUT_->use_high_bd_ == 0 || UUT_->use_high_bd_ == 8) { 754 if (UUT_->use_highbd_ == 0 || UUT_->use_highbd_ == 8) {
755 r = prng.Rand8Extremes(); 755 r = prng.Rand8Extremes();
756 } else { 756 } else {
757 r = prng.Rand16() & mask_; 757 r = prng.Rand16() & mask_;
758 } 758 }
759 #else 759 #else
760 r = prng.Rand8Extremes(); 760 r = prng.Rand8Extremes();
761 #endif 761 #endif
762 assign_val(out, y * kOutputStride + x, r); 762 assign_val(out, y * kOutputStride + x, r);
763 assign_val(ref, y * kOutputStride + x, r); 763 assign_val(ref, y * kOutputStride + x, r);
764 } 764 }
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
971 971
972 #if CONFIG_VP9_HIGHBITDEPTH 972 #if CONFIG_VP9_HIGHBITDEPTH
973 #if HAVE_SSE2 && ARCH_X86_64 973 #if HAVE_SSE2 && ARCH_X86_64
974 void wrap_convolve8_horiz_sse2_8(const uint8_t *src, ptrdiff_t src_stride, 974 void wrap_convolve8_horiz_sse2_8(const uint8_t *src, ptrdiff_t src_stride,
975 uint8_t *dst, ptrdiff_t dst_stride, 975 uint8_t *dst, ptrdiff_t dst_stride,
976 const int16_t *filter_x, 976 const int16_t *filter_x,
977 int filter_x_stride, 977 int filter_x_stride,
978 const int16_t *filter_y, 978 const int16_t *filter_y,
979 int filter_y_stride, 979 int filter_y_stride,
980 int w, int h) { 980 int w, int h) {
981 vp9_high_convolve8_horiz_sse2(src, src_stride, dst, dst_stride, filter_x, 981 vp9_highbd_convolve8_horiz_sse2(src, src_stride, dst, dst_stride, filter_x,
982 filter_x_stride, filter_y, filter_y_stride, 982 filter_x_stride, filter_y, filter_y_stride,
983 w, h, 8); 983 w, h, 8);
984 } 984 }
985 985
986 void wrap_convolve8_avg_horiz_sse2_8(const uint8_t *src, ptrdiff_t src_stride, 986 void wrap_convolve8_avg_horiz_sse2_8(const uint8_t *src, ptrdiff_t src_stride,
987 uint8_t *dst, ptrdiff_t dst_stride, 987 uint8_t *dst, ptrdiff_t dst_stride,
988 const int16_t *filter_x, 988 const int16_t *filter_x,
989 int filter_x_stride, 989 int filter_x_stride,
990 const int16_t *filter_y, 990 const int16_t *filter_y,
991 int filter_y_stride, 991 int filter_y_stride,
992 int w, int h) { 992 int w, int h) {
993 vp9_high_convolve8_avg_horiz_sse2(src, src_stride, dst, dst_stride, filter_x, 993 vp9_highbd_convolve8_avg_horiz_sse2(src, src_stride, dst, dst_stride,
994 filter_x_stride, filter_y, filter_y_stride, w, h, 8); 994 filter_x, filter_x_stride,
995 filter_y, filter_y_stride, w, h, 8);
995 } 996 }
996 997
997 void wrap_convolve8_vert_sse2_8(const uint8_t *src, ptrdiff_t src_stride, 998 void wrap_convolve8_vert_sse2_8(const uint8_t *src, ptrdiff_t src_stride,
998 uint8_t *dst, ptrdiff_t dst_stride, 999 uint8_t *dst, ptrdiff_t dst_stride,
999 const int16_t *filter_x, 1000 const int16_t *filter_x,
1000 int filter_x_stride, 1001 int filter_x_stride,
1001 const int16_t *filter_y, 1002 const int16_t *filter_y,
1002 int filter_y_stride, 1003 int filter_y_stride,
1003 int w, int h) { 1004 int w, int h) {
1004 vp9_high_convolve8_vert_sse2(src, src_stride, dst, dst_stride, filter_x, 1005 vp9_highbd_convolve8_vert_sse2(src, src_stride, dst, dst_stride,
1005 filter_x_stride, filter_y, filter_y_stride, w, h, 8); 1006 filter_x, filter_x_stride,
1007 filter_y, filter_y_stride, w, h, 8);
1006 } 1008 }
1007 1009
1008 void wrap_convolve8_avg_vert_sse2_8(const uint8_t *src, ptrdiff_t src_stride, 1010 void wrap_convolve8_avg_vert_sse2_8(const uint8_t *src, ptrdiff_t src_stride,
1009 uint8_t *dst, ptrdiff_t dst_stride, 1011 uint8_t *dst, ptrdiff_t dst_stride,
1010 const int16_t *filter_x, 1012 const int16_t *filter_x,
1011 int filter_x_stride, 1013 int filter_x_stride,
1012 const int16_t *filter_y, 1014 const int16_t *filter_y,
1013 int filter_y_stride, 1015 int filter_y_stride,
1014 int w, int h) { 1016 int w, int h) {
1015 vp9_high_convolve8_avg_vert_sse2(src, src_stride, dst, dst_stride, filter_x, 1017 vp9_highbd_convolve8_avg_vert_sse2(src, src_stride, dst, dst_stride,
1016 filter_x_stride, filter_y, filter_y_stride, 1018 filter_x, filter_x_stride,
1017 w, h, 8); 1019 filter_y, filter_y_stride, w, h, 8);
1018 } 1020 }
1019 1021
1020 void wrap_convolve8_sse2_8(const uint8_t *src, ptrdiff_t src_stride, 1022 void wrap_convolve8_sse2_8(const uint8_t *src, ptrdiff_t src_stride,
1021 uint8_t *dst, ptrdiff_t dst_stride, 1023 uint8_t *dst, ptrdiff_t dst_stride,
1022 const int16_t *filter_x, 1024 const int16_t *filter_x,
1023 int filter_x_stride, 1025 int filter_x_stride,
1024 const int16_t *filter_y, 1026 const int16_t *filter_y,
1025 int filter_y_stride, 1027 int filter_y_stride,
1026 int w, int h) { 1028 int w, int h) {
1027 vp9_high_convolve8_sse2(src, src_stride, dst, dst_stride, filter_x, 1029 vp9_highbd_convolve8_sse2(src, src_stride, dst, dst_stride,
1028 filter_x_stride, filter_y, filter_y_stride, w, h, 8); 1030 filter_x, filter_x_stride,
1031 filter_y, filter_y_stride, w, h, 8);
1029 } 1032 }
1030 1033
1031 void wrap_convolve8_avg_sse2_8(const uint8_t *src, ptrdiff_t src_stride, 1034 void wrap_convolve8_avg_sse2_8(const uint8_t *src, ptrdiff_t src_stride,
1032 uint8_t *dst, ptrdiff_t dst_stride, 1035 uint8_t *dst, ptrdiff_t dst_stride,
1033 const int16_t *filter_x, 1036 const int16_t *filter_x,
1034 int filter_x_stride, 1037 int filter_x_stride,
1035 const int16_t *filter_y, 1038 const int16_t *filter_y,
1036 int filter_y_stride, 1039 int filter_y_stride,
1037 int w, int h) { 1040 int w, int h) {
1038 vp9_high_convolve8_avg_sse2(src, src_stride, dst, dst_stride, filter_x, 1041 vp9_highbd_convolve8_avg_sse2(src, src_stride, dst, dst_stride,
1039 filter_x_stride, filter_y, filter_y_stride, w, h, 8); 1042 filter_x, filter_x_stride,
1043 filter_y, filter_y_stride, w, h, 8);
1040 } 1044 }
1041 1045
1042 void wrap_convolve8_horiz_sse2_10(const uint8_t *src, ptrdiff_t src_stride, 1046 void wrap_convolve8_horiz_sse2_10(const uint8_t *src, ptrdiff_t src_stride,
1043 uint8_t *dst, ptrdiff_t dst_stride, 1047 uint8_t *dst, ptrdiff_t dst_stride,
1044 const int16_t *filter_x, 1048 const int16_t *filter_x,
1045 int filter_x_stride, 1049 int filter_x_stride,
1046 const int16_t *filter_y, 1050 const int16_t *filter_y,
1047 int filter_y_stride, 1051 int filter_y_stride,
1048 int w, int h) { 1052 int w, int h) {
1049 vp9_high_convolve8_horiz_sse2(src, src_stride, dst, dst_stride, filter_x, 1053 vp9_highbd_convolve8_horiz_sse2(src, src_stride, dst, dst_stride,
1050 filter_x_stride, filter_y, filter_y_stride, w, h, 10); 1054 filter_x, filter_x_stride,
1055 filter_y, filter_y_stride, w, h, 10);
1051 } 1056 }
1052 1057
1053 void wrap_convolve8_avg_horiz_sse2_10(const uint8_t *src, ptrdiff_t src_stride, 1058 void wrap_convolve8_avg_horiz_sse2_10(const uint8_t *src, ptrdiff_t src_stride,
1054 uint8_t *dst, ptrdiff_t dst_stride, 1059 uint8_t *dst, ptrdiff_t dst_stride,
1055 const int16_t *filter_x, 1060 const int16_t *filter_x,
1056 int filter_x_stride, 1061 int filter_x_stride,
1057 const int16_t *filter_y, 1062 const int16_t *filter_y,
1058 int filter_y_stride, 1063 int filter_y_stride,
1059 int w, int h) { 1064 int w, int h) {
1060 vp9_high_convolve8_avg_horiz_sse2(src, src_stride, dst, dst_stride, filter_x, 1065 vp9_highbd_convolve8_avg_horiz_sse2(src, src_stride, dst, dst_stride,
1061 filter_x_stride, filter_y, filter_y_stride, w, h, 10); 1066 filter_x, filter_x_stride,
1067 filter_y, filter_y_stride, w, h, 10);
1062 } 1068 }
1063 1069
1064 void wrap_convolve8_vert_sse2_10(const uint8_t *src, ptrdiff_t src_stride, 1070 void wrap_convolve8_vert_sse2_10(const uint8_t *src, ptrdiff_t src_stride,
1065 uint8_t *dst, ptrdiff_t dst_stride, 1071 uint8_t *dst, ptrdiff_t dst_stride,
1066 const int16_t *filter_x, 1072 const int16_t *filter_x,
1067 int filter_x_stride, 1073 int filter_x_stride,
1068 const int16_t *filter_y, 1074 const int16_t *filter_y,
1069 int filter_y_stride, 1075 int filter_y_stride,
1070 int w, int h) { 1076 int w, int h) {
1071 vp9_high_convolve8_vert_sse2(src, src_stride, dst, dst_stride, filter_x, 1077 vp9_highbd_convolve8_vert_sse2(src, src_stride, dst, dst_stride,
1072 filter_x_stride, filter_y, filter_y_stride, w, h, 10); 1078 filter_x, filter_x_stride,
1079 filter_y, filter_y_stride, w, h, 10);
1073 } 1080 }
1074 1081
1075 void wrap_convolve8_avg_vert_sse2_10(const uint8_t *src, ptrdiff_t src_stride, 1082 void wrap_convolve8_avg_vert_sse2_10(const uint8_t *src, ptrdiff_t src_stride,
1076 uint8_t *dst, ptrdiff_t dst_stride, 1083 uint8_t *dst, ptrdiff_t dst_stride,
1077 const int16_t *filter_x, 1084 const int16_t *filter_x,
1078 int filter_x_stride, 1085 int filter_x_stride,
1079 const int16_t *filter_y, 1086 const int16_t *filter_y,
1080 int filter_y_stride, 1087 int filter_y_stride,
1081 int w, int h) { 1088 int w, int h) {
1082 vp9_high_convolve8_avg_vert_sse2(src, src_stride, dst, dst_stride, filter_x, 1089 vp9_highbd_convolve8_avg_vert_sse2(src, src_stride, dst, dst_stride,
1083 filter_x_stride, filter_y, filter_y_stride, w, h, 10); 1090 filter_x, filter_x_stride,
1091 filter_y, filter_y_stride, w, h, 10);
1084 } 1092 }
1085 1093
1086 void wrap_convolve8_sse2_10(const uint8_t *src, ptrdiff_t src_stride, 1094 void wrap_convolve8_sse2_10(const uint8_t *src, ptrdiff_t src_stride,
1087 uint8_t *dst, ptrdiff_t dst_stride, 1095 uint8_t *dst, ptrdiff_t dst_stride,
1088 const int16_t *filter_x, 1096 const int16_t *filter_x,
1089 int filter_x_stride, 1097 int filter_x_stride,
1090 const int16_t *filter_y, 1098 const int16_t *filter_y,
1091 int filter_y_stride, 1099 int filter_y_stride,
1092 int w, int h) { 1100 int w, int h) {
1093 vp9_high_convolve8_sse2(src, src_stride, dst, dst_stride, filter_x, 1101 vp9_highbd_convolve8_sse2(src, src_stride, dst, dst_stride,
1094 filter_x_stride, filter_y, filter_y_stride, w, h, 10); 1102 filter_x, filter_x_stride,
1103 filter_y, filter_y_stride, w, h, 10);
1095 } 1104 }
1096 1105
1097 void wrap_convolve8_avg_sse2_10(const uint8_t *src, ptrdiff_t src_stride, 1106 void wrap_convolve8_avg_sse2_10(const uint8_t *src, ptrdiff_t src_stride,
1098 uint8_t *dst, ptrdiff_t dst_stride, 1107 uint8_t *dst, ptrdiff_t dst_stride,
1099 const int16_t *filter_x, 1108 const int16_t *filter_x,
1100 int filter_x_stride, 1109 int filter_x_stride,
1101 const int16_t *filter_y, 1110 const int16_t *filter_y,
1102 int filter_y_stride, 1111 int filter_y_stride,
1103 int w, int h) { 1112 int w, int h) {
1104 vp9_high_convolve8_avg_sse2(src, src_stride, dst, dst_stride, filter_x, 1113 vp9_highbd_convolve8_avg_sse2(src, src_stride, dst, dst_stride,
1105 filter_x_stride, filter_y, filter_y_stride, 1114 filter_x, filter_x_stride,
1106 w, h, 10); 1115 filter_y, filter_y_stride, w, h, 10);
1107 } 1116 }
1108 1117
1109 void wrap_convolve8_horiz_sse2_12(const uint8_t *src, ptrdiff_t src_stride, 1118 void wrap_convolve8_horiz_sse2_12(const uint8_t *src, ptrdiff_t src_stride,
1110 uint8_t *dst, ptrdiff_t dst_stride, 1119 uint8_t *dst, ptrdiff_t dst_stride,
1111 const int16_t *filter_x, 1120 const int16_t *filter_x,
1112 int filter_x_stride, 1121 int filter_x_stride,
1113 const int16_t *filter_y, 1122 const int16_t *filter_y,
1114 int filter_y_stride, 1123 int filter_y_stride,
1115 int w, int h) { 1124 int w, int h) {
1116 vp9_high_convolve8_horiz_sse2(src, src_stride, dst, dst_stride, filter_x, 1125 vp9_highbd_convolve8_horiz_sse2(src, src_stride, dst, dst_stride,
1117 filter_x_stride, filter_y, filter_y_stride, 1126 filter_x, filter_x_stride,
1118 w, h, 12); 1127 filter_y, filter_y_stride, w, h, 12);
1119 } 1128 }
1120 1129
1121 void wrap_convolve8_avg_horiz_sse2_12(const uint8_t *src, ptrdiff_t src_stride, 1130 void wrap_convolve8_avg_horiz_sse2_12(const uint8_t *src, ptrdiff_t src_stride,
1122 uint8_t *dst, ptrdiff_t dst_stride, 1131 uint8_t *dst, ptrdiff_t dst_stride,
1123 const int16_t *filter_x, 1132 const int16_t *filter_x,
1124 int filter_x_stride, 1133 int filter_x_stride,
1125 const int16_t *filter_y, 1134 const int16_t *filter_y,
1126 int filter_y_stride, 1135 int filter_y_stride,
1127 int w, int h) { 1136 int w, int h) {
1128 vp9_high_convolve8_avg_horiz_sse2(src, src_stride, dst, dst_stride, filter_x, 1137 vp9_highbd_convolve8_avg_horiz_sse2(src, src_stride, dst, dst_stride,
1129 filter_x_stride, filter_y, filter_y_stride, 1138 filter_x, filter_x_stride,
1130 w, h, 12); 1139 filter_y, filter_y_stride, w, h, 12);
1131 } 1140 }
1132 1141
1133 void wrap_convolve8_vert_sse2_12(const uint8_t *src, ptrdiff_t src_stride, 1142 void wrap_convolve8_vert_sse2_12(const uint8_t *src, ptrdiff_t src_stride,
1134 uint8_t *dst, ptrdiff_t dst_stride, 1143 uint8_t *dst, ptrdiff_t dst_stride,
1135 const int16_t *filter_x, 1144 const int16_t *filter_x,
1136 int filter_x_stride, 1145 int filter_x_stride,
1137 const int16_t *filter_y, 1146 const int16_t *filter_y,
1138 int filter_y_stride, 1147 int filter_y_stride,
1139 int w, int h) { 1148 int w, int h) {
1140 vp9_high_convolve8_vert_sse2(src, src_stride, dst, dst_stride, filter_x, 1149 vp9_highbd_convolve8_vert_sse2(src, src_stride, dst, dst_stride,
1141 filter_x_stride, filter_y, filter_y_stride, 1150 filter_x, filter_x_stride,
1142 w, h, 12); 1151 filter_y, filter_y_stride, w, h, 12);
1143 } 1152 }
1144 1153
1145 void wrap_convolve8_avg_vert_sse2_12(const uint8_t *src, ptrdiff_t src_stride, 1154 void wrap_convolve8_avg_vert_sse2_12(const uint8_t *src, ptrdiff_t src_stride,
1146 uint8_t *dst, ptrdiff_t dst_stride, 1155 uint8_t *dst, ptrdiff_t dst_stride,
1147 const int16_t *filter_x, 1156 const int16_t *filter_x,
1148 int filter_x_stride, 1157 int filter_x_stride,
1149 const int16_t *filter_y, 1158 const int16_t *filter_y,
1150 int filter_y_stride, 1159 int filter_y_stride,
1151 int w, int h) { 1160 int w, int h) {
1152 vp9_high_convolve8_avg_vert_sse2(src, src_stride, dst, dst_stride, filter_x, 1161 vp9_highbd_convolve8_avg_vert_sse2(src, src_stride, dst, dst_stride,
1153 filter_x_stride, filter_y, filter_y_stride, w , h, 12); 1162 filter_x, filter_x_stride,
1163 filter_y, filter_y_stride, w, h, 12);
1154 } 1164 }
1155 1165
1156 void wrap_convolve8_sse2_12(const uint8_t *src, ptrdiff_t src_stride, 1166 void wrap_convolve8_sse2_12(const uint8_t *src, ptrdiff_t src_stride,
1157 uint8_t *dst, ptrdiff_t dst_stride, 1167 uint8_t *dst, ptrdiff_t dst_stride,
1158 const int16_t *filter_x, 1168 const int16_t *filter_x,
1159 int filter_x_stride, 1169 int filter_x_stride,
1160 const int16_t *filter_y, 1170 const int16_t *filter_y,
1161 int filter_y_stride, 1171 int filter_y_stride,
1162 int w, int h) { 1172 int w, int h) {
1163 vp9_high_convolve8_sse2(src, src_stride, dst, dst_stride, filter_x, 1173 vp9_highbd_convolve8_sse2(src, src_stride, dst, dst_stride,
1164 filter_x_stride, filter_y, filter_y_stride, w, h, 12); 1174 filter_x, filter_x_stride,
1175 filter_y, filter_y_stride, w, h, 12);
1165 } 1176 }
1166 1177
1167 void wrap_convolve8_avg_sse2_12(const uint8_t *src, ptrdiff_t src_stride, 1178 void wrap_convolve8_avg_sse2_12(const uint8_t *src, ptrdiff_t src_stride,
1168 uint8_t *dst, ptrdiff_t dst_stride, 1179 uint8_t *dst, ptrdiff_t dst_stride,
1169 const int16_t *filter_x, 1180 const int16_t *filter_x,
1170 int filter_x_stride, 1181 int filter_x_stride,
1171 const int16_t *filter_y, 1182 const int16_t *filter_y,
1172 int filter_y_stride, 1183 int filter_y_stride,
1173 int w, int h) { 1184 int w, int h) {
1174 vp9_high_convolve8_avg_sse2(src, src_stride, dst, dst_stride, filter_x, 1185 vp9_highbd_convolve8_avg_sse2(src, src_stride, dst, dst_stride,
1175 filter_x_stride, filter_y, filter_y_stride, w, h, 12); 1186 filter_x, filter_x_stride,
1187 filter_y, filter_y_stride, w, h, 12);
1176 } 1188 }
1177 #endif // HAVE_SSE2 && ARCH_X86_64 1189 #endif // HAVE_SSE2 && ARCH_X86_64
1178 1190
1179 void wrap_convolve8_horiz_c_8(const uint8_t *src, ptrdiff_t src_stride, 1191 void wrap_convolve8_horiz_c_8(const uint8_t *src, ptrdiff_t src_stride,
1180 uint8_t *dst, ptrdiff_t dst_stride, 1192 uint8_t *dst, ptrdiff_t dst_stride,
1181 const int16_t *filter_x, 1193 const int16_t *filter_x,
1182 int filter_x_stride, 1194 int filter_x_stride,
1183 const int16_t *filter_y, 1195 const int16_t *filter_y,
1184 int filter_y_stride, 1196 int filter_y_stride,
1185 int w, int h) { 1197 int w, int h) {
1186 vp9_high_convolve8_horiz_c(src, src_stride, dst, dst_stride, filter_x, 1198 vp9_highbd_convolve8_horiz_c(src, src_stride, dst, dst_stride,
1187 filter_x_stride, filter_y, filter_y_stride, w, h, 8 ); 1199 filter_x, filter_x_stride,
1200 filter_y, filter_y_stride, w, h, 8);
1188 } 1201 }
1189 1202
1190 void wrap_convolve8_avg_horiz_c_8(const uint8_t *src, ptrdiff_t src_stride, 1203 void wrap_convolve8_avg_horiz_c_8(const uint8_t *src, ptrdiff_t src_stride,
1191 uint8_t *dst, ptrdiff_t dst_stride, 1204 uint8_t *dst, ptrdiff_t dst_stride,
1192 const int16_t *filter_x, 1205 const int16_t *filter_x,
1193 int filter_x_stride, 1206 int filter_x_stride,
1194 const int16_t *filter_y, 1207 const int16_t *filter_y,
1195 int filter_y_stride, 1208 int filter_y_stride,
1196 int w, int h) { 1209 int w, int h) {
1197 vp9_high_convolve8_avg_horiz_c(src, src_stride, dst, dst_stride, filter_x, 1210 vp9_highbd_convolve8_avg_horiz_c(src, src_stride, dst, dst_stride,
1198 filter_x_stride, filter_y, filter_y_stride, w, h, 8); 1211 filter_x, filter_x_stride,
1212 filter_y, filter_y_stride, w, h, 8);
1199 } 1213 }
1200 1214
1201 void wrap_convolve8_vert_c_8(const uint8_t *src, ptrdiff_t src_stride, 1215 void wrap_convolve8_vert_c_8(const uint8_t *src, ptrdiff_t src_stride,
1202 uint8_t *dst, ptrdiff_t dst_stride, 1216 uint8_t *dst, ptrdiff_t dst_stride,
1203 const int16_t *filter_x, 1217 const int16_t *filter_x,
1204 int filter_x_stride, 1218 int filter_x_stride,
1205 const int16_t *filter_y, 1219 const int16_t *filter_y,
1206 int filter_y_stride, 1220 int filter_y_stride,
1207 int w, int h) { 1221 int w, int h) {
1208 vp9_high_convolve8_vert_c(src, src_stride, dst, dst_stride, filter_x, 1222 vp9_highbd_convolve8_vert_c(src, src_stride, dst, dst_stride,
1209 filter_x_stride, filter_y, filter_y_stride, w, h, 8) ; 1223 filter_x, filter_x_stride,
1224 filter_y, filter_y_stride, w, h, 8);
1210 } 1225 }
1211 1226
1212 void wrap_convolve8_avg_vert_c_8(const uint8_t *src, ptrdiff_t src_stride, 1227 void wrap_convolve8_avg_vert_c_8(const uint8_t *src, ptrdiff_t src_stride,
1213 uint8_t *dst, ptrdiff_t dst_stride, 1228 uint8_t *dst, ptrdiff_t dst_stride,
1214 const int16_t *filter_x, 1229 const int16_t *filter_x,
1215 int filter_x_stride, 1230 int filter_x_stride,
1216 const int16_t *filter_y, 1231 const int16_t *filter_y,
1217 int filter_y_stride, 1232 int filter_y_stride,
1218 int w, int h) { 1233 int w, int h) {
1219 vp9_high_convolve8_avg_vert_c(src, src_stride, dst, dst_stride, filter_x, 1234 vp9_highbd_convolve8_avg_vert_c(src, src_stride, dst, dst_stride,
1220 filter_x_stride, filter_y, filter_y_stride, w, h , 8); 1235 filter_x, filter_x_stride,
1236 filter_y, filter_y_stride, w, h, 8);
1221 } 1237 }
1222 1238
1223 void wrap_convolve8_c_8(const uint8_t *src, ptrdiff_t src_stride, 1239 void wrap_convolve8_c_8(const uint8_t *src, ptrdiff_t src_stride,
1224 uint8_t *dst, ptrdiff_t dst_stride, 1240 uint8_t *dst, ptrdiff_t dst_stride,
1225 const int16_t *filter_x, 1241 const int16_t *filter_x,
1226 int filter_x_stride, 1242 int filter_x_stride,
1227 const int16_t *filter_y, 1243 const int16_t *filter_y,
1228 int filter_y_stride, 1244 int filter_y_stride,
1229 int w, int h) { 1245 int w, int h) {
1230 vp9_high_convolve8_c(src, src_stride, dst, dst_stride, filter_x, 1246 vp9_highbd_convolve8_c(src, src_stride, dst, dst_stride,
1231 filter_x_stride, filter_y, filter_y_stride, w, h, 8); 1247 filter_x, filter_x_stride,
1248 filter_y, filter_y_stride, w, h, 8);
1232 } 1249 }
1233 1250
1234 void wrap_convolve8_avg_c_8(const uint8_t *src, ptrdiff_t src_stride, 1251 void wrap_convolve8_avg_c_8(const uint8_t *src, ptrdiff_t src_stride,
1235 uint8_t *dst, ptrdiff_t dst_stride, 1252 uint8_t *dst, ptrdiff_t dst_stride,
1236 const int16_t *filter_x, 1253 const int16_t *filter_x,
1237 int filter_x_stride, 1254 int filter_x_stride,
1238 const int16_t *filter_y, 1255 const int16_t *filter_y,
1239 int filter_y_stride, 1256 int filter_y_stride,
1240 int w, int h) { 1257 int w, int h) {
1241 vp9_high_convolve8_avg_c(src, src_stride, dst, dst_stride, filter_x, 1258 vp9_highbd_convolve8_avg_c(src, src_stride, dst, dst_stride,
1242 filter_x_stride, filter_y, filter_y_stride, 1259 filter_x, filter_x_stride,
1243 w, h, 8); 1260 filter_y, filter_y_stride, w, h, 8);
1244 } 1261 }
1245 1262
1246 void wrap_convolve8_horiz_c_10(const uint8_t *src, ptrdiff_t src_stride, 1263 void wrap_convolve8_horiz_c_10(const uint8_t *src, ptrdiff_t src_stride,
1247 uint8_t *dst, ptrdiff_t dst_stride, 1264 uint8_t *dst, ptrdiff_t dst_stride,
1248 const int16_t *filter_x, 1265 const int16_t *filter_x,
1249 int filter_x_stride, 1266 int filter_x_stride,
1250 const int16_t *filter_y, 1267 const int16_t *filter_y,
1251 int filter_y_stride, 1268 int filter_y_stride,
1252 int w, int h) { 1269 int w, int h) {
1253 vp9_high_convolve8_horiz_c(src, src_stride, dst, dst_stride, filter_x, 1270 vp9_highbd_convolve8_horiz_c(src, src_stride, dst, dst_stride,
1254 filter_x_stride, filter_y, filter_y_stride, w, h, 1 0); 1271 filter_x, filter_x_stride,
1272 filter_y, filter_y_stride, w, h, 10);
1255 } 1273 }
1256 1274
1257 void wrap_convolve8_avg_horiz_c_10(const uint8_t *src, ptrdiff_t src_stride, 1275 void wrap_convolve8_avg_horiz_c_10(const uint8_t *src, ptrdiff_t src_stride,
1258 uint8_t *dst, ptrdiff_t dst_stride, 1276 uint8_t *dst, ptrdiff_t dst_stride,
1259 const int16_t *filter_x, 1277 const int16_t *filter_x,
1260 int filter_x_stride, 1278 int filter_x_stride,
1261 const int16_t *filter_y, 1279 const int16_t *filter_y,
1262 int filter_y_stride, 1280 int filter_y_stride,
1263 int w, int h) { 1281 int w, int h) {
1264 vp9_high_convolve8_avg_horiz_c(src, src_stride, dst, dst_stride, filter_x, 1282 vp9_highbd_convolve8_avg_horiz_c(src, src_stride, dst, dst_stride,
1265 filter_x_stride, filter_y, filter_y_stride, 1283 filter_x, filter_x_stride,
1266 w, h, 10); 1284 filter_y, filter_y_stride, w, h, 10);
1267 } 1285 }
1268 1286
1269 void wrap_convolve8_vert_c_10(const uint8_t *src, ptrdiff_t src_stride, 1287 void wrap_convolve8_vert_c_10(const uint8_t *src, ptrdiff_t src_stride,
1270 uint8_t *dst, ptrdiff_t dst_stride, 1288 uint8_t *dst, ptrdiff_t dst_stride,
1271 const int16_t *filter_x, 1289 const int16_t *filter_x,
1272 int filter_x_stride, 1290 int filter_x_stride,
1273 const int16_t *filter_y, 1291 const int16_t *filter_y,
1274 int filter_y_stride, 1292 int filter_y_stride,
1275 int w, int h) { 1293 int w, int h) {
1276 vp9_high_convolve8_vert_c(src, src_stride, dst, dst_stride, filter_x, 1294 vp9_highbd_convolve8_vert_c(src, src_stride, dst, dst_stride,
1277 filter_x_stride, filter_y, filter_y_stride, w, h, 10 ); 1295 filter_x, filter_x_stride,
1296 filter_y, filter_y_stride, w, h, 10);
1278 } 1297 }
1279 1298
1280 void wrap_convolve8_avg_vert_c_10(const uint8_t *src, ptrdiff_t src_stride, 1299 void wrap_convolve8_avg_vert_c_10(const uint8_t *src, ptrdiff_t src_stride,
1281 uint8_t *dst, ptrdiff_t dst_stride, 1300 uint8_t *dst, ptrdiff_t dst_stride,
1282 const int16_t *filter_x, 1301 const int16_t *filter_x,
1283 int filter_x_stride, 1302 int filter_x_stride,
1284 const int16_t *filter_y, 1303 const int16_t *filter_y,
1285 int filter_y_stride, 1304 int filter_y_stride,
1286 int w, int h) { 1305 int w, int h) {
1287 vp9_high_convolve8_avg_vert_c(src, src_stride, dst, dst_stride, filter_x, 1306 vp9_highbd_convolve8_avg_vert_c(src, src_stride, dst, dst_stride,
1288 filter_x_stride, filter_y, filter_y_stride, w, h , 10); 1307 filter_x, filter_x_stride,
1308 filter_y, filter_y_stride, w, h, 10);
1289 } 1309 }
1290 1310
1291 void wrap_convolve8_c_10(const uint8_t *src, ptrdiff_t src_stride, 1311 void wrap_convolve8_c_10(const uint8_t *src, ptrdiff_t src_stride,
1292 uint8_t *dst, ptrdiff_t dst_stride, 1312 uint8_t *dst, ptrdiff_t dst_stride,
1293 const int16_t *filter_x, 1313 const int16_t *filter_x,
1294 int filter_x_stride, 1314 int filter_x_stride,
1295 const int16_t *filter_y, 1315 const int16_t *filter_y,
1296 int filter_y_stride, 1316 int filter_y_stride,
1297 int w, int h) { 1317 int w, int h) {
1298 vp9_high_convolve8_c(src, src_stride, dst, dst_stride, filter_x, 1318 vp9_highbd_convolve8_c(src, src_stride, dst, dst_stride,
1299 filter_x_stride, filter_y, filter_y_stride, w, h, 10); 1319 filter_x, filter_x_stride,
1320 filter_y, filter_y_stride, w, h, 10);
1300 } 1321 }
1301 1322
1302 void wrap_convolve8_avg_c_10(const uint8_t *src, ptrdiff_t src_stride, 1323 void wrap_convolve8_avg_c_10(const uint8_t *src, ptrdiff_t src_stride,
1303 uint8_t *dst, ptrdiff_t dst_stride, 1324 uint8_t *dst, ptrdiff_t dst_stride,
1304 const int16_t *filter_x, 1325 const int16_t *filter_x,
1305 int filter_x_stride, 1326 int filter_x_stride,
1306 const int16_t *filter_y, 1327 const int16_t *filter_y,
1307 int filter_y_stride, 1328 int filter_y_stride,
1308 int w, int h) { 1329 int w, int h) {
1309 vp9_high_convolve8_avg_c(src, src_stride, dst, dst_stride, filter_x, 1330 vp9_highbd_convolve8_avg_c(src, src_stride, dst, dst_stride,
1310 filter_x_stride, filter_y, filter_y_stride, w, h, 10) ; 1331 filter_x, filter_x_stride,
1332 filter_y, filter_y_stride, w, h, 10);
1311 } 1333 }
1312 1334
1313 void wrap_convolve8_horiz_c_12(const uint8_t *src, ptrdiff_t src_stride, 1335 void wrap_convolve8_horiz_c_12(const uint8_t *src, ptrdiff_t src_stride,
1314 uint8_t *dst, ptrdiff_t dst_stride, 1336 uint8_t *dst, ptrdiff_t dst_stride,
1315 const int16_t *filter_x, 1337 const int16_t *filter_x,
1316 int filter_x_stride, 1338 int filter_x_stride,
1317 const int16_t *filter_y, 1339 const int16_t *filter_y,
1318 int filter_y_stride, 1340 int filter_y_stride,
1319 int w, int h) { 1341 int w, int h) {
1320 vp9_high_convolve8_horiz_c(src, src_stride, dst, dst_stride, filter_x, 1342 vp9_highbd_convolve8_horiz_c(src, src_stride, dst, dst_stride,
1321 filter_x_stride, filter_y, filter_y_stride, 1343 filter_x, filter_x_stride,
1322 w, h, 12); 1344 filter_y, filter_y_stride, w, h, 12);
1323 } 1345 }
1324 1346
1325 void wrap_convolve8_avg_horiz_c_12(const uint8_t *src, ptrdiff_t src_stride, 1347 void wrap_convolve8_avg_horiz_c_12(const uint8_t *src, ptrdiff_t src_stride,
1326 uint8_t *dst, ptrdiff_t dst_stride, 1348 uint8_t *dst, ptrdiff_t dst_stride,
1327 const int16_t *filter_x, 1349 const int16_t *filter_x,
1328 int filter_x_stride, 1350 int filter_x_stride,
1329 const int16_t *filter_y, 1351 const int16_t *filter_y,
1330 int filter_y_stride, 1352 int filter_y_stride,
1331 int w, int h) { 1353 int w, int h) {
1332 vp9_high_convolve8_avg_horiz_c(src, src_stride, dst, dst_stride, filter_x, 1354 vp9_highbd_convolve8_avg_horiz_c(src, src_stride, dst, dst_stride,
1333 filter_x_stride, filter_y, filter_y_stride, 1355 filter_x, filter_x_stride,
1334 w, h, 12); 1356 filter_y, filter_y_stride, w, h, 12);
1335 } 1357 }
1336 1358
1337 void wrap_convolve8_vert_c_12(const uint8_t *src, ptrdiff_t src_stride, 1359 void wrap_convolve8_vert_c_12(const uint8_t *src, ptrdiff_t src_stride,
1338 uint8_t *dst, ptrdiff_t dst_stride, 1360 uint8_t *dst, ptrdiff_t dst_stride,
1339 const int16_t *filter_x, 1361 const int16_t *filter_x,
1340 int filter_x_stride, 1362 int filter_x_stride,
1341 const int16_t *filter_y, 1363 const int16_t *filter_y,
1342 int filter_y_stride, 1364 int filter_y_stride,
1343 int w, int h) { 1365 int w, int h) {
1344 vp9_high_convolve8_vert_c(src, src_stride, dst, dst_stride, filter_x, 1366 vp9_highbd_convolve8_vert_c(src, src_stride, dst, dst_stride,
1345 filter_x_stride, filter_y, filter_y_stride, 1367 filter_x, filter_x_stride,
1346 w, h, 12); 1368 filter_y, filter_y_stride, w, h, 12);
1347 } 1369 }
1348 1370
1349 void wrap_convolve8_avg_vert_c_12(const uint8_t *src, ptrdiff_t src_stride, 1371 void wrap_convolve8_avg_vert_c_12(const uint8_t *src, ptrdiff_t src_stride,
1350 uint8_t *dst, ptrdiff_t dst_stride, 1372 uint8_t *dst, ptrdiff_t dst_stride,
1351 const int16_t *filter_x, 1373 const int16_t *filter_x,
1352 int filter_x_stride, 1374 int filter_x_stride,
1353 const int16_t *filter_y, 1375 const int16_t *filter_y,
1354 int filter_y_stride, 1376 int filter_y_stride,
1355 int w, int h) { 1377 int w, int h) {
1356 vp9_high_convolve8_avg_vert_c(src, src_stride, dst, dst_stride, filter_x, 1378 vp9_highbd_convolve8_avg_vert_c(src, src_stride, dst, dst_stride,
1357 filter_x_stride, filter_y, filter_y_stride, 1379 filter_x, filter_x_stride,
1358 w, h, 12); 1380 filter_y, filter_y_stride, w, h, 12);
1359 } 1381 }
1360 1382
1361 void wrap_convolve8_c_12(const uint8_t *src, ptrdiff_t src_stride, 1383 void wrap_convolve8_c_12(const uint8_t *src, ptrdiff_t src_stride,
1362 uint8_t *dst, ptrdiff_t dst_stride, 1384 uint8_t *dst, ptrdiff_t dst_stride,
1363 const int16_t *filter_x, 1385 const int16_t *filter_x,
1364 int filter_x_stride, 1386 int filter_x_stride,
1365 const int16_t *filter_y, 1387 const int16_t *filter_y,
1366 int filter_y_stride, 1388 int filter_y_stride,
1367 int w, int h) { 1389 int w, int h) {
1368 vp9_high_convolve8_c(src, src_stride, dst, dst_stride, filter_x, 1390 vp9_highbd_convolve8_c(src, src_stride, dst, dst_stride,
1369 filter_x_stride, filter_y, filter_y_stride, 1391 filter_x, filter_x_stride,
1370 w, h, 12); 1392 filter_y, filter_y_stride, w, h, 12);
1371 } 1393 }
1372 1394
1373 void wrap_convolve8_avg_c_12(const uint8_t *src, ptrdiff_t src_stride, 1395 void wrap_convolve8_avg_c_12(const uint8_t *src, ptrdiff_t src_stride,
1374 uint8_t *dst, ptrdiff_t dst_stride, 1396 uint8_t *dst, ptrdiff_t dst_stride,
1375 const int16_t *filter_x, 1397 const int16_t *filter_x,
1376 int filter_x_stride, 1398 int filter_x_stride,
1377 const int16_t *filter_y, 1399 const int16_t *filter_y,
1378 int filter_y_stride, 1400 int filter_y_stride,
1379 int w, int h) { 1401 int w, int h) {
1380 vp9_high_convolve8_avg_c(src, src_stride, dst, dst_stride, filter_x, 1402 vp9_highbd_convolve8_avg_c(src, src_stride, dst, dst_stride,
1381 filter_x_stride, filter_y, filter_y_stride, 1403 filter_x, filter_x_stride,
1382 w, h, 12); 1404 filter_y, filter_y_stride, w, h, 12);
1383 } 1405 }
1384 1406
1385 const ConvolveFunctions convolve8_c( 1407 const ConvolveFunctions convolve8_c(
1386 wrap_convolve8_horiz_c_8, wrap_convolve8_avg_horiz_c_8, 1408 wrap_convolve8_horiz_c_8, wrap_convolve8_avg_horiz_c_8,
1387 wrap_convolve8_vert_c_8, wrap_convolve8_avg_vert_c_8, 1409 wrap_convolve8_vert_c_8, wrap_convolve8_avg_vert_c_8,
1388 wrap_convolve8_c_8, wrap_convolve8_avg_c_8, 8); 1410 wrap_convolve8_c_8, wrap_convolve8_avg_c_8, 8);
1389 INSTANTIATE_TEST_CASE_P(C_8, ConvolveTest, ::testing::Values( 1411 INSTANTIATE_TEST_CASE_P(C_8, ConvolveTest, ::testing::Values(
1390 make_tuple(4, 4, &convolve8_c), 1412 make_tuple(4, 4, &convolve8_c),
1391 make_tuple(8, 4, &convolve8_c), 1413 make_tuple(8, 4, &convolve8_c),
1392 make_tuple(4, 8, &convolve8_c), 1414 make_tuple(4, 8, &convolve8_c),
(...skipping 227 matching lines...) Expand 10 before | Expand all | Expand 10 after
1620 make_tuple(8, 16, &convolve8_dspr2), 1642 make_tuple(8, 16, &convolve8_dspr2),
1621 make_tuple(16, 16, &convolve8_dspr2), 1643 make_tuple(16, 16, &convolve8_dspr2),
1622 make_tuple(32, 16, &convolve8_dspr2), 1644 make_tuple(32, 16, &convolve8_dspr2),
1623 make_tuple(16, 32, &convolve8_dspr2), 1645 make_tuple(16, 32, &convolve8_dspr2),
1624 make_tuple(32, 32, &convolve8_dspr2), 1646 make_tuple(32, 32, &convolve8_dspr2),
1625 make_tuple(64, 32, &convolve8_dspr2), 1647 make_tuple(64, 32, &convolve8_dspr2),
1626 make_tuple(32, 64, &convolve8_dspr2), 1648 make_tuple(32, 64, &convolve8_dspr2),
1627 make_tuple(64, 64, &convolve8_dspr2))); 1649 make_tuple(64, 64, &convolve8_dspr2)));
1628 #endif 1650 #endif
1629 } // namespace 1651 } // namespace
OLDNEW
« no previous file with comments | « source/libvpx/examples/vpx_temporal_svc_encoder.c ('k') | source/libvpx/test/dct16x16_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698