ViPERFX_RE/src/ViperContext.h

45 lines
1.1 KiB
C
Raw Normal View History

2023-05-15 02:15:46 +02:00
#pragma once
#include <vector>
#include <cstddef>
#include "essential.h"
#include "viper/ViPER.h"
2023-05-15 18:09:07 +02:00
#include <string>
2023-05-15 02:15:46 +02:00
class ViperContext {
public:
2023-05-16 02:10:42 +02:00
enum class DisableReason : int32_t {
UNKNOWN = -1,
NONE = 0,
2023-05-15 18:09:07 +02:00
INVALID_FRAME_COUNT,
INVALID_SAMPLING_RATE,
INVALID_CHANNEL_COUNT,
INVALID_FORMAT,
};
ViperContext();
int32_t handleCommand(uint32_t cmdCode, uint32_t cmdSize, void *pCmdData, uint32_t *replySize, void *pReplyData);
int32_t process(audio_buffer_t *inBuffer, audio_buffer_t *outBuffer);
private:
2023-05-15 02:15:46 +02:00
effect_config_t config;
2023-05-15 18:09:07 +02:00
DisableReason disableReason;
std::string disableReasonMessage;
2023-05-15 02:15:46 +02:00
// Processing buffer
std::vector<float> buffer;
size_t bufferFrameCount;
// Viper
bool enabled;
ViPER viper;
2023-05-15 18:09:07 +02:00
void handleSetConfig(effect_config_t *newConfig);
2023-05-15 02:15:46 +02:00
int32_t handleSetParam(effect_param_t *pCmdParam, void *pReplyData);
int32_t handleGetParam(effect_param_t *pCmdParam, effect_param_t *pReplyParam, uint32_t *pReplySize);
2023-05-15 18:09:07 +02:00
void setDisableReason(DisableReason reason);
void setDisableReason(DisableReason reason, std::string message);
2023-05-15 02:15:46 +02:00
};