Coverage Report

Created: 2023-03-26 07:21

/src/libvpx/vpx_ports/vpx_timer.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 *  Copyright (c) 2010 The WebM 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 VPX_VPX_PORTS_VPX_TIMER_H_
12
#define VPX_VPX_PORTS_VPX_TIMER_H_
13
14
#include "./vpx_config.h"
15
16
#include "vpx/vpx_integer.h"
17
18
#if CONFIG_OS_SUPPORT
19
20
#if defined(_WIN32)
21
/*
22
 * Win32 specific includes
23
 */
24
#undef NOMINMAX
25
#define NOMINMAX
26
#ifndef WIN32_LEAN_AND_MEAN
27
#define WIN32_LEAN_AND_MEAN
28
#endif
29
#include <windows.h>
30
#else
31
/*
32
 * POSIX specific includes
33
 */
34
#include <sys/time.h>
35
36
/* timersub is not provided by msys at this time. */
37
#ifndef timersub
38
#define timersub(a, b, result)                       \
39
  do {                                               \
40
    (result)->tv_sec = (a)->tv_sec - (b)->tv_sec;    \
41
    (result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
42
    if ((result)->tv_usec < 0) {                     \
43
      --(result)->tv_sec;                            \
44
      (result)->tv_usec += 1000000;                  \
45
    }                                                \
46
  } while (0)
47
#endif
48
#endif
49
50
struct vpx_usec_timer {
51
#if defined(_WIN32)
52
  LARGE_INTEGER begin, end;
53
#else
54
  struct timeval begin, end;
55
#endif
56
};
57
58
0
static INLINE void vpx_usec_timer_start(struct vpx_usec_timer *t) {
59
0
#if defined(_WIN32)
60
0
  QueryPerformanceCounter(&t->begin);
61
0
#else
62
0
  gettimeofday(&t->begin, NULL);
63
0
#endif
64
0
}
Unexecuted instantiation: vp9_decoder.c:vpx_usec_timer_start
Unexecuted instantiation: onyxd_if.c:vpx_usec_timer_start
Unexecuted instantiation: threading.c:vpx_usec_timer_start
65
66
0
static INLINE void vpx_usec_timer_mark(struct vpx_usec_timer *t) {
67
0
#if defined(_WIN32)
68
0
  QueryPerformanceCounter(&t->end);
69
0
#else
70
0
  gettimeofday(&t->end, NULL);
71
0
#endif
72
0
}
Unexecuted instantiation: vp9_decoder.c:vpx_usec_timer_mark
Unexecuted instantiation: onyxd_if.c:vpx_usec_timer_mark
Unexecuted instantiation: threading.c:vpx_usec_timer_mark
73
74
0
static INLINE int64_t vpx_usec_timer_elapsed(struct vpx_usec_timer *t) {
75
0
#if defined(_WIN32)
76
0
  LARGE_INTEGER freq, diff;
77
0
78
0
  diff.QuadPart = t->end.QuadPart - t->begin.QuadPart;
79
0
80
0
  QueryPerformanceFrequency(&freq);
81
0
  return diff.QuadPart * 1000000 / freq.QuadPart;
82
0
#else
83
0
  struct timeval diff;
84
0
85
0
  timersub(&t->end, &t->begin, &diff);
86
0
  return (int64_t)diff.tv_sec * 1000000 + diff.tv_usec;
87
0
#endif
88
0
}
Unexecuted instantiation: vp9_decoder.c:vpx_usec_timer_elapsed
Unexecuted instantiation: onyxd_if.c:vpx_usec_timer_elapsed
Unexecuted instantiation: threading.c:vpx_usec_timer_elapsed
89
90
#else /* CONFIG_OS_SUPPORT = 0*/
91
92
/* Empty timer functions if CONFIG_OS_SUPPORT = 0 */
93
#ifndef timersub
94
#define timersub(a, b, result)
95
#endif
96
97
struct vpx_usec_timer {
98
  void *dummy;
99
};
100
101
static INLINE void vpx_usec_timer_start(struct vpx_usec_timer *t) {}
102
103
static INLINE void vpx_usec_timer_mark(struct vpx_usec_timer *t) {}
104
105
static INLINE int vpx_usec_timer_elapsed(struct vpx_usec_timer *t) { return 0; }
106
107
#endif /* CONFIG_OS_SUPPORT */
108
109
#endif  // VPX_VPX_PORTS_VPX_TIMER_H_