2022-08-24 01:08:20 +02:00
|
|
|
#pragma once
|
|
|
|
|
2022-08-30 00:39:15 +02:00
|
|
|
#include <cstdint>
|
2022-11-24 01:17:13 +01:00
|
|
|
#include "../utils/WaveBuffer.h"
|
|
|
|
#include "../utils/PConvSingle.h"
|
2022-08-30 00:39:15 +02:00
|
|
|
|
2022-08-24 01:08:20 +02:00
|
|
|
class Convolver {
|
2022-08-30 00:39:15 +02:00
|
|
|
public:
|
|
|
|
Convolver();
|
|
|
|
~Convolver();
|
|
|
|
|
|
|
|
void CommitKernelBuffer(uint32_t param_1, uint32_t param_2, uint32_t kernelId);
|
|
|
|
bool GetEnabled();
|
|
|
|
uint32_t GetKernelID();
|
2023-03-01 19:38:35 +01:00
|
|
|
void PrepareKernelBuffer(uint32_t param_1, uint32_t param_2, int32_t param_3);
|
2022-10-06 03:37:22 +02:00
|
|
|
uint32_t Process(float *source, float *dest, uint32_t frameSize);
|
2022-08-30 00:39:15 +02:00
|
|
|
void Reset();
|
|
|
|
void SetCrossChannel(float param_1);
|
|
|
|
void SetEnable(bool enabled);
|
2023-03-01 19:38:35 +01:00
|
|
|
void SetKernel(float *buf, uint32_t len);
|
|
|
|
void SetKernelBuffer(uint32_t param_1, float *buf, uint32_t len);
|
2022-08-30 00:39:15 +02:00
|
|
|
void SetKernelStereo(float *param_1, float *param_2, uint32_t param_3);
|
|
|
|
void SetSamplingRate(uint32_t param_1);
|
2022-11-24 01:17:13 +01:00
|
|
|
|
|
|
|
private:
|
|
|
|
WaveBuffer *waveBufferL;
|
|
|
|
WaveBuffer *waveBufferR;
|
|
|
|
PConvSingle kernelCh1;
|
|
|
|
PConvSingle kernelCh2;
|
|
|
|
PConvSingle kernelCh3;
|
|
|
|
PConvSingle kernelCh4;
|
|
|
|
char kernelFilePath[256];
|
|
|
|
uint32_t kernelId;
|
2023-03-01 19:38:35 +01:00
|
|
|
float *unknown1;
|
|
|
|
uint32_t unknown2;
|
|
|
|
uint32_t unknown3;
|
|
|
|
uint32_t unknown4;
|
|
|
|
uint32_t unknown5;
|
2022-11-24 01:17:13 +01:00
|
|
|
int isQuadChannel;
|
|
|
|
float crossChannel;
|
|
|
|
bool isValidCrossChannel;
|
|
|
|
uint32_t samplingRate;
|
|
|
|
bool enable;
|
2022-08-24 01:08:20 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
|