1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
#include <stdio.h>
#include "AL/alure.h"
int main( int argc, char **argv)
{
ALuint src, buf;
ALint state;
if(argc < 2)
{
fprintf(stderr, "Usage %s <soundfile>\n", argv[0]);
return 1;
}
if(!alureInitDevice(NULL, NULL))
{
fprintf(stderr, "Failed to open OpenAL device: %s\n", alureGetErrorString());
return 1;
}
alGenSources(1, &src);
if(alGetError() != AL_NO_ERROR)
{
fprintf(stderr, "Failed to create OpenAL source!\n");
alureShutdownDevice();
return 1;
}
buf = alureCreateBufferFromFile(argv[1]);
if(!buf)
{
fprintf(stderr, "Could not load %s: %s\n", argv[1], alureGetErrorString());
alDeleteSources(1, &src);
alureShutdownDevice();
return 1;
}
alSourcei(src, AL_BUFFER, buf);
alSourcePlay(src);
if(alGetError() != AL_NO_ERROR)
{
fprintf(stderr, "Failed to start source!\n");
alDeleteSources(1, &src);
alDeleteBuffers(1, &buf);
alureShutdownDevice();
return 1;
}
do {
alureSleep(0.001);
alGetSourcei(src, AL_SOURCE_STATE, &state);
} while(alGetError() == AL_NO_ERROR && state == AL_PLAYING);
alDeleteSources(1, &src);
alDeleteBuffers(1, &buf);
alureShutdownDevice();
return 0;
}
|