From: ehofman Date: Sun, 29 Nov 2009 18:08:46 +0000 (+0000) Subject: add alcinfo instead. X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=b4b3f62717bcef9a8a9d77ec8b64fbeab3a36990;p=flightgear.git add alcinfo instead. --- diff --git a/tests/Makefile.am b/tests/Makefile.am index 69612dbef..57a0bd77c 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -1,4 +1,4 @@ -bin_PROGRAMS = est-epsilon gl-info al-info +bin_PROGRAMS = est-epsilon gl-info alcinfo noinst_PROGRAMS = test-gethostname test-mktime test-text test-up test-env-map @@ -8,8 +8,8 @@ est_epsilon_LDADD = $(opengl_LIBS) gl_info_SOURCES = gl-info.c gl_info_LDADD = $(opengl_LIBS) -al_info_SOURCES = al-info.c -al_info_LDADD = $(openal_LIBS) +alcinfo_SOURCES = alcinfo.c +alcinfo_LDADD = $(openal_LIBS) test_env_map_SOURCES = test-env-map.cxx test_env_map_LDADD = $(opengl_LIBS) diff --git a/tests/al-info.c b/tests/al-info.c deleted file mode 100644 index 13c68f204..000000000 --- a/tests/al-info.c +++ /dev/null @@ -1,114 +0,0 @@ - -#include - -#ifdef __APPLE__ -# include -# include -#else -# include -# include -# ifndef __CYGWIN__ -# include -# endif -#endif - -#ifndef AL_VERSION_1_1 -# ifdef __APPLE__ -# include -# include -#else -# include -# include -# endif -#endif - -#define MAX_DATA 16 - -int main() -{ - ALCint data[MAX_DATA]; - ALCdevice *device = NULL; - ALCcontext *context = NULL; - const ALchar *s; - ALCenum error; - - device = alcOpenDevice(NULL); - if (device == NULL) - { - printf("No default audio device available.\n"); - return -1; - } - context = alcCreateContext(device, NULL); - if (context == NULL) - { - printf("Could not create a valid context.\n"); - return -2; - } - alcMakeContextCurrent(context); - - s = alGetString(AL_VENDOR); - printf("AL_VENDOR = \"%s\"\n", s); - - s = alGetString(AL_RENDERER); - printf("AL_RENDERER = \"%s\"\n", s); - - s = alGetString(AL_VERSION); - printf("AL_VERSION = \"%s\"\n", s); - - s = alGetString(AL_EXTENSIONS); - printf("AL_EXTENSIONS = \"%s\"\n", s); - - alcGetError(device); - - printf("\n"); - if (alcIsExtensionPresent(NULL, (const ALchar *)"ALC_ENUMERATION_EXT") == AL_TRUE) - { - s = alcGetString(NULL, ALC_DEVICE_SPECIFIER); - printf("ALC_DEVICE_SPECIFIER = \"%s\"\n", s); - } - - alcGetIntegerv(device, ALC_MAJOR_VERSION, 1, data); - printf("ALC_MAJOR_VERSION = %i\n", *data); - alcGetIntegerv(device, ALC_MINOR_VERSION, 1, data); - printf("ALC_MINOR_VERSION = %i\n", *data); - - s = alcGetString(device, ALC_EXTENSIONS); - printf("ALC_EXTENSIONS = \"%s\"\n", s); - - if ((error = alcGetError(device))) - { - printf("Error #%i occured\n", error); - return error; - } - - s = alcGetString(device, ALC_DEFAULT_DEVICE_SPECIFIER); - printf("ALC_DEFAULT_DEVICE_SPECIFIER = \"%s\"\n", s); - - if ((error = alcGetError(device))) - { - printf("Error #%i occured\n", error); - return error; - } - -#if 0 - alcGetIntegerv(device, ALC_ATTRIBUTES_SIZE, 1, &i); - printf("ALC attributes(%i): ", i); - - alcGetIntegerv(device, ALC_ALL_ATTRIBUTES, i, data); - for (j=0; j + * + */ + +#if HAVE_CONFIG_H +# include "config.h" +#endif + +#ifdef __APPLE__ +# include +# include +#else +# include +# include +# include +#endif + +#ifndef AL_VERSION_1_1 +# ifdef __APPLE__ +# include +# include +#else +# include +# include +# endif +#endif + +#include +#include + +#define MAX_DATA 16 +static const int indentation = 4; +static const int maxmimumWidth = 79; + +void printExtensions (const char *, char, const char *); +void displayDevices(const char *, const char *); +char *getDeviceName(int, char **); +void testForError(void *, char *); +void testForALCError(ALCdevice *); + +int main(int argc, char **argv) +{ + ALCint data[MAX_DATA]; + ALCdevice *device = NULL; + ALCcontext *context = NULL; + ALenum error; + char *s; + + if (alcIsExtensionPresent(NULL, "ALC_enumeration_EXT") == AL_TRUE) + { + if (alcIsExtensionPresent(NULL, "ALC_enumerate_all_EXT") == AL_FALSE) + s = (char *)alcGetString(NULL, ALC_DEVICE_SPECIFIER); + else + s = (char *)alcGetString(NULL, ALC_ALL_DEVICES_SPECIFIER); + displayDevices("output", s); + + s = (char *)alcGetString(NULL, ALC_CAPTURE_DEVICE_SPECIFIER); + displayDevices("input", s); + } + + s = getDeviceName(argc, argv); + device = alcOpenDevice(s); + testForError(device, "Audio device not available."); + + context = alcCreateContext(device, NULL); + testForError(context, "Unable to create a valid context."); + + alcMakeContextCurrent(context); + testForALCError(device); + + s = (char *)alcGetString(device, ALC_DEFAULT_DEVICE_SPECIFIER); + printf("default output device: %s\n", s); + testForALCError(device); + + error = alcIsExtensionPresent(device, "ALC_EXT_capture"); + if (error) + { + s = (char *)alcGetString(device, ALC_CAPTURE_DEFAULT_DEVICE_SPECIFIER); + printf("default input device: %s\n", s); + testForALCError(device); + } + printf("capture support: %s\n", (error) ? "yes" : "no"); + + alcGetIntegerv(device, ALC_FREQUENCY, 1, data); + printf("mixer frequency: %u hz\n", data[0]); + testForError(device, "invalid context"); + + alcGetIntegerv(device, ALC_REFRESH, 1, data+1); + printf("refresh rate : %u hz\n", data[0]/data[1]); + testForError(device, "invalid context"); + + data[0] = 0; + alcGetIntegerv(device, ALC_MONO_SOURCES, 1, data); + printf("supported sources; mono: %u, ", data[0]); + testForError(device, "invalid context"); + + data[0] = 0; + alcGetIntegerv(device, ALC_STEREO_SOURCES, 1, data); + printf("stereo: %u\n", data[0]); + testForError(device, "invalid context"); + + printf("ALC version: "); + alcGetIntegerv(device, ALC_MAJOR_VERSION, 1, data); + printf("%i.", *data); + alcGetIntegerv(device, ALC_MINOR_VERSION, 1, data); + printf("%i\n", *data); + testForALCError(device); + + s = (char *)alcGetString(device, ALC_EXTENSIONS); + printExtensions ("ALC extensions", ' ', s); + testForALCError(device); + + s = (char *)alGetString(AL_VENDOR); + error = alGetError(); + if ((error = alGetError()) != AL_NO_ERROR) + printf("Error #%x: %s\n", error, alGetString(error)); + else + printf("OpenAL vendor string: %s\n", s); + + s = (char *)alGetString(AL_RENDERER); + if ((error = alGetError()) != AL_NO_ERROR) + printf("Error #%x: %s\n", error, alGetString(error)); + else + printf("OpenAL renderer string: %s\n", s); + + s = (char *)alGetString(AL_VERSION); + if ((error = alGetError()) != AL_NO_ERROR) + printf("Error #%x: %s\n", error, alGetString(error)); + else if (!s) + printf("Quering AL_VERSION returned NULL pointer!\n"); + else + printf("OpenAL version string: %s\n", s); + + s = (char *)alGetString(AL_EXTENSIONS); + printExtensions ("OpenAL extensions", ' ', s); + testForALCError(device); + +/* alut testing mechanism */ + context = alcGetCurrentContext(); + if (context == NULL) + { + printf("Error: no current context\n"); + } + else + { + if (alGetError () != AL_NO_ERROR) + { + printf("Alert: AL error on entry\n"); + } + else + { + if (alcGetError (alcGetContextsDevice (context)) != ALC_NO_ERROR) + { + printf("Alert: ALC error on entry\n"); + } + } + } +/* end of alut test */ + + + if (alcMakeContextCurrent(NULL) == 0) + printf("alcMakeContextCurrent failed.\n"); + + device = alcGetContextsDevice(context); + alcDestroyContext(context); + testForALCError(device); + + if (alcCloseDevice(device) == 0) + printf("alcCloseDevice failed.\n"); + + return 0; +} + +/* -------------------------------------------------------------------------- */ + +void +printChar (int c, int *width) +{ + putchar (c); + *width = (c == '\n') ? 0 : (*width + 1); +} + +void +indent (int *width) +{ + int i; + for (i = 0; i < indentation; i++) + { + printChar (' ', width); + } +} + +void +printExtensions (const char *header, char separator, const char *extensions) +{ + int width = 0, start = 0, end = 0; + + printf ("%s:\n", header); + if (extensions == NULL || extensions[0] == '\0') + { + return; + } + + indent (&width); + while (1) + { + if (extensions[end] == separator || extensions[end] == '\0') + { + if (width + end - start + 2 > maxmimumWidth) + { + printChar ('\n', &width); + indent (&width); + } + while (start < end) + { + printChar (extensions[start], &width); + start++; + } + if (extensions[end] == '\0') + { + break; + } + start++; + end++; + if (extensions[end] == '\0') + { + break; + } + printChar (',', &width); + printChar (' ', &width); + } + end++; + } + printChar ('\n', &width); +} + +char * +getCommandLineOption(int argc, char **argv, char *option) +{ + int slen = strlen(option); + char *rv = 0; + int i; + + for (i=0; i