summaryrefslogtreecommitdiff
path: root/src/mixer
diff options
context:
space:
mode:
authorAndrew Opalach <andrew@akon.city> 2024-11-17 15:26:17 -0500
committerAndrew Opalach <andrew@akon.city> 2024-11-17 15:26:17 -0500
commit588b6d8bfa1b2efdebf8c424c86f6069cceafa41 (patch)
tree545308813e9ae19d3293b78c7cb39555a64c0abe /src/mixer
parent58d38d767442c83e31ae6dbaea7b1fc8ccb00633 (diff)
downloadcamu-588b6d8bfa1b2efdebf8c424c86f6069cceafa41.tar.gz
camu-588b6d8bfa1b2efdebf8c424c86f6069cceafa41.tar.bz2
camu-588b6d8bfa1b2efdebf8c424c86f6069cceafa41.zip
Rough subtitles implementation, improve buffers
Signed-off-by: Andrew Opalach <andrew@akon.city>
Diffstat (limited to 'src/mixer')
-rw-r--r--src/mixer/audio_miniaudio.c15
-rw-r--r--src/mixer/audio_null.c2
2 files changed, 17 insertions, 0 deletions
diff --git a/src/mixer/audio_miniaudio.c b/src/mixer/audio_miniaudio.c
index 4cb67de..beda5f1 100644
--- a/src/mixer/audio_miniaudio.c
+++ b/src/mixer/audio_miniaudio.c
@@ -75,10 +75,16 @@ static bool audio_miniaudio_init(struct camu_audio *audio, str *name)
ma_log_register_callback(&ma->log, ma_log_callback_init(miniaudio_log_callback, NULL));
ma->context_config = ma_context_config_init();
ma->context_config.pLog = &ma->log;
+#ifdef MA_ENABLE_ALSA
ma->context_config.alsa.useVerboseDeviceEnumeration = MA_TRUE;
+#endif
+#ifdef MA_ENABLE_PULSEAUDIO
char *c_str = al_str_to_c_str(name);
ma->context_config.pulse.pApplicationName = c_str;
ma->context_config.pulse.tryAutoSpawn = MA_TRUE;
+#else
+ (void)name;
+#endif
s32 ret = ma_context_init(backends, AL_ARRAY_SIZE(backends), &ma->context_config, &ma->context);
if (ret != MA_SUCCESS) {
al_log_error("audio_miniaudio", "Failed to initialize context (%d).", ret);
@@ -171,8 +177,15 @@ static bool audio_miniaudio_configure_stream(struct camu_audio *audio, void *opa
ma->config.noPreSilencedOutputBuffer = MA_TRUE;
ma->config.noFixedSizedCallback = MA_TRUE;
ma->config.noClip = MA_TRUE;
+#ifdef MA_ENABLE_WASAPI
ma->config.wasapi.noAutoConvertSRC = MA_FALSE;
ma->config.wasapi.noDefaultQualitySRC = MA_FALSE;
+#endif
+#ifdef MA_ENABLE_AAUDIO
+ ma->config.aaudio.usage = ma_aaudio_usage_media;
+ ma->config.aaudio.contentType = ma_aaudio_content_type_music;
+ ma->config.aaudio.allowedCapturePolicy = ma_aaudio_allow_capture_by_all;
+#endif
s32 ret = ma_device_init(&ma->context, &ma->config, &ma->device);
if (ret != MA_SUCCESS) {
al_log_error("audio_miniaudio", "Failed to initialize device (%d).", ret);
@@ -214,7 +227,9 @@ static void audio_miniaudio_free(struct camu_audio **audio)
struct camu_audio_miniaudio *ma = (struct camu_audio_miniaudio *)*audio;
ma_device_uninit(&ma->device);
ma_context_uninit(&ma->context);
+#ifdef MA_ENABLE_PULSEAUDIO
al_free((void *)ma->context_config.pulse.pApplicationName);
+#endif
al_free(ma);
*audio = NULL;
}
diff --git a/src/mixer/audio_null.c b/src/mixer/audio_null.c
index ac2846a..a6eeea3 100644
--- a/src/mixer/audio_null.c
+++ b/src/mixer/audio_null.c
@@ -14,7 +14,9 @@ static void audio_null_pick_format(struct camu_audio *audio, struct camu_resampl
(void)na;
fmt->req.format = fmt->in.format;
fmt->req.channel_count = fmt->in.channel_count;
+#ifdef CAMU_HAVE_FFMPEG
av_channel_layout_default(&fmt->req.channel_layout, fmt->in.channel_count);
+#endif
fmt->req.sample_rate = fmt->in.sample_rate;
}