diff options
author | William Wilgus <me.theuser@yahoo.com> | 2019-01-04 02:01:18 -0600 |
---|---|---|
committer | Solomon Peachy <pizza@shaftnet.org> | 2021-04-23 14:23:04 +0000 |
commit | 14c6bb798d6bebc80f07e863236adbaf8d156a9c (patch) | |
tree | 551a4b641906c2626af844fa3239c1b2b1ff0ad3 /lib/rbcodec/codecs/libopus/silk/debug.c | |
parent | 75d93937965ec4df70d37df6d4feea04577c996b (diff) | |
download | rockbox-14c6bb798d6bebc80f07e863236adbaf8d156a9c.tar.gz rockbox-14c6bb798d6bebc80f07e863236adbaf8d156a9c.zip |
Sync opus codec to upstream git
Change-Id: I0cfcc0005c4ad7bfbb1aaf454188ce70fb043dc1
Diffstat (limited to 'lib/rbcodec/codecs/libopus/silk/debug.c')
-rw-r--r-- | lib/rbcodec/codecs/libopus/silk/debug.c | 170 |
1 files changed, 170 insertions, 0 deletions
diff --git a/lib/rbcodec/codecs/libopus/silk/debug.c b/lib/rbcodec/codecs/libopus/silk/debug.c new file mode 100644 index 0000000000..9253faf71b --- /dev/null +++ b/lib/rbcodec/codecs/libopus/silk/debug.c | |||
@@ -0,0 +1,170 @@ | |||
1 | /*********************************************************************** | ||
2 | Copyright (c) 2006-2011, Skype Limited. All rights reserved. | ||
3 | Redistribution and use in source and binary forms, with or without | ||
4 | modification, are permitted provided that the following conditions | ||
5 | are met: | ||
6 | - Redistributions of source code must retain the above copyright notice, | ||
7 | this list of conditions and the following disclaimer. | ||
8 | - Redistributions in binary form must reproduce the above copyright | ||
9 | notice, this list of conditions and the following disclaimer in the | ||
10 | documentation and/or other materials provided with the distribution. | ||
11 | - Neither the name of Internet Society, IETF or IETF Trust, nor the | ||
12 | names of specific contributors, may be used to endorse or promote | ||
13 | products derived from this software without specific prior written | ||
14 | permission. | ||
15 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
16 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
17 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE | ||
18 | ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE | ||
19 | LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR | ||
20 | CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF | ||
21 | SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | ||
22 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN | ||
23 | CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) | ||
24 | ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
25 | POSSIBILITY OF SUCH DAMAGE. | ||
26 | ***********************************************************************/ | ||
27 | |||
28 | #ifdef HAVE_CONFIG_H | ||
29 | #include "config.h" | ||
30 | #endif | ||
31 | |||
32 | #include "debug.h" | ||
33 | #include "SigProc_FIX.h" | ||
34 | |||
35 | #if SILK_TIC_TOC | ||
36 | |||
37 | #ifdef _WIN32 | ||
38 | |||
39 | #if (defined(_WIN32) || defined(_WINCE)) | ||
40 | #include <windows.h> /* timer */ | ||
41 | #else /* Linux or Mac*/ | ||
42 | #include <sys/time.h> | ||
43 | #endif | ||
44 | |||
45 | unsigned long silk_GetHighResolutionTime(void) /* O time in usec*/ | ||
46 | { | ||
47 | /* Returns a time counter in microsec */ | ||
48 | /* the resolution is platform dependent */ | ||
49 | /* but is typically 1.62 us resolution */ | ||
50 | LARGE_INTEGER lpPerformanceCount; | ||
51 | LARGE_INTEGER lpFrequency; | ||
52 | QueryPerformanceCounter(&lpPerformanceCount); | ||
53 | QueryPerformanceFrequency(&lpFrequency); | ||
54 | return (unsigned long)((1000000*(lpPerformanceCount.QuadPart)) / lpFrequency.QuadPart); | ||
55 | } | ||
56 | #else /* Linux or Mac*/ | ||
57 | unsigned long GetHighResolutionTime(void) /* O time in usec*/ | ||
58 | { | ||
59 | struct timeval tv; | ||
60 | gettimeofday(&tv, 0); | ||
61 | return((tv.tv_sec*1000000)+(tv.tv_usec)); | ||
62 | } | ||
63 | #endif | ||
64 | |||
65 | int silk_Timer_nTimers = 0; | ||
66 | int silk_Timer_depth_ctr = 0; | ||
67 | char silk_Timer_tags[silk_NUM_TIMERS_MAX][silk_NUM_TIMERS_MAX_TAG_LEN]; | ||
68 | #ifdef WIN32 | ||
69 | LARGE_INTEGER silk_Timer_start[silk_NUM_TIMERS_MAX]; | ||
70 | #else | ||
71 | unsigned long silk_Timer_start[silk_NUM_TIMERS_MAX]; | ||
72 | #endif | ||
73 | unsigned int silk_Timer_cnt[silk_NUM_TIMERS_MAX]; | ||
74 | opus_int64 silk_Timer_min[silk_NUM_TIMERS_MAX]; | ||
75 | opus_int64 silk_Timer_sum[silk_NUM_TIMERS_MAX]; | ||
76 | opus_int64 silk_Timer_max[silk_NUM_TIMERS_MAX]; | ||
77 | opus_int64 silk_Timer_depth[silk_NUM_TIMERS_MAX]; | ||
78 | |||
79 | #ifdef WIN32 | ||
80 | void silk_TimerSave(char *file_name) | ||
81 | { | ||
82 | if( silk_Timer_nTimers > 0 ) | ||
83 | { | ||
84 | int k; | ||
85 | FILE *fp; | ||
86 | LARGE_INTEGER lpFrequency; | ||
87 | LARGE_INTEGER lpPerformanceCount1, lpPerformanceCount2; | ||
88 | int del = 0x7FFFFFFF; | ||
89 | double avg, sum_avg; | ||
90 | /* estimate overhead of calling performance counters */ | ||
91 | for( k = 0; k < 1000; k++ ) { | ||
92 | QueryPerformanceCounter(&lpPerformanceCount1); | ||
93 | QueryPerformanceCounter(&lpPerformanceCount2); | ||
94 | lpPerformanceCount2.QuadPart -= lpPerformanceCount1.QuadPart; | ||
95 | if( (int)lpPerformanceCount2.LowPart < del ) | ||
96 | del = lpPerformanceCount2.LowPart; | ||
97 | } | ||
98 | QueryPerformanceFrequency(&lpFrequency); | ||
99 | /* print results to file */ | ||
100 | sum_avg = 0.0f; | ||
101 | for( k = 0; k < silk_Timer_nTimers; k++ ) { | ||
102 | if (silk_Timer_depth[k] == 0) { | ||
103 | sum_avg += (1e6 * silk_Timer_sum[k] / silk_Timer_cnt[k] - del) / lpFrequency.QuadPart * silk_Timer_cnt[k]; | ||
104 | } | ||
105 | } | ||
106 | fp = fopen(file_name, "w"); | ||
107 | fprintf(fp, " min avg %% max count\n"); | ||
108 | for( k = 0; k < silk_Timer_nTimers; k++ ) { | ||
109 | if (silk_Timer_depth[k] == 0) { | ||
110 | fprintf(fp, "%-28s", silk_Timer_tags[k]); | ||
111 | } else if (silk_Timer_depth[k] == 1) { | ||
112 | fprintf(fp, " %-27s", silk_Timer_tags[k]); | ||
113 | } else if (silk_Timer_depth[k] == 2) { | ||
114 | fprintf(fp, " %-26s", silk_Timer_tags[k]); | ||
115 | } else if (silk_Timer_depth[k] == 3) { | ||
116 | fprintf(fp, " %-25s", silk_Timer_tags[k]); | ||
117 | } else { | ||
118 | fprintf(fp, " %-24s", silk_Timer_tags[k]); | ||
119 | } | ||
120 | avg = (1e6 * silk_Timer_sum[k] / silk_Timer_cnt[k] - del) / lpFrequency.QuadPart; | ||
121 | fprintf(fp, "%8.2f", (1e6 * (silk_max_64(silk_Timer_min[k] - del, 0))) / lpFrequency.QuadPart); | ||
122 | fprintf(fp, "%12.2f %6.2f", avg, 100.0 * avg / sum_avg * silk_Timer_cnt[k]); | ||
123 | fprintf(fp, "%12.2f", (1e6 * (silk_max_64(silk_Timer_max[k] - del, 0))) / lpFrequency.QuadPart); | ||
124 | fprintf(fp, "%10d\n", silk_Timer_cnt[k]); | ||
125 | } | ||
126 | fprintf(fp, " microseconds\n"); | ||
127 | fclose(fp); | ||
128 | } | ||
129 | } | ||
130 | #else | ||
131 | void silk_TimerSave(char *file_name) | ||
132 | { | ||
133 | if( silk_Timer_nTimers > 0 ) | ||
134 | { | ||
135 | int k; | ||
136 | FILE *fp; | ||
137 | /* print results to file */ | ||
138 | fp = fopen(file_name, "w"); | ||
139 | fprintf(fp, " min avg max count\n"); | ||
140 | for( k = 0; k < silk_Timer_nTimers; k++ ) | ||
141 | { | ||
142 | if (silk_Timer_depth[k] == 0) { | ||
143 | fprintf(fp, "%-28s", silk_Timer_tags[k]); | ||
144 | } else if (silk_Timer_depth[k] == 1) { | ||
145 | fprintf(fp, " %-27s", silk_Timer_tags[k]); | ||
146 | } else if (silk_Timer_depth[k] == 2) { | ||
147 | fprintf(fp, " %-26s", silk_Timer_tags[k]); | ||
148 | } else if (silk_Timer_depth[k] == 3) { | ||
149 | fprintf(fp, " %-25s", silk_Timer_tags[k]); | ||
150 | } else { | ||
151 | fprintf(fp, " %-24s", silk_Timer_tags[k]); | ||
152 | } | ||
153 | fprintf(fp, "%d ", silk_Timer_min[k]); | ||
154 | fprintf(fp, "%f ", (double)silk_Timer_sum[k] / (double)silk_Timer_cnt[k]); | ||
155 | fprintf(fp, "%d ", silk_Timer_max[k]); | ||
156 | fprintf(fp, "%10d\n", silk_Timer_cnt[k]); | ||
157 | } | ||
158 | fprintf(fp, " microseconds\n"); | ||
159 | fclose(fp); | ||
160 | } | ||
161 | } | ||
162 | #endif | ||
163 | |||
164 | #endif /* SILK_TIC_TOC */ | ||
165 | |||
166 | #if SILK_DEBUG | ||
167 | FILE *silk_debug_store_fp[ silk_NUM_STORES_MAX ]; | ||
168 | int silk_debug_store_count = 0; | ||
169 | #endif /* SILK_DEBUG */ | ||
170 | |||