diff --git a/include/mgba/core/interface.h b/include/mgba/core/interface.h index a480db6e5..fadaaa29d 100644 --- a/include/mgba/core/interface.h +++ b/include/mgba/core/interface.h @@ -194,6 +194,11 @@ struct mAVStream { void (*postAudioBuffer)(struct mAVStream*, struct blip_t* left, struct blip_t* right); }; +struct mStereoSample { + int16_t left; + int16_t right; +}; + struct mKeyCallback { uint16_t (*readKeys)(struct mKeyCallback*); bool requireOpposingDirections; diff --git a/include/mgba/internal/gba/audio.h b/include/mgba/internal/gba/audio.h index 65336b299..26fe69992 100644 --- a/include/mgba/internal/gba/audio.h +++ b/include/mgba/internal/gba/audio.h @@ -11,6 +11,7 @@ CXX_GUARD_START #include +#include #include #include #include @@ -94,11 +95,6 @@ struct GBAAudio { struct mTimingEvent sampleEvent; }; -struct GBAStereoSample { - int16_t left; - int16_t right; -}; - struct GBAMP2kADSR { uint8_t attack; uint8_t decay; @@ -278,7 +274,7 @@ struct GBAAudioMixer { double tempo; double frame; - struct GBAStereoSample last; + struct mStereoSample last; }; void GBAAudioInit(struct GBAAudio* audio, size_t samples); diff --git a/src/gba/extra/audio-mixer.c b/src/gba/extra/audio-mixer.c index fe9ed6901..503fdc8ad 100644 --- a/src/gba/extra/audio-mixer.c +++ b/src/gba/extra/audio-mixer.c @@ -125,7 +125,7 @@ static void _stepSample(struct GBAAudioMixer* mixer, struct GBAMP2kTrack* track) for (nSample = 0; nSample < updates; ++nSample) { int8_t sample = memory->load8(cpu, sampleBase + sampleI, 0); - struct GBAStereoSample stereo = { + struct mStereoSample stereo = { (sample * track->channel->leftVolume * track->channel->envelopeV) >> 9, (sample * track->channel->rightVolume * track->channel->envelopeV) >> 9 }; @@ -277,7 +277,7 @@ void _mp2kStep(struct GBAAudioMixer* mixer) { uint32_t interval = mixer->p->sampleInterval / OVERSAMPLE; int i; for (i = 0; i < OVERSAMPLE; ++i) { - struct GBAStereoSample sample = {0}; + struct mStereoSample sample = {0}; size_t track; for (track = 0; track < MP2K_MAX_SOUND_CHANNELS; ++track) { if (!mixer->activeTracks[track].channel->status) { diff --git a/src/platform/psp2/psp2-context.c b/src/platform/psp2/psp2-context.c index 82f0c6029..f860bc4a1 100644 --- a/src/platform/psp2/psp2-context.c +++ b/src/platform/psp2/psp2-context.c @@ -88,7 +88,7 @@ static vita2d_texture* backdrop = 0; #define PSP2_AUDIO_BUFFER_SIZE (PSP2_SAMPLES * 16) static struct mPSP2AudioContext { - struct GBAStereoSample buffer[PSP2_AUDIO_BUFFER_SIZE]; + struct mStereoSample buffer[PSP2_AUDIO_BUFFER_SIZE]; size_t writeOffset; size_t readOffset; size_t samples; @@ -255,7 +255,7 @@ static void _postAudioBuffer(struct mAVStream* stream, blip_t* left, blip_t* rig } ConditionWait(&audioContext.cond, &audioContext.mutex); } - struct GBAStereoSample* samples = &audioContext.buffer[audioContext.writeOffset]; + struct mStereoSample* samples = &audioContext.buffer[audioContext.writeOffset]; blip_read_samples(left, &samples[0].left, PSP2_SAMPLES, true); blip_read_samples(right, &samples[0].right, PSP2_SAMPLES, true); audioContext.samples += PSP2_SAMPLES; diff --git a/src/platform/qt/AudioDevice.cpp b/src/platform/qt/AudioDevice.cpp index 9baf12712..74f863444 100644 --- a/src/platform/qt/AudioDevice.cpp +++ b/src/platform/qt/AudioDevice.cpp @@ -45,17 +45,17 @@ qint64 AudioDevice::readData(char* data, qint64 maxSize) { return 0; } - maxSize /= sizeof(GBAStereoSample); + maxSize /= sizeof(mStereoSample); mCoreSyncLockAudio(&m_context->impl->sync); int available = std::min({ blip_samples_avail(m_context->core->getAudioChannel(m_context->core, 0)), maxSize, std::numeric_limits::max() }); - blip_read_samples(m_context->core->getAudioChannel(m_context->core, 0), &reinterpret_cast(data)->left, available, true); - blip_read_samples(m_context->core->getAudioChannel(m_context->core, 1), &reinterpret_cast(data)->right, available, true); + blip_read_samples(m_context->core->getAudioChannel(m_context->core, 0), &reinterpret_cast(data)->left, available, true); + blip_read_samples(m_context->core->getAudioChannel(m_context->core, 1), &reinterpret_cast(data)->right, available, true); mCoreSyncConsumeAudio(&m_context->impl->sync); - return available * sizeof(GBAStereoSample); + return available * sizeof(mStereoSample); } qint64 AudioDevice::writeData(const char*, qint64) { diff --git a/src/platform/switch/main.c b/src/platform/switch/main.c index 0a40d3a90..25b6f6eca 100644 --- a/src/platform/switch/main.c +++ b/src/platform/switch/main.c @@ -115,7 +115,7 @@ static float gyroZ = 0; static float tiltX = 0; static float tiltY = 0; -static struct GBAStereoSample audioBuffer[N_BUFFERS][BUFFER_SIZE / 4] __attribute__((__aligned__(0x1000))); +static struct mStereoSample audioBuffer[N_BUFFERS][BUFFER_SIZE / 4] __attribute__((__aligned__(0x1000))); static enum ScreenMode { SM_PA, @@ -584,7 +584,7 @@ static void _postAudioBuffer(struct mAVStream* stream, blip_t* left, blip_t* rig blip_clear(right); return; } - struct GBAStereoSample* samples = audioBuffer[audioBufferActive]; + struct mStereoSample* samples = audioBuffer[audioBufferActive]; blip_read_samples(left, &samples[0].left, SAMPLES, true); blip_read_samples(right, &samples[0].right, SAMPLES, true); audoutAppendAudioOutBuffer(&audoutBuffer[audioBufferActive]); diff --git a/src/platform/wii/main.c b/src/platform/wii/main.c index 8b3ed8226..36bb9abfc 100644 --- a/src/platform/wii/main.c +++ b/src/platform/wii/main.c @@ -141,7 +141,7 @@ static void* framebuffer[2] = { 0, 0 }; static int whichFb = 0; static struct AudioBuffer { - struct GBAStereoSample samples[SAMPLES] __attribute__((__aligned__(32))); + struct mStereoSample samples[SAMPLES] __attribute__((__aligned__(32))); volatile size_t size; } audioBuffer[BUFFERS] = {0}; static volatile int currentAudioBuffer = 0; @@ -685,8 +685,8 @@ static void _audioDMA(void) { if (buffer->size != SAMPLES) { return; } - DCFlushRange(buffer->samples, SAMPLES * sizeof(struct GBAStereoSample)); - AUDIO_InitDMA((u32) buffer->samples, SAMPLES * sizeof(struct GBAStereoSample)); + DCFlushRange(buffer->samples, SAMPLES * sizeof(struct mStereoSample)); + AUDIO_InitDMA((u32) buffer->samples, SAMPLES * sizeof(struct mStereoSample)); buffer->size = 0; currentAudioBuffer = (currentAudioBuffer + 1) % BUFFERS; }