44 lines
778 B
C
44 lines
778 B
C
#if !defined(LD_OS_AUDIO_H_)
|
|
#define LD_OS_AUDIO_H_
|
|
|
|
typedef struct Audio_Data Audio_Data;
|
|
struct Audio_Data {
|
|
S16 *samples;
|
|
U32 n_frames;
|
|
};
|
|
|
|
typedef struct Audio_Track Audio_Track;
|
|
struct Audio_Track {
|
|
B32 playing;
|
|
|
|
Audio_Data *data;
|
|
|
|
F32 volume;
|
|
|
|
U32 n_played;
|
|
U32 next; // to play if playing, free otherwise
|
|
};
|
|
|
|
typedef struct Audio_Context Audio_Context;
|
|
struct Audio_Context {
|
|
SDL_AudioStream *stream;
|
|
|
|
U32 n_tracks;
|
|
Audio_Track tracks[16];
|
|
|
|
U32 head;
|
|
U32 free;
|
|
|
|
F32 volume;
|
|
|
|
U32 n_sounds;
|
|
Audio_Data *sounds;
|
|
};
|
|
|
|
function void Audio_Init(M_Arena *arena, Audio_Context *audio, F32 volume);
|
|
function U32 Audio_Play(Audio_Context *audio, U32 index);
|
|
|
|
function void Audio_ChangeVolume(Audio_Context *audio, U32 handle, F32 volume);
|
|
|
|
#endif // LD_OS_AUDIO_H_
|