From 7cad9ab33a3ac07060bc971c3a2f9e86d15424ff Mon Sep 17 00:00:00 2001 From: Jeffrey Pfau Date: Sat, 21 Feb 2015 01:02:26 -0800 Subject: [PATCH] Qt: Fix QtMultimedia build with blip --- src/platform/qt/AudioDevice.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/platform/qt/AudioDevice.cpp b/src/platform/qt/AudioDevice.cpp index cff46b9b5..d02212d1b 100644 --- a/src/platform/qt/AudioDevice.cpp +++ b/src/platform/qt/AudioDevice.cpp @@ -25,9 +25,16 @@ void AudioDevice::setFormat(const QAudioFormat& format) { if (!GBAThreadHasStarted(m_context)) { return; } +#if RESAMPLE_LIBRARY == RESAMPLE_NN GBAThreadInterrupt(m_context); m_ratio = GBAAudioCalculateRatio(m_context->gba->audio.sampleRate, m_context->fpsTarget, format.sampleRate()); GBAThreadContinue(m_context); +#elif RESAMPLE_LIBRARY == RESAMPLE_BLIP_BUF + double fauxClock = GBAAudioCalculateRatio(1, m_context->fpsTarget, 1); + GBASyncLockAudio(&m_context->sync); + blip_set_rates(m_context->gba->audio.left, GBA_ARM7TDMI_FREQUENCY, format.sampleRate() * fauxClock); + blip_set_rates(m_context->gba->audio.right, GBA_ARM7TDMI_FREQUENCY, format.sampleRate() * fauxClock); +#endif } void AudioDevice::setInput(GBAThread* input) { @@ -43,7 +50,18 @@ qint64 AudioDevice::readData(char* data, qint64 maxSize) { return 0; } +#if RESAMPLE_LIBRARY == RESAMPLE_NN return GBAAudioResampleNN(&m_context->gba->audio, m_ratio, &m_drift, reinterpret_cast(data), maxSize / sizeof(GBAStereoSample)) * sizeof(GBAStereoSample); +#elif RESAMPLE_LIBRARY == RESAMPLE_BLIP_BUF + int available = blip_samples_avail(m_context->gba->audio.left); + if (available > maxSize / sizeof(GBAStereoSample)) { + available = maxSize / sizeof(GBAStereoSample); + } + blip_read_samples(m_context->gba->audio.left, &reinterpret_cast(data)->left, available, true); + blip_read_samples(m_context->gba->audio.right, &reinterpret_cast(data)->right, available, true); + GBASyncConsumeAudio(&m_context->sync); + return available * sizeof(GBAStereoSample); +#endif } qint64 AudioDevice::writeData(const char*, qint64) {