Imported Upstream version 1.2
[platform/upstream/alure.git] / examples / alurestream.c
1 #include <stdio.h>
2
3 #include "AL/alure.h"
4
5 volatile int isdone = 0;
6 static void eos_callback(void *unused, ALuint unused2)
7 {
8     isdone = 1;
9     (void)unused;
10     (void)unused2;
11 }
12
13 #define NUM_BUFS 3
14
15 int main(int argc, char **argv)
16 {
17     alureStream *stream;
18     ALuint src;
19
20     if(argc < 2)
21     {
22         fprintf(stderr, "Usage %s <soundfile>\n", argv[0]);
23         return 1;
24     }
25
26     if(!alureInitDevice(NULL, NULL))
27     {
28         fprintf(stderr, "Failed to open OpenAL device: %s\n", alureGetErrorString());
29         return 1;
30     }
31
32     alGenSources(1, &src);
33     if(alGetError() != AL_NO_ERROR)
34     {
35         fprintf(stderr, "Failed to create OpenAL source!\n");
36         alureShutdownDevice();
37         return 1;
38     }
39
40     alureStreamSizeIsMicroSec(AL_TRUE);
41
42     stream = alureCreateStreamFromFile(argv[1], 250000, 0, NULL);
43     if(!stream)
44     {
45         fprintf(stderr, "Could not load %s: %s\n", argv[1], alureGetErrorString());
46         alDeleteSources(1, &src);
47
48         alureShutdownDevice();
49         return 1;
50     }
51
52     if(!alurePlaySourceStream(src, stream, NUM_BUFS, 0, eos_callback, NULL))
53     {
54         fprintf(stderr, "Failed to play stream: %s\n", alureGetErrorString());
55         isdone = 1;
56     }
57
58     while(!isdone)
59     {
60         alureSleep(0.125);
61         alureUpdate();
62     }
63     alureStopSource(src, AL_FALSE);
64
65     alDeleteSources(1, &src);
66     alureDestroyStream(stream, 0, NULL);
67
68     alureShutdownDevice();
69     return 0;
70 }