• Home
  • Raw
  • Download

Lines Matching full:bat

25 #include "bat-signal.h"
36 static float sumaudio(struct bat *bat, short int *buffer, int frames) in sumaudio() argument
44 for (n = 0; n < bat->channels; n++) { in sumaudio()
50 sum = sum / bat->channels; in sumaudio()
55 static void play_and_listen(struct bat *bat, void *buffer, int frames) in play_and_listen() argument
63 int num = bat->latency.number; in play_and_listen()
65 averageinput = (int) (sumaudio(bat, buffer, frames) / frames); in play_and_listen()
69 if (averageinput > bat->latency.threshold) { in play_and_listen()
74 if (*input++ > bat->latency.threshold) in play_and_listen()
76 *input += bat->channels; in play_and_listen()
81 bat->latency.samples += n; in play_and_listen()
84 if (bat->latency.samples > frames) { in play_and_listen()
85 bat->latency.result[num - 1] = in play_and_listen()
86 (float) bat->latency.samples * 1000 / bat->rate; in play_and_listen()
87 fprintf(bat->log, in play_and_listen()
90 (int) bat->latency.result[num - 1]); in play_and_listen()
93 if (bat->latency.result[n] > max) in play_and_listen()
94 max = bat->latency.result[n]; in play_and_listen()
95 if (bat->latency.result[n] < min) in play_and_listen()
96 min = bat->latency.result[n]; in play_and_listen()
97 sum += bat->latency.result[n]; in play_and_listen()
102 bat->latency.state = in play_and_listen()
104 bat->latency.is_capturing = false; in play_and_listen()
109 bat->latency.final_result = in play_and_listen()
111 fprintf(bat->log, in play_and_listen()
113 bat->latency.final_result); in play_and_listen()
115 bat->latency.state = in play_and_listen()
117 bat->latency.is_capturing = false; in play_and_listen()
122 bat->latency.state = LATENCY_STATE_WAITING; in play_and_listen()
124 bat->latency.number++; in play_and_listen()
128 bat->latency.state = LATENCY_STATE_WAITING; in play_and_listen()
132 bat->latency.samples += frames; in play_and_listen()
136 if ((unsigned int)bat->latency.samples > bat->rate) { in play_and_listen()
137 bat->latency.error++; in play_and_listen()
139 if (bat->latency.error > LATENCY_TEST_NUMBER) { in play_and_listen()
140 fprintf(bat->err, in play_and_listen()
142 fprintf(bat->err, in play_and_listen()
144 bat->latency.state = in play_and_listen()
146 bat->latency.is_capturing = false; in play_and_listen()
151 bat->latency.state = LATENCY_STATE_WAITING; in play_and_listen()
158 static void calculate_threshold(struct bat *bat) in calculate_threshold() argument
165 average = bat->latency.sum / bat->latency.samples / 32767.0f; in calculate_threshold()
167 bat->latency.threshold = (int) (powf(10.0f, reference / 20.0f) in calculate_threshold()
171 void roundtrip_latency_init(struct bat *bat) in roundtrip_latency_init() argument
173 bat->latency.number = 1; in roundtrip_latency_init()
174 bat->latency.state = LATENCY_STATE_MEASURE_FOR_1_SECOND; in roundtrip_latency_init()
175 bat->latency.final_result = 0; in roundtrip_latency_init()
176 bat->latency.samples = 0; in roundtrip_latency_init()
177 bat->latency.sum = 0; in roundtrip_latency_init()
178 bat->latency.threshold = 0; in roundtrip_latency_init()
179 bat->latency.is_capturing = false; in roundtrip_latency_init()
180 bat->latency.is_playing = false; in roundtrip_latency_init()
181 bat->latency.error = 0; in roundtrip_latency_init()
182 bat->latency.xrun_error = false; in roundtrip_latency_init()
183 bat->frames = LATENCY_TEST_TIME_LIMIT * bat->rate; in roundtrip_latency_init()
184 bat->periods_played = 0; in roundtrip_latency_init()
187 int handleinput(struct bat *bat, void *buffer, int frames) in handleinput() argument
189 switch (bat->latency.state) { in handleinput()
192 bat->latency.sum += sumaudio(bat, buffer, frames); in handleinput()
193 bat->latency.samples += frames; in handleinput()
196 if ((unsigned int)bat->latency.samples >= bat->rate) { in handleinput()
197 calculate_threshold(bat); in handleinput()
198 bat->latency.state = LATENCY_STATE_PLAY_AND_LISTEN; in handleinput()
199 bat->latency.samples = 0; in handleinput()
200 bat->latency.sum = 0; in handleinput()
206 play_and_listen(bat, buffer, frames); in handleinput()
211 bat->latency.samples += frames; in handleinput()
213 if ((unsigned int)bat->latency.samples > bat->rate) { in handleinput()
215 bat->latency.samples = 0; in handleinput()
216 bat->latency.state = LATENCY_STATE_MEASURE_FOR_1_SECOND; in handleinput()
227 int handleoutput(struct bat *bat, void *buffer, int bytes, int frames) in handleoutput() argument
232 if (bat->periods_played * frames > 2 * bat->rate in handleoutput()
233 && bat->latency.is_capturing == false) in handleoutput()
234 return bat->latency.state; in handleoutput()
236 if (bat->latency.state == LATENCY_STATE_PLAY_AND_LISTEN) in handleoutput()
237 err = generate_sine_wave(bat, frames, buffer); in handleoutput()