17cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde/* 233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp * Copyright 2011 The LibYuv Project Authors. All rights reserved. 37cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * 47cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * Use of this source code is governed by a BSD-style license 57cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * that can be found in the LICENSE file in the root of the source 67cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * tree. An additional intellectual property rights grant can be found 77cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * in the file PATENTS. All contributing project authors may 87cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde * be found in the AUTHORS file in the root of the source tree. 97cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde */ 107cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 1133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifndef UNIT_TEST_UNIT_TEST_H_ 1233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define UNIT_TEST_UNIT_TEST_H_ 137cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 147cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde#include <gtest/gtest.h> 157cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 1633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define align_buffer_16(var, size) \ 1733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* var; \ 1833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* var##_mem; \ 1933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp var##_mem = reinterpret_cast<uint8*>(malloc((size) + 15)); \ 2033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp var = reinterpret_cast<uint8*> \ 2133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp ((reinterpret_cast<intptr_t>(var##_mem) + 15) & ~15); 2233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define free_aligned_buffer_16(var) \ 2433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp free(var##_mem); \ 2533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp var = 0; 2633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 2833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define align_buffer_page_end(var, size) \ 2933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* var; \ 3033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp uint8* var##_mem; \ 3133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp var##_mem = reinterpret_cast<uint8*>(malloc(((size) + 4095) & ~4095)); \ 3233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp var = var##_mem + (-(size) & 4095); 3333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 3433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define free_aligned_buffer_page_end(var) \ 3533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp free(var##_mem); \ 3633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp var = 0; 3733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 3833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#ifdef WIN32 3933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#include <windows.h> 4033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampstatic inline double get_time() { 4133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp LARGE_INTEGER t, f; 4233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp QueryPerformanceCounter(&t); 4333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp QueryPerformanceFrequency(&f); 4433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp return static_cast<double>(t.QuadPart) / static_cast<double>(f.QuadPart); 4533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp} 4633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 4733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define random rand 4833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#define srandom srand 4933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#else 5033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 5133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#include <sys/time.h> 5233cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#include <sys/resource.h> 5333cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 5433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkampstatic inline double get_time() { 5533cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp struct timeval t; 5633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp struct timezone tzp; 5733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp gettimeofday(&t, &tzp); 5833cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp return t.tv_sec + t.tv_usec * 1e-6; 5933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp} 6033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif 6133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp 627cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Bordeclass libyuvTest : public ::testing::Test { 637cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde protected: 647cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde libyuvTest(); 657cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 6633cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const int rotate_max_w_; 6733cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const int rotate_max_h_; 687cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 6933cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp int benchmark_iterations_; 7033cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const int benchmark_width_; 7133cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp const int benchmark_height_; 727cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde}; 737cd8149e2cbad8b1ff6d481c37a4775d3c8cf2faShri Borde 7433cfdeb7b267ab635413797fffb046b73272f7ecHendrik Dahlkamp#endif // UNIT_TEST_UNIT_TEST_H_ 75