mirror of https://github.com/mgba-emu/mgba.git
Qt: Fix QtMultimedia build with blip
This commit is contained in:
parent
86ff4b1577
commit
7cad9ab33a
|
@ -25,9 +25,16 @@ void AudioDevice::setFormat(const QAudioFormat& format) {
|
||||||
if (!GBAThreadHasStarted(m_context)) {
|
if (!GBAThreadHasStarted(m_context)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#if RESAMPLE_LIBRARY == RESAMPLE_NN
|
||||||
GBAThreadInterrupt(m_context);
|
GBAThreadInterrupt(m_context);
|
||||||
m_ratio = GBAAudioCalculateRatio(m_context->gba->audio.sampleRate, m_context->fpsTarget, format.sampleRate());
|
m_ratio = GBAAudioCalculateRatio(m_context->gba->audio.sampleRate, m_context->fpsTarget, format.sampleRate());
|
||||||
GBAThreadContinue(m_context);
|
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) {
|
void AudioDevice::setInput(GBAThread* input) {
|
||||||
|
@ -43,7 +50,18 @@ qint64 AudioDevice::readData(char* data, qint64 maxSize) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if RESAMPLE_LIBRARY == RESAMPLE_NN
|
||||||
return GBAAudioResampleNN(&m_context->gba->audio, m_ratio, &m_drift, reinterpret_cast<GBAStereoSample*>(data), maxSize / sizeof(GBAStereoSample)) * sizeof(GBAStereoSample);
|
return GBAAudioResampleNN(&m_context->gba->audio, m_ratio, &m_drift, reinterpret_cast<GBAStereoSample*>(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<GBAStereoSample*>(data)->left, available, true);
|
||||||
|
blip_read_samples(m_context->gba->audio.right, &reinterpret_cast<GBAStereoSample*>(data)->right, available, true);
|
||||||
|
GBASyncConsumeAudio(&m_context->sync);
|
||||||
|
return available * sizeof(GBAStereoSample);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
qint64 AudioDevice::writeData(const char*, qint64) {
|
qint64 AudioDevice::writeData(const char*, qint64) {
|
||||||
|
|
Loading…
Reference in New Issue