X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=simgear%2Fsound%2Fopenal_test1.cxx;h=7909f2cd3938028f58b35b7062a5c43ba1ba2365;hb=105438fc581a9b1d65a9309f6e845f9558f3a505;hp=25d551adfef54b04ae9bfc0dad1bae844756c49c;hpb=70faa252e7d27e8b8eaa085dc6759881b7d71836;p=simgear.git diff --git a/simgear/sound/openal_test1.cxx b/simgear/sound/openal_test1.cxx index 25d551ad..7909f2cd 100644 --- a/simgear/sound/openal_test1.cxx +++ b/simgear/sound/openal_test1.cxx @@ -1,9 +1,9 @@ #include +#include // EXIT_FAILURE -#ifdef __MINGW32__ -// This is broken, but allows the file to compile without a POSIX -// environment. -static unsigned int sleep(unsigned int secs) { return 0; } +#ifdef _WIN32 +#include +#define sleep(x) Sleep(x*1000) #else #include // sleep() #endif @@ -13,14 +13,19 @@ static unsigned int sleep(unsigned int secs) { return 0; } # define AL_ILLEGAL_COMMAND AL_INVALID_OPERATION # include # include -# include +#elif defined(OPENALSDK) +# include +# include #else # include # include -# include #endif +#define AUDIOFILE SRC_DIR"/jet.wav" + +#include #include +#include static void print_openal_error( ALuint error ) { if ( error == AL_INVALID_NAME ) { @@ -39,19 +44,24 @@ static void print_openal_error( ALuint error ) { } -int main( int argc, char *argv[] ) { - // initialize OpenAL - ALCdevice *dev; - ALCcontext *context; - +int main( int argc, char *argv[] ) +{ + sglog().setLogLevels( SG_ALL, SG_ALERT ); + // initialize OpenAL - if ( (dev = alcOpenDevice( NULL )) != NULL - && ( context = alcCreateContext( dev, NULL )) != NULL ) { - alcMakeContextCurrent( context ); - } else { - context = 0; - SG_LOG( SG_GENERAL, SG_ALERT, "Audio initialization failed!" ); + ALCdevice *dev = alcOpenDevice(NULL); + if (!dev) { + SG_LOG( SG_GENERAL, SG_ALERT, "Audio device initialization failed!" ); + return EXIT_FAILURE; + } + + ALCcontext *context = alcCreateContext(dev, NULL); + if (!context) { + SG_LOG( SG_GENERAL, SG_ALERT, "Audio context initialization failed!" ); + return EXIT_FAILURE; } + + alcMakeContextCurrent( context ); // Position of the listener. ALfloat listener_pos[3]; @@ -95,54 +105,20 @@ int main( int argc, char *argv[] ) { ALfloat source_vel[3]; // configuration values - ALenum format; - ALsizei size; - ALvoid* data; - ALsizei freq; - ALboolean loop; + ALboolean loop = false; source_pos[0] = 0.0; source_pos[1] = 0.0; source_pos[2] = 0.0; source_vel[0] = 0.0; source_vel[1] = 0.0; source_vel[2] = 0.0; - // create an OpenAL buffer handle - alGenBuffers(1, &buffer); - ALuint error = alGetError(); - if ( error != AL_NO_ERROR ) { - print_openal_error( error ); - SG_LOG( SG_GENERAL, SG_ALERT, "Failed to gen OpenAL buffer." ); - } else { - SG_LOG( SG_GENERAL, SG_ALERT, "Buffer created ok!" ); - } - // Load the sample file -#if defined(ALUT_API_MAJOR_VERSION) && ALUT_API_MAJOR_VERSION >= 1 - - buffer = alutCreateBufferFromFile("jet.wav"); - if (buffer == AL_NONE) { - SG_LOG( SG_GENERAL, SG_ALERT, "Failed to buffer data."); - } - -#else -# if defined (__APPLE__) - alutLoadWAVFile( (ALbyte *)"jet.wav", &format, &data, &size, &freq ); -# else - alutLoadWAVFile( (ALbyte *)"jet.wav", &format, &data, &size, &freq, &loop ); -# endif - if (alGetError() != AL_NO_ERROR) { - SG_LOG( SG_GENERAL, SG_ALERT, "Failed to load wav file."); - } - - // Copy data to the internal OpenAL buffer - alBufferData( buffer, format, data, size, freq ); - if (alGetError() != AL_NO_ERROR) { + buffer = simgear::createBufferFromFile(SGPath(AUDIOFILE)); + if (buffer == AL_NONE) { SG_LOG( SG_GENERAL, SG_ALERT, "Failed to buffer data."); - } - - alutUnloadWAV( format, data, size, freq ); -#endif + } alGenSources(1, &source); if (alGetError() != AL_NO_ERROR) { + ALuint error = alGetError(); print_openal_error( error ); } @@ -156,6 +132,10 @@ int main( int argc, char *argv[] ) { alSourcePlay( source ); sleep(10); - + + alcMakeContextCurrent(NULL); + alcDestroyContext(context); + alcCloseDevice(dev); + return 0; }