Add a function to get the number of samples from a stream
[alure.git] / examples / alurestream.c
blobb163dceb76ab35bb9a45138b631b56421392cace
1 #include <stdio.h>
3 #include "AL/alure.h"
5 volatile int isdone = 0;
6 static void eos_callback(void *unused, ALuint unused2)
8 isdone = 1;
9 (void)unused;
10 (void)unused2;
13 #define NUM_BUFS 3
15 int main(int argc, char **argv)
17 alureStream *stream;
18 ALuint src;
20 if(argc < 2)
22 fprintf(stderr, "Usage %s <soundfile>\n", argv[0]);
23 return 1;
26 if(!alureInitDevice(NULL, NULL))
28 fprintf(stderr, "Failed to open OpenAL device: %s\n", alureGetErrorString());
29 return 1;
32 alGenSources(1, &src);
33 if(alGetError() != AL_NO_ERROR)
35 fprintf(stderr, "Failed to create OpenAL source!\n");
36 alureShutdownDevice();
37 return 1;
40 alureStreamSizeIsMicroSec(AL_TRUE);
42 stream = alureCreateStreamFromFile(argv[1], 250000, 0, NULL);
43 if(!stream)
45 fprintf(stderr, "Could not load %s: %s\n", argv[1], alureGetErrorString());
46 alDeleteSources(1, &src);
48 alureShutdownDevice();
49 return 1;
52 if(!alurePlaySourceStream(src, stream, NUM_BUFS, 0, eos_callback, NULL))
54 fprintf(stderr, "Failed to play stream: %s\n", alureGetErrorString());
55 isdone = 1;
58 while(!isdone)
60 alureSleep(0.125);
61 alureUpdate();
63 alureStopSource(src, AL_FALSE);
65 alDeleteSources(1, &src);
66 alureDestroyStream(stream, 0, NULL);
68 alureShutdownDevice();
69 return 0;