summaryrefslogtreecommitdiff
path: root/src/mixer
diff options
context:
space:
mode:
Diffstat (limited to 'src/mixer')
-rw-r--r--src/mixer/audio_miniaudio.c2
-rw-r--r--src/mixer/mixer.c28
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