Program Listing for File audioCallbacks.cpp
↰ Return to documentation for file (include\MainObjects\audioPlayer\audioCallbacks.cpp
)
#include "audioCallbacks.hpp"
#include "FrameCalc.hpp"
#include <cstring>
std::optional<float *>
audioEngineDataStruct::getNowfPointer(const unsigned long frameCount)
{
if ((nowCursor + frameCount) > maxCursor) {
return std::nullopt;
} else {
return pcmDataPoint->data() + (nowCursor * CHANNEL);
}
}
void
audioEngineDataStruct::CountUp(const unsigned long frameCount)
{
nowCursor += frameCount;
consumedFrames += frameCount;
}
void
audioEngineDataStruct::GetAfterManFX(float *pOutput,
const unsigned long frameCount)
{
if (!FXManualPannel.has_value()) {
return;
}
auto getres = getNowfPointer(frameCount);
if (!getres.has_value()) {
return;
}
if (FXManualPannel->checkSomethingOn()) {
toFaustStylePCM(faustPcmPP, getres.value(), frameCount);
FXManualPannel->addFX(faustPcmPP, frameCount);
toLRStylePCM(faustPcmPP, pOutput, frameCount);
} else {
memcpy(pOutput, getres.value(), frameCount * CHANNEL * sizeof(float));
}
}
void
audioEngineDataStruct::Get(float *pOutput, unsigned long frameCount)
{
auto getres = getNowfPointer(frameCount);
if (!getres.has_value()) {
return;
}
memcpy(pOutput, getres.value(), frameCount * CHANNEL * sizeof(float));
}
void
FullPreRender_callback(ma_device *pDevice,
void *pOutput,
const void *pInput,
ma_uint32 frameCount)
{
auto rendered =
reinterpret_cast<audioEngineDataStruct *>(pDevice->pUserData);
rendered->Get(reinterpret_cast<float *>(pOutput), frameCount);
rendered->CountUp(frameCount);
}
void
HybridRender_callback(ma_device *pDevice,
void *pOutput,
const void *pInput,
ma_uint32 frameCount)
{
auto rendered =
reinterpret_cast<audioEngineDataStruct *>(pDevice->pUserData);
rendered->GetAfterManFX(reinterpret_cast<float *>(pOutput), frameCount);
rendered->MusCtrPannel->GetPCMFrames(reinterpret_cast<float *>(pOutput),
frameCount);
rendered->CountUp(frameCount);
}
void
FullManualRender_callback(ma_device *pDevice,
void *pOutput,
const void *pInput,
ma_uint32 frameCount)
{
auto Data = reinterpret_cast<audioEngineDataStruct *>(pDevice->pUserData);
Data->MusCtrPannel->GetPCMFrames(reinterpret_cast<float *>(pOutput),
frameCount);
}