1 /* 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. 3 * 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 6 * tree. An additional intellectual property rights grant can be found 7 * in the file PATENTS. All contributing project authors may 8 * be found in the AUTHORS file in the root of the source tree. 9 */ 10 11 #ifndef UNIT_TEST_UNIT_TEST_H_ // NOLINT 12 #define UNIT_TEST_UNIT_TEST_H_ 13 14 #ifdef WIN32 15 #include <windows.h> 16 #else 17 #include <sys/time.h> 18 #include <sys/resource.h> 19 #endif 20 21 #include <gtest/gtest.h> 22 23 #include "libyuv/basic_types.h" 24 Abs(int v)25static __inline int Abs(int v) { 26 return v >= 0 ? v : -v; 27 } 28 29 #define align_buffer_page_end(var, size) \ 30 uint8* var; \ 31 uint8* var##_mem; \ 32 var##_mem = reinterpret_cast<uint8*>(malloc(((size) + 4095) & ~4095)); \ 33 var = var##_mem + (-(size) & 4095); 34 35 #define free_aligned_buffer_page_end(var) \ 36 free(var##_mem); \ 37 var = 0; 38 39 #ifdef WIN32 get_time()40static inline double get_time() { 41 LARGE_INTEGER t, f; 42 QueryPerformanceCounter(&t); 43 QueryPerformanceFrequency(&f); 44 return static_cast<double>(t.QuadPart) / static_cast<double>(f.QuadPart); 45 } 46 47 #define random rand 48 #define srandom srand 49 #else get_time()50static inline double get_time() { 51 struct timeval t; 52 struct timezone tzp; 53 gettimeofday(&t, &tzp); 54 return t.tv_sec + t.tv_usec * 1e-6; 55 } 56 #endif 57 MemRandomize(uint8 * dst,int len)58static inline void MemRandomize(uint8* dst, int len) { 59 int i; 60 for (i = 0; i < len - 1; i += 2) { 61 *reinterpret_cast<uint16*>(dst) = random(); 62 dst += 2; 63 } 64 for (; i < len; ++i) { 65 *dst++ = random(); 66 } 67 } 68 69 class libyuvTest : public ::testing::Test { 70 protected: 71 libyuvTest(); 72 73 const int rotate_max_w_; 74 const int rotate_max_h_; 75 76 int benchmark_iterations_; // Default 1. Use 1000 for benchmarking. 77 int benchmark_width_; // Default 1280. Use 640 for benchmarking VGA. 78 int benchmark_height_; // Default 720. Use 360 for benchmarking VGA. 79 int benchmark_pixels_div256_; // Total pixels to benchmark / 256. 80 int benchmark_pixels_div1280_; // Total pixels to benchmark / 1280. 81 }; 82 83 #endif // UNIT_TEST_UNIT_TEST_H_ NOLINT 84