testaudiocapture: use capture device buffer queueing, for better test coverage.

Ryan C. Gordon 2016-08-06 02:48:00 -04:00
parent 7315390171
commit a15b974044
1 changed files with 13 additions and 8 deletions

View File

@ -21,12 +21,6 @@ static SDL_AudioSpec spec;
static SDL_AudioDeviceID devid_in = 0; static SDL_AudioDeviceID devid_in = 0;
static SDL_AudioDeviceID devid_out = 0; static SDL_AudioDeviceID devid_out = 0;
void SDLCALL
capture_callback(void *arg, Uint8 * stream, int len)
{
SDL_QueueAudio(devid_out, stream, len);
}
static void static void
loop() loop()
{ {
@ -76,6 +70,18 @@ loop()
#endif #endif
exit(0); exit(0);
} }
/* Note that it would be easier to just have a one-line function that
calls SDL_QueueAudio() as a capture device callback, but we're
trying to test the API, so we use SDL_DequeueAudio() here. */
while (SDL_TRUE) {
Uint8 buf[1024];
const Uint32 br = SDL_DequeueAudio(devid_in, buf, sizeof (buf));
SDL_QueueAudio(devid_out, buf, br);
if (br < sizeof (buf)) {
break;
}
}
} }
int int
@ -113,7 +119,7 @@ main(int argc, char **argv)
spec.format = AUDIO_F32SYS; spec.format = AUDIO_F32SYS;
spec.channels = 1; spec.channels = 1;
spec.samples = 1024; spec.samples = 1024;
spec.callback = capture_callback; spec.callback = NULL;
SDL_Log("Opening capture device %s%s%s...\n", SDL_Log("Opening capture device %s%s%s...\n",
devname ? "'" : "", devname ? "'" : "",
@ -128,7 +134,6 @@ main(int argc, char **argv)
} }
SDL_Log("Opening default playback device...\n"); SDL_Log("Opening default playback device...\n");
spec.callback = NULL;
devid_out = SDL_OpenAudioDevice(NULL, SDL_FALSE, &spec, &spec, 0); devid_out = SDL_OpenAudioDevice(NULL, SDL_FALSE, &spec, &spec, 0);
if (!devid_out) { if (!devid_out) {
SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't open an audio device for capture: %s!\n", SDL_GetError()); SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't open an audio device for capture: %s!\n", SDL_GetError());