9 int main(int argc
, char* argv
[])
11 const ALchar
*szNames
= NULL
;
14 ///////////////////////////////////////////////////////////////////
15 // TEST : Enumerate the playback devices
17 printf("--------------------------------------\n");
18 printf("TESTING ALC_ENUMERATION_EXT EXTENSION\n\n");
19 if (alcIsExtensionPresent(NULL
, "ALC_ENUMERATION_EXT") == AL_TRUE
)
21 printf("ALC_ENUMERATION_EXT Device List:-\n\n");
23 szNames
= alcGetString(NULL
, ALC_DEVICE_SPECIFIER
);
24 if (strlen(szNames
) == 0)
25 printf("NO DEVICES FOUND\n");
28 while (szNames
&& *szNames
)
30 printf("%s ", szNames
);
31 // Try opening each device
32 ALCdevice
*pDevice
= alcOpenDevice(szNames
);
35 printf("- Opened Successfully\n");
36 alcCloseDevice(pDevice
);
40 printf("- FAILED to open\n");
43 szNames
+= (strlen(szNames
) + 1);
49 printf("!!!ERROR!!! : ALC_ENUMERATION_EXT NOT FOUND!\n");
52 printf("--------------------------------------\n\n");
53 ///////////////////////////////////////////////////////////////////
56 ///////////////////////////////////////////////////////////////////
57 // TEST : Get Default Playback Device
59 printf("--------------------------------------\n");
60 printf("TESTING GET DEFAULT PLAYBACK DEVICE\n\n");
61 szNames
= alcGetString(NULL
, ALC_DEFAULT_DEVICE_SPECIFIER
);
62 if (szNames
&& strlen(szNames
))
64 printf("\nDEFAULT DEVICE is %s\n", szNames
);
68 if (waveOutGetNumDevs())
70 printf("\n!!!ERROR!!! DEFAULT DEVICE NOT FOUND!\n");
75 printf("\nDEFAULT DEVICE NOT FOUND!\n");
78 printf("--------------------------------------\n\n");
79 ///////////////////////////////////////////////////////////////////
82 ///////////////////////////////////////////////////////////////////
83 // TEST : Enumerate all the capture devices
85 printf("--------------------------------------\n");
86 printf("TESTING CAPTURE ENUMERATION EXTENSION\n\n");
87 if (alcIsExtensionPresent(NULL
, "ALC_ENUMERATION_EXT") == AL_TRUE
)
89 printf("ALC_ENUMERATION_EXT Capture Device List:-\n\n");
91 szNames
= alcGetString(NULL
, ALC_CAPTURE_DEVICE_SPECIFIER
);
92 if (strlen(szNames
) == 0)
93 printf("NO DEVICES FOUND\n");
96 while (szNames
&& *szNames
)
98 printf("%s ", szNames
);
99 // Try opening each device
100 ALCdevice
*pDevice
= alcCaptureOpenDevice(szNames
, 11025, AL_FORMAT_STEREO16
, 8192);
103 printf("- Opened Successfully\n");
104 alcCaptureCloseDevice(pDevice
);
108 printf("- FAILED to open\n");
111 szNames
+= (strlen(szNames
) + 1);
117 printf("!!!ERROR!!! : ALC_ENUMERATION_EXT NOT FOUND!\n");
120 printf("--------------------------------------\n\n");
121 ///////////////////////////////////////////////////////////////////
124 ///////////////////////////////////////////////////////////////////
125 // TEST : Get Default Capture Device
127 printf("--------------------------------------\n");
128 printf("TESTING DEFAULT CAPTURE DEVICE\n\n");
129 szNames
= alcGetString(NULL
, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER
);
130 if (szNames
&& strlen(szNames
))
132 printf("\nDEFAULT CAPTURE DEVICE IS %s\n", szNames
);
136 if (waveInGetNumDevs())
138 printf("\n!!!ERROR!!! DEFAULT CAPTURE DEVICE NOT FOUND!\n");
143 printf("\nDEFAULT CAPTURE DEVICE NOT FOUND!\n");
146 printf("--------------------------------------\n\n");
147 ///////////////////////////////////////////////////////////////////
150 ///////////////////////////////////////////////////////////////////
151 // TEST : Enumerate *all* the playback devices
153 printf("--------------------------------------\n");
154 printf("TESTING PLAYBACK ENUMERATE ALL EXTENSION\n\n");
155 if (alcIsExtensionPresent(NULL
, "ALC_ENUMERATE_ALL_EXT") == AL_TRUE
)
157 printf("ALC_ENUMERATE_ALL_EXT DEVICE LIST:-\n\n");
159 szNames
= alcGetString(NULL
, ALC_ALL_DEVICES_SPECIFIER
);
160 if (strlen(szNames
) == 0)
161 printf("NO DEVICES FOUND\n");
164 while (szNames
&& *szNames
)
166 printf("%s ", szNames
);
168 // Try opening each device
169 ALCdevice
*pDevice
= alcOpenDevice(szNames
);
172 printf("- Opened Successfully\n");
173 alcCloseDevice(pDevice
);
177 printf("- FAILED to open\n");
181 szNames
+= (strlen(szNames
) + 1);
187 printf("!!!ERROR!!! : ALC_ENUMERATE_ALL_EXT NOT FOUND!\n");
190 printf("--------------------------------------\n\n");
191 ///////////////////////////////////////////////////////////////////
194 ///////////////////////////////////////////////////////////////////
195 // TEST : Get Default *All* Playback Device
197 printf("--------------------------------------\n");
198 printf("TESTING DEFAULT ALL PLAYBACK DEVICE\n\n");
199 szNames
= alcGetString(NULL
, ALC_DEFAULT_ALL_DEVICES_SPECIFIER
);
200 if (szNames
&& strlen(szNames
))
202 printf("\nDEFAULT ALL DEVICES IS %s\n", szNames
);
206 if (waveOutGetNumDevs())
208 printf("\n!!!ERROR!!! DEFAULT ALL DEVICE NOT FOUND!\n");
213 printf("\nDEFAULT ALL DEVICES NOT FOUND!\n");
216 printf("--------------------------------------\n\n");
217 ///////////////////////////////////////////////////////////////////
220 ///////////////////////////////////////////////////////////////////
221 // TEST : Open 'Generic Hardware' device
223 printf("--------------------------------------\n");
224 printf("TESTING 'Generic Hardware' DEVICE\n\n");
225 ALCdevice
*pDevice
= alcOpenDevice("Generic Hardware");
228 printf("OPENED 'Generic Hardware' DEVICE ... GOT %s\n", alcGetString(pDevice
, ALC_DEVICE_SPECIFIER
));
229 alcCloseDevice(pDevice
);
233 if (waveOutGetNumDevs())
235 printf("!!!ERROR!!! : FAILED TO OPEN 'Generic Hardware' DEVICE\n");
240 printf("FAILED TO OPEN 'Generic Hardware' DEVICE\n");
243 printf("--------------------------------------\n\n");
244 ///////////////////////////////////////////////////////////////////
247 ///////////////////////////////////////////////////////////////////
248 // TEST : Open 'Generic Software' device
250 printf("--------------------------------------\n");
251 printf("TESTING 'Generic Software' DEVICE\n\n");
252 pDevice
= alcOpenDevice("Generic Software");
255 printf("OPENED 'Generic Software' DEVICE ... GOT %s\n", alcGetString(pDevice
, ALC_DEVICE_SPECIFIER
));
256 alcCloseDevice(pDevice
);
260 if (waveOutGetNumDevs())
262 printf("!!!ERROR!!! : FAILED TO OPEN 'Generic Software' DEVICE\n");
267 printf("FAILED TO OPEN 'Generic Software' DEVICE\n");
270 printf("--------------------------------------\n\n");
271 ///////////////////////////////////////////////////////////////////
273 ///////////////////////////////////////////////////////////////////
274 // TEST : Open legacy 'DirectSound3D' device
276 printf("--------------------------------------\n");
277 printf("TESTING LEGACY 'DirectSound3D' DEVICE\n\n");
278 pDevice
= alcOpenDevice("DirectSound3D");
281 printf("OPENED 'DirectSound3D' DEVICE ... GOT %s\n", alcGetString(pDevice
, ALC_DEVICE_SPECIFIER
));
282 alcCloseDevice(pDevice
);
286 if (waveOutGetNumDevs())
288 printf("!!!ERROR!!! : FAILED TO OPEN 'DirectSound3D' DEVICE\n");
293 printf("FAILED TO OPEN 'DirectSound3D' DEVICE\n");
296 printf("--------------------------------------\n\n");
297 ///////////////////////////////////////////////////////////////////
300 ///////////////////////////////////////////////////////////////////
301 // TEST : Open legacy 'DirectSound' device
303 printf("--------------------------------------\n");
304 printf("TESTING LEGACY 'DirectSound' DEVICE\n\n");
305 pDevice
= alcOpenDevice("DirectSound");
308 printf("OPENED 'DirectSound' DEVICE ... GOT %s\n", alcGetString(pDevice
, ALC_DEVICE_SPECIFIER
));
309 alcCloseDevice(pDevice
);
313 if (waveOutGetNumDevs())
315 printf("!!!ERROR!!! : FAILED TO OPEN 'DirectSound' DEVICE\n");
320 printf("FAILED TO OPEN 'DirectSound' DEVICE\n");
323 printf("--------------------------------------\n\n");
324 ///////////////////////////////////////////////////////////////////
327 ///////////////////////////////////////////////////////////////////
328 // TEST : Open legacy 'MMSYSTEM' device
330 printf("--------------------------------------\n");
331 printf("TESTING LEGACY 'MMSYSTEM' DEVICE\n\n");
332 pDevice
= alcOpenDevice("MMSYSTEM");
335 printf("OPENED 'MMSYSTEM' DEVICE ... GOT %s\n", alcGetString(pDevice
, ALC_DEVICE_SPECIFIER
));
336 alcCloseDevice(pDevice
);
340 if (waveOutGetNumDevs())
342 printf("!!!ERROR!!! : FAILED TO OPEN 'MMSYSTEM' DEVICE\n");
347 printf("FAILED TO OPEN 'MMSYSTEM' DEVICE\n");
350 printf("--------------------------------------\n\n");
351 ///////////////////////////////////////////////////////////////////
354 ///////////////////////////////////////////////////////////////////
355 // TEST : Open NULL device
357 printf("--------------------------------------\n");
358 printf("TESTING NULL DEVICE\n\n");
359 pDevice
= alcOpenDevice(NULL
);
362 printf("OPENED NULL DEVICE ... GOT %s\n", alcGetString(pDevice
, ALC_DEVICE_SPECIFIER
));
363 alcCloseDevice(pDevice
);
367 if (waveOutGetNumDevs())
369 printf("!!!ERROR!!! : FAILED TO OPEN NULL DEVICE\n");
374 printf("FAILED TO OPEN NULL DEVICE\n");
377 printf("--------------------------------------\n\n");
378 ///////////////////////////////////////////////////////////////////
381 ///////////////////////////////////////////////////////////////////
382 // TEST : Open "" device
384 printf("--------------------------------------\n");
385 printf("TESTING EMPTY DEVICE\n\n");
386 pDevice
= alcOpenDevice("");
389 printf("OPENED \"\" DEVICE ... GOT %s\n", alcGetString(pDevice
, ALC_DEVICE_SPECIFIER
));
390 alcCloseDevice(pDevice
);
394 if (waveOutGetNumDevs())
396 printf("!!!ERROR!!! : FAILED TO OPEN EMPTY DEVICE\n");
401 printf("FAILED TO OPEN EMPTY DEVICE\n");
404 printf("--------------------------------------\n\n");
405 ///////////////////////////////////////////////////////////////////
408 ///////////////////////////////////////////////////////////////////
409 // TEST : Open "A Random Name" device
411 printf("--------------------------------------\n");
412 printf("TESTING 'A Random Name' DEVICE\n\n");
413 pDevice
= alcOpenDevice("A Random Name");
416 printf("!!!ERROR!!! : OPENED 'A Random Name' DEVICE ... GOT %s\n", alcGetString(pDevice
, ALC_DEVICE_SPECIFIER
));
418 alcCloseDevice(pDevice
);
422 printf("FAILED TO OPEN 'A Random Name' DEVICE\n");
424 printf("--------------------------------------\n\n");
425 ///////////////////////////////////////////////////////////////////
428 ///////////////////////////////////////////////////////////////////
429 // TEST : Open NULL Capture device
431 printf("--------------------------------------\n");
432 printf("TESTING NULL CAPTURE DEVICE\n\n");
433 pDevice
= alcCaptureOpenDevice(NULL
, 22500, AL_FORMAT_MONO16
, 4096);
436 printf("OPENED NULL CAPTURE DEVICE ... GOT %s\n", alcGetString(pDevice
, ALC_CAPTURE_DEVICE_SPECIFIER
));
437 alcCaptureCloseDevice(pDevice
);
441 if (waveInGetNumDevs())
443 printf("!!!ERROR!!! : FAILED TO OPEN NULL CAPTURE DEVICE\n");
448 printf("FAILED TO OPEN NULL CAPTURE DEVICE\n");
451 printf("--------------------------------------\n\n");
452 ///////////////////////////////////////////////////////////////////
455 ///////////////////////////////////////////////////////////////////
456 // TEST : Open "" capture device
458 printf("--------------------------------------\n");
459 printf("TESTING EMPTY CAPTURE DEVICE\n\n");
460 pDevice
= alcCaptureOpenDevice("", 22500, AL_FORMAT_MONO16
, 4096);
463 printf("OPENED \"\" CAPTURE DEVICE ... GOT %s\n", alcGetString(pDevice
, ALC_CAPTURE_DEVICE_SPECIFIER
));
464 alcCaptureCloseDevice(pDevice
);
468 if (waveInGetNumDevs())
470 printf("!!!ERROR!!! : FAILED TO OPEN EMPTY CAPTURE DEVICE\n");
475 printf("FAILED TO OPEN EMPTY CAPTURE DEVICE\n");
478 printf("--------------------------------------\n\n");
479 ///////////////////////////////////////////////////////////////////
482 ///////////////////////////////////////////////////////////////////
483 // TEST : Open "A Random Name" capture device
485 printf("--------------------------------------\n");
486 printf("TESTING 'A Random Name' CAPTURE DEVICE\n\n");
487 pDevice
= alcCaptureOpenDevice("A Random Name", 22500, AL_FORMAT_MONO16
, 4096);
490 printf("!!!ERROR!!! : OPENED 'A Random Name' CAPTURE DEVICE ... GOT %s\n", alcGetString(pDevice
, ALC_CAPTURE_DEVICE_SPECIFIER
));
492 alcCaptureCloseDevice(pDevice
);
496 printf("FAILED TO OPEN 'A Random Name' CAPTURE DEVICE\n");
498 printf("--------------------------------------\n\n");
499 ///////////////////////////////////////////////////////////////////
501 printf("\nFOUND %d ERRORS\n", lErrorCount
);
503 printf("\nPress a key to quit\n");
511 ALboolean InitOpenAL(ALCdevice **ppDevice, ALCcontext **ppContext)
513 ALchar szDeviceNames[10][1024];
522 memset(szDeviceNames, 0, sizeof(ALchar) * 10 * 1024);
529 szNames = (char *)alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
530 if (szNames && *szNames && (strlen(szNames) < 1024))
531 strcpy(szDeviceNames[lNumDevices++], szNames);
534 for (lLoop = 0; lLoop < lNumDevices; lLoop++)
535 printf("Press %d for '%s' Device\n", lLoop+1, szDeviceNames[lLoop]);
536 printf("Press Q to quit\n");
541 if (ch == 'q' || ch == 'Q')
543 else if ((ch >= '1') && (ch < ('1' + lNumDevices)))
547 *ppDevice = alcOpenDevice(szDeviceNames[ch - '1']);
550 *ppContext = alcCreateContext(*ppDevice,NULL);
553 alcGetError(*ppDevice);
554 alcMakeContextCurrent(*ppContext);
555 if (alcGetError(*ppDevice) == ALC_NO_ERROR)
560 alcCloseDevice(*ppDevice);
568 ALboolean InitOpenALEx(ALCdevice **ppDevice, ALCcontext **ppContext)
570 ALchar szDeviceNames[32][1024];
571 const ALchar *szNames;
572 const ALchar *szDefaultName = NULL;
573 const ALchar *szDefaultAllName = NULL;
574 ALint lNumDevices = 0;
581 memset(szDeviceNames, 0, sizeof(ALchar) * 32 * 1024);
583 // Get legacy enumeration list and Default Device
584 if (alcIsExtensionPresent(NULL, "ALC_ENUMERATION_EXT") == AL_TRUE)
586 szNames = alcGetString(NULL, ALC_DEVICE_SPECIFIER);
588 while (szNames && *szNames)
590 if ((lLength = strlen(szNames)) < 1024)
591 strcpy(szDeviceNames[lNumDevices++], szNames);
592 szNames += lLength + 1;
595 szDefaultName = alcGetString(NULL, ALC_DEFAULT_DEVICE_SPECIFIER);
598 // Get new uber enumeration list and Default Device
599 if (alcIsExtensionPresent(NULL, "ALC_ENUMERATE_ALL_EXT") == AL_TRUE)
601 szNames = alcGetString(NULL, alcGetEnumValue(NULL, "ALC_ALL_DEVICES_SPECIFIER"));
603 while (szNames && *szNames)
605 if ((lLength = strlen(szNames)) < 1024)
606 strcpy(szDeviceNames[lNumDevices++], szNames);
607 szNames += lLength + 1;
610 szDefaultAllName = alcGetString(NULL, alcGetEnumValue(NULL, "ALC_DEFAULT_ALL_DEVICES_SPECIFIER"));
614 for (lLoop = 0; lLoop < lNumDevices; lLoop++)
615 printf("Press %d for '%s' Device %s\n", lLoop+1, szDeviceNames[lLoop],
616 (strcmp(szDeviceNames[lLoop], szDefaultName?szDefaultName:"") == 0) ? "*" : (strcmp(szDeviceNames[lLoop], szDefaultAllName?szDefaultAllName:"") == 0) ? "**" : "");
617 printf("Press Q to quit\n");
622 if (ch == 'q' || ch == 'Q')
624 else if ((ch >= '1') && (ch < ('1' + lNumDevices)))
628 *ppDevice = alcOpenDevice(szDeviceNames[ch - '1']);
631 *ppContext = alcCreateContext(*ppDevice,NULL);
634 alcGetError(*ppDevice);
635 alcMakeContextCurrent(*ppContext);
636 if (alcGetError(*ppDevice) == ALC_NO_ERROR)
641 alcCloseDevice(*ppDevice);