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
|
|
|
};
|