Mercurial > molko
annotate src/libmlk-core/core/music.c @ 413:222045c513ec
misc: fix some warnings
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 07 Oct 2022 15:25:32 +0200 |
parents | 67c1c46af2c8 |
children | bf20b77968fd |
rev | line source |
---|---|
203 | 1 /* |
2 * music.h -- music support | |
3 * | |
378
460c78706989
misc: update copyright years
David Demelier <markand@malikania.fr>
parents:
341
diff
changeset
|
4 * Copyright (c) 2020-2022 David Demelier <markand@malikania.fr> |
203 | 5 * |
6 * Permission to use, copy, modify, and/or distribute this software for any | |
7 * purpose with or without fee is hereby granted, provided that the above | |
8 * copyright notice and this permission notice appear in all copies. | |
9 * | |
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
17 */ | |
18 | |
19 #include <assert.h> | |
20 #include <string.h> | |
21 | |
22 #include "error.h" | |
23 #include "music.h" | |
341
0c18acf4517e
js: add music bindings
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
24 #include "vfs.h" |
0c18acf4517e
js: add music bindings
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
25 #include "vfs_p.h" |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
26 #include "sys_p.h" |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
27 |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
28 #define SOURCE(mus) ((const struct audiostream *)mus->handle)->source |
203 | 29 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
30 int |
203 | 31 music_open(struct music *mus, const char *path) |
32 { | |
33 assert(mus); | |
34 assert(path); | |
35 | |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
36 if (!(mus->handle = audiostream_open(path))) |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
37 return -1; |
203 | 38 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
39 return 0; |
203 | 40 } |
41 | |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
42 int |
203 | 43 music_openmem(struct music *mus, const void *buffer, size_t buffersz) |
44 { | |
45 assert(mus); | |
46 assert(buffer); | |
47 | |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
48 if (!(mus->handle = audiostream_openmem(buffer, buffersz))) |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
49 return -1; |
203 | 50 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
51 return 0; |
203 | 52 } |
53 | |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
54 int |
341
0c18acf4517e
js: add music bindings
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
55 music_openvfs(struct music *mus, struct vfs_file *file) |
0c18acf4517e
js: add music bindings
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
56 { |
0c18acf4517e
js: add music bindings
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
57 assert(mus); |
0c18acf4517e
js: add music bindings
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
58 assert(vfs_file_ok(file)); |
0c18acf4517e
js: add music bindings
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
59 |
413
222045c513ec
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
379
diff
changeset
|
60 // TODO: implement this. |
222045c513ec
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
379
diff
changeset
|
61 (void)mus; |
222045c513ec
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
379
diff
changeset
|
62 (void)file; |
222045c513ec
misc: fix some warnings
David Demelier <markand@malikania.fr>
parents:
379
diff
changeset
|
63 |
341
0c18acf4517e
js: add music bindings
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
64 return 0; |
0c18acf4517e
js: add music bindings
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
65 } |
0c18acf4517e
js: add music bindings
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
66 |
0c18acf4517e
js: add music bindings
David Demelier <markand@malikania.fr>
parents:
320
diff
changeset
|
67 int |
203 | 68 music_ok(const struct music *mus) |
69 { | |
70 return mus && mus->handle; | |
71 } | |
72 | |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
73 int |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
74 music_play(struct music *mus, enum music_flags flags) |
203 | 75 { |
76 assert(mus); | |
77 | |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
78 if (flags & MUSIC_LOOP) |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
79 alSourcei(SOURCE(mus), AL_LOOPING, AL_TRUE); |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
80 else |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
81 alSourcei(SOURCE(mus), AL_LOOPING, AL_TRUE); |
203 | 82 |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
83 alSourceRewind(SOURCE(mus)); |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
84 alSourcePlay(SOURCE(mus)); |
203 | 85 |
298
196264679079
misc: remove usage of bool
David Demelier <markand@malikania.fr>
parents:
243
diff
changeset
|
86 return 0; |
203 | 87 } |
88 | |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
89 void |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
90 music_pause(struct music *mus) |
203 | 91 { |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
92 assert(music_ok(mus)); |
203 | 93 |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
94 alSourcePause(SOURCE(mus)); |
203 | 95 } |
96 | |
97 void | |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
98 music_resume(struct music *mus) |
203 | 99 { |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
100 assert(music_ok(mus)); |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
101 |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
102 alSourcePlay(SOURCE(mus)); |
203 | 103 } |
104 | |
105 void | |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
106 music_stop(struct music *mus) |
203 | 107 { |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
108 assert(music_ok(mus)); |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
109 |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
110 alSourceStop(SOURCE(mus)); |
203 | 111 } |
112 | |
113 void | |
114 music_finish(struct music *mus) | |
115 { | |
116 assert(mus); | |
117 | |
118 if (mus->handle) { | |
379
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
119 music_stop(mus); |
67c1c46af2c8
core: replace SDL2_mixer with OpenAL, closes #2528 @3h
David Demelier <markand@malikania.fr>
parents:
378
diff
changeset
|
120 audiostream_finish(mus->handle); |
203 | 121 } |
122 | |
123 memset(mus, 0, sizeof (*mus)); | |
124 } |