123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- /*
- * Copyright (c) 2016, Alliance for Open Media. All rights reserved
- *
- * This source code is subject to the terms of the BSD 2 Clause License and
- * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
- * was not distributed with this source code in the LICENSE file, you can
- * obtain it at www.aomedia.org/license/software. If the Alliance for Open
- * Media Patent License 1.0 was not distributed with this source code in the
- * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
- */
- #ifndef AOM_AOM_PORTS_AOM_TIMER_H_
- #define AOM_AOM_PORTS_AOM_TIMER_H_
- #include "config/aom_config.h"
- #if CONFIG_OS_SUPPORT
- #include <stddef.h>
- #include <stdint.h>
- #if defined(_WIN32)
- /*
- * Win32 specific includes
- */
- #undef NOMINMAX
- #define NOMINMAX
- #undef WIN32_LEAN_AND_MEAN
- #define WIN32_LEAN_AND_MEAN
- #include <windows.h>
- #else
- /*
- * POSIX specific includes
- */
- #include <sys/time.h>
- /* timersub is not provided by msys at this time. */
- #ifndef timersub
- #define timersub(a, b, result) \
- do { \
- (result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
- (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
- if ((result)->tv_usec < 0) { \
- --(result)->tv_sec; \
- (result)->tv_usec += 1000000; \
- } \
- } while (0)
- #endif
- #endif
- struct aom_usec_timer {
- #if defined(_WIN32)
- LARGE_INTEGER begin, end;
- #else
- struct timeval begin, end;
- #endif
- };
- static INLINE void aom_usec_timer_start(struct aom_usec_timer *t) {
- #if defined(_WIN32)
- QueryPerformanceCounter(&t->begin);
- #else
- gettimeofday(&t->begin, NULL);
- #endif
- }
- static INLINE void aom_usec_timer_mark(struct aom_usec_timer *t) {
- #if defined(_WIN32)
- QueryPerformanceCounter(&t->end);
- #else
- gettimeofday(&t->end, NULL);
- #endif
- }
- static INLINE int64_t aom_usec_timer_elapsed(struct aom_usec_timer *t) {
- #if defined(_WIN32)
- LARGE_INTEGER freq, diff;
- diff.QuadPart = t->end.QuadPart - t->begin.QuadPart;
- QueryPerformanceFrequency(&freq);
- return diff.QuadPart * 1000000 / freq.QuadPart;
- #else
- struct timeval diff;
- timersub(&t->end, &t->begin, &diff);
- return ((int64_t)diff.tv_sec) * 1000000 + diff.tv_usec;
- #endif
- }
- #else /* CONFIG_OS_SUPPORT = 0*/
- /* Empty timer functions if CONFIG_OS_SUPPORT = 0 */
- #ifndef timersub
- #define timersub(a, b, result)
- #endif
- struct aom_usec_timer {
- void *dummy;
- };
- static INLINE void aom_usec_timer_start(struct aom_usec_timer *t) { (void)t; }
- static INLINE void aom_usec_timer_mark(struct aom_usec_timer *t) { (void)t; }
- static INLINE int aom_usec_timer_elapsed(struct aom_usec_timer *t) {
- (void)t;
- return 0;
- }
- #endif /* CONFIG_OS_SUPPORT */
- #endif // AOM_AOM_PORTS_AOM_TIMER_H_
|