48 lines
785 B
C
48 lines
785 B
C
|
|
#ifndef _PIUMA_AUDIO_H_
|
||
|
|
#define _PIUMA_AUDIO_H_
|
||
|
|
|
||
|
|
#include "lib/types.h"
|
||
|
|
#include "platform.h"
|
||
|
|
|
||
|
|
typedef u64 track_id;
|
||
|
|
|
||
|
|
struct audio_track
|
||
|
|
{
|
||
|
|
track_id id;
|
||
|
|
p_audio_buffer data;
|
||
|
|
u64 progress;
|
||
|
|
bool playing;
|
||
|
|
bool loop;
|
||
|
|
bool free_on_finish;
|
||
|
|
|
||
|
|
f32 volume;
|
||
|
|
};
|
||
|
|
|
||
|
|
struct audio_player
|
||
|
|
{
|
||
|
|
audio_track *tracks;
|
||
|
|
u32 track_count;
|
||
|
|
u32 track_capacity;
|
||
|
|
track_id next_id;
|
||
|
|
|
||
|
|
u32 sample_rate;
|
||
|
|
};
|
||
|
|
|
||
|
|
enum audio_flags
|
||
|
|
{
|
||
|
|
AUDIO_NONE = 0,
|
||
|
|
AUDIO_LOOP = 1,
|
||
|
|
AUDIO_PAUSED = 2,
|
||
|
|
AUDIO_FREE_ON_FINISH = 4
|
||
|
|
};
|
||
|
|
|
||
|
|
void audio_init();
|
||
|
|
track_id audio_add_track(p_audio_buffer *data, u32 flags);
|
||
|
|
void audio_remove_track(track_id id);
|
||
|
|
void audio_pause_track(track_id id);
|
||
|
|
void audio_play_track(track_id id);
|
||
|
|
void audio_change_track_volume(track_id id, f32 volume);
|
||
|
|
audio_track *audio_track_from_id(track_id id);
|
||
|
|
|
||
|
|
#endif
|