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 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 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 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 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 69class 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