mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-08 19:49:32 -04:00
Merge branch 'main' into 26-02-27-allocator-isolation
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
#include "Z2AudioCS/SpkMixingBuffer.h"
|
||||
|
||||
#include "Z2AudioCS/SpkSound.h"
|
||||
#include "JSystem/JAudio2/JASCalc.h"
|
||||
#include "JSystem/JAudio2/JASGadget.h"
|
||||
#include "JSystem/JAudio2/JASHeapCtrl.h"
|
||||
|
||||
SpkMixingBuffer::SpkMixingBuffer(JKRHeap* heap) {
|
||||
JUT_ASSERT(25, heap);
|
||||
for (s32 chan = 0; chan < ARRAY_SIZE(mBuffer); chan++) {
|
||||
mBuffer[chan] = JKR_NEW_ARGS (heap, 0) s16[cSamplesPerAudioPacket];
|
||||
JUT_ASSERT(29, mBuffer[chan]);
|
||||
bzeroBuffer(chan);
|
||||
}
|
||||
}
|
||||
|
||||
void SpkMixingBuffer::mix(s32 chan, s16* src, s32 len, f32 weight,
|
||||
s32 offset) {
|
||||
JUT_ASSERT(61, chan < 4);
|
||||
JUT_ASSERT(62, mBuffer[chan]);
|
||||
JUT_ASSERT(63, src);
|
||||
JUT_ASSERT(64, offset >= 0);
|
||||
JUT_ASSERT(65, (offset+len) <= cSamplesPerAudioPacket);
|
||||
|
||||
for (s32 i = 0; i < len; i++) {
|
||||
s32 sample = mBuffer[chan][i + offset];
|
||||
s16 srcSample = src[i];
|
||||
sample += (s32)(srcSample * weight);
|
||||
mBuffer[chan][i + offset] = JASCalc::clamp<s16, s32>(sample);
|
||||
}
|
||||
}
|
||||
|
||||
s16* SpkMixingBuffer::getSamples(s32 chan) const {
|
||||
JUT_ASSERT(97, chan < 4);
|
||||
JUT_ASSERT(98, mBuffer[chan]);
|
||||
return mBuffer[chan];
|
||||
}
|
||||
|
||||
bool SpkMixingBuffer::update(s32 chan) {
|
||||
bzeroBuffer(chan);
|
||||
SpkSoundHolder* sound_holder = JASGlobalInstance<SpkSoundHolder>::getInstance();
|
||||
JUT_ASSERT(121, sound_holder);
|
||||
bool result = sound_holder->update(chan);
|
||||
return result;
|
||||
}
|
||||
|
||||
void SpkMixingBuffer::bzeroBuffer(s32 chan) {
|
||||
JUT_ASSERT(143, chan < 4);
|
||||
JUT_ASSERT(144, mBuffer[chan]);
|
||||
JASCalc::bzero(mBuffer[chan], cSamplesPerAudioPacket * sizeof(s16));
|
||||
}
|
||||
Reference in New Issue
Block a user