media/libyuv/unit_test/unit_test.h

Thu, 22 Jan 2015 13:21:57 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 22 Jan 2015 13:21:57 +0100
branch
TOR_BUG_9701
changeset 15
b8a032363ba2
permissions
-rw-r--r--

Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6

     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  */
    11 #ifndef UNIT_TEST_UNIT_TEST_H_  // NOLINT
    12 #define UNIT_TEST_UNIT_TEST_H_
    14 #ifdef WIN32
    15 #include <windows.h>
    16 #else
    17 #include <sys/time.h>
    18 #include <sys/resource.h>
    19 #endif
    21 #include <gtest/gtest.h>
    23 #include "libyuv/basic_types.h"
    25 static __inline int Abs(int v) {
    26   return v >= 0 ? v : -v;
    27 }
    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);
    35 #define free_aligned_buffer_page_end(var) \
    36   free(var##_mem);  \
    37   var = 0;
    39 #ifdef WIN32
    40 static 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 }
    47 #define random rand
    48 #define srandom srand
    49 #else
    50 static 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
    58 static 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 }
    69 class libyuvTest : public ::testing::Test {
    70  protected:
    71   libyuvTest();
    73   const int rotate_max_w_;
    74   const int rotate_max_h_;
    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 };
    83 #endif  // UNIT_TEST_UNIT_TEST_H_  NOLINT

mercurial