diff options
Diffstat (limited to 'src/mixer')
| -rw-r--r-- | src/mixer/audio_miniaudio.c | 2 | ||||
| -rw-r--r-- | src/mixer/mixer.c | 28 |
2 files changed, 15 insertions, 15 deletions
diff --git a/src/mixer/audio_miniaudio.c b/src/mixer/audio_miniaudio.c index f0afeee..ba093f4 100644 --- a/src/mixer/audio_miniaudio.c +++ b/src/mixer/audio_miniaudio.c @@ -155,7 +155,7 @@ static void data_callback(ma_device *device, void *output, const void *input, u3 } #define DEFAULT_PERIODS 3 -#define DEFAULT_PERIOD_SIZE_IN_MILLISECONDS 64 +#define DEFAULT_PERIOD_SIZE_IN_MILLISECONDS 48 static bool audio_miniaudio_configure_stream(struct camu_audio *audio, void *opaque) { diff --git a/src/mixer/mixer.c b/src/mixer/mixer.c index 1360934..36ac95d 100644 --- a/src/mixer/mixer.c +++ b/src/mixer/mixer.c @@ -12,7 +12,7 @@ static s32 data_callback(void *userdata, u8 *data, s32 frame_count, bool *silence) { struct camu_mixer *mixer = (struct camu_mixer *)userdata; - size_t req = camu_audio_format_samples_to_bytes(&mixer->fmt.req, (size_t)frame_count); + ptrdiff_t req = (ptrdiff_t)camu_audio_format_samples_to_bytes(&mixer->fmt.req, (size_t)frame_count); #ifdef CAMU_MIXER_THREADED_START_STOP if (UNLIKELY(mixer->paused)) { al_memset(data, 0, req); @@ -36,17 +36,17 @@ static s32 data_callback(void *userdata, u8 *data, s32 frame_count, bool *silenc // Read from all current buffers on each callback to // emulate the behavior of an actual mixer. al_array_foreach(mixer->buffers, i, buf) { - if (i < mixer->buffers.size - 1) { + if (i < mixer->buffers.count - 1) { camu_audio_buffer_read(buf, data, req); } } for (;;) { - if (al_array_is_empty(mixer->buffers)) { + if (!mixer->buffers.count) { al_memset(data, 0, req); } else { - size_t signal; buf = al_array_last(mixer->buffers); *silence = false; + ptrdiff_t signal; if ((signal = camu_audio_buffer_read(buf, data, req)) < req) { #ifdef CAMU_MIXER_THREADED if (al_atomic_load(u8)(&mixer->queued, AL_ATOMIC_RELAXED)) { @@ -71,7 +71,7 @@ bool camu_mixer_init(struct camu_mixer *mixer, struct camu_audio *audio) mixer->audio = audio; mixer->audio->data_callback = data_callback; mixer->audio->userdata = mixer; - mixer->audio->init(mixer->audio, al_str_c("cmv")); + mixer->audio->init(mixer->audio, &al_str_c("cmv")); mixer->volume = 1.f; mixer->paused = true; mixer->empty_after = 0; @@ -156,21 +156,21 @@ static void remove_buffer_internal(struct camu_mixer *mixer, struct camu_audio_b static void run_queue_internal(struct camu_mixer *mixer) { struct camu_audio_buffer *buf; - if (mixer->rem_queue.size > 0) { + if (mixer->rem_queue.count > 0) { al_array_foreach(mixer->rem_queue, i, buf) { remove_buffer_internal(mixer, buf); } - mixer->rem_queue.size = 0; + mixer->rem_queue.count = 0; } - if (mixer->add_queue.size > 0) { - al_array_reserve(mixer->buffers, mixer->buffers.size + mixer->add_queue.size); + if (mixer->add_queue.count > 0) { + al_array_reserve(mixer->buffers, mixer->buffers.count + mixer->add_queue.count); al_array_foreach(mixer->add_queue, i, buf) { add_buffer_internal(mixer, buf); } - mixer->add_queue.size = 0; + mixer->add_queue.count = 0; } al_atomic_store(u8)(&mixer->queued, 0, AL_ATOMIC_RELAXED); - if (al_array_is_empty(mixer->buffers)) { + if (!mixer->buffers.count) { mixer->empty_after = MIXER_TRAILING_SILENCE; } else { mixer->empty_after = 0; @@ -192,7 +192,7 @@ void camu_mixer_add_buffer(struct camu_mixer *mixer, struct camu_audio_buffer *b al_array_foreach_rev(mixer->rem_queue, i, rbuf) { if (rbuf == buf) { al_array_remove_at(mixer->rem_queue, i); - bool queue_empty = mixer->add_queue.size + mixer->rem_queue.size == 0; + bool queue_empty = mixer->add_queue.count + mixer->rem_queue.count == 0; if (queue_empty) { al_atomic_store(u8)(&mixer->queued, 0, AL_ATOMIC_RELAXED); } @@ -223,7 +223,7 @@ void camu_mixer_remove_buffer(struct camu_mixer *mixer, struct camu_audio_buffer al_array_foreach_rev(mixer->add_queue, i, rbuf) { if (rbuf == buf) { al_array_remove_at(mixer->add_queue, i); - bool queue_empty = mixer->add_queue.size + mixer->rem_queue.size == 0; + bool queue_empty = mixer->add_queue.count + mixer->rem_queue.count == 0; if (queue_empty) { al_atomic_store(u8)(&mixer->queued, 0, AL_ATOMIC_RELAXED); } @@ -239,7 +239,7 @@ void camu_mixer_remove_buffer(struct camu_mixer *mixer, struct camu_audio_buffer nn_mutex_unlock(&mixer->mutex); #else remove_buffer_internal(mixer, buf); - if (al_array_is_empty(mixer->buffers)) { + if (!mixer->buffers.count) { mixer->empty_after = MIXER_TRAILING_SILENCE; } #endif |