1/*
2 Copyright (C) 1997-2021 Sam Lantinga <slouken@libsdl.org>
3
4 This software is provided 'as-is', without any express or implied
5 warranty. In no event will the authors be held liable for any damages
6 arising from the use of this software.
7
8 Permission is granted to anyone to use this software for any purpose,
9 including commercial applications, and to alter it and redistribute it
10 freely.
11*/
12#include <stdio.h>
13#include "SDL.h"
14
15static void
16print_devices(int iscapture)
17{
18 const char *typestr = ((iscapture) ? "capture" : "output");
19 int n = SDL_GetNumAudioDevices(iscapture);
20
21 SDL_Log("Found %d %s device%s:\n", n, typestr, n != 1 ? "s" : "");
22
23 if (n == -1)
24 SDL_Log(" Driver can't detect specific %s devices.\n\n", typestr);
25 else if (n == 0)
26 SDL_Log(" No %s devices found.\n\n", typestr);
27 else {
28 int i;
29 for (i = 0; i < n; i++) {
30 const char *name = SDL_GetAudioDeviceName(i, iscapture);
31 if (name != NULL)
32 SDL_Log(" %d: %s\n", i, name);
33 else
34 SDL_Log(" %d Error: %s\n", i, SDL_GetError());
35 }
36 SDL_Log("\n");
37 }
38}
39
40int
41main(int argc, char **argv)
42{
43 int n;
44
45 /* Enable standard application logging */
46 SDL_LogSetPriority(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO);
47
48 /* Load the SDL library */
49 if (SDL_Init(SDL_INIT_AUDIO) < 0) {
50 SDL_LogError(SDL_LOG_CATEGORY_APPLICATION, "Couldn't initialize SDL: %s\n", SDL_GetError());
51 return (1);
52 }
53
54 /* Print available audio drivers */
55 n = SDL_GetNumAudioDrivers();
56 if (n == 0) {
57 SDL_Log("No built-in audio drivers\n\n");
58 } else {
59 int i;
60 SDL_Log("Built-in audio drivers:\n");
61 for (i = 0; i < n; ++i) {
62 SDL_Log(" %d: %s\n", i, SDL_GetAudioDriver(i));
63 }
64 SDL_Log("Select a driver with the SDL_AUDIODRIVER environment variable.\n");
65 }
66
67 SDL_Log("Using audio driver: %s\n\n", SDL_GetCurrentAudioDriver());
68
69 print_devices(0);
70 print_devices(1);
71
72 SDL_Quit();
73 return 0;
74}
75