mirror of
https://github.com/AndroidAudioMods/ViPERFX_RE.git
synced 2025-06-08 10:39:29 +08:00
Update
This commit is contained in:
parent
6d7fd4d9e6
commit
9303dfbc37
@ -43,7 +43,7 @@ static int32_t Viper_IProcess(effect_handle_t self, audio_buffer_t *inBuffer, au
|
|||||||
float *outBufferPtr = outBuffer->f32;
|
float *outBufferPtr = outBuffer->f32;
|
||||||
|
|
||||||
if (inBufferPtr != outBufferPtr) {
|
if (inBufferPtr != outBufferPtr) {
|
||||||
memcpy(outBufferPtr, inBufferPtr, outBuffer->frameCount * sizeof(float) * 2);
|
memcpy(outBufferPtr, inBufferPtr, outBuffer->frameCount * 2 * sizeof(float));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*return */pContext->viper->processBuffer(outBufferPtr, outBuffer->frameCount);
|
/*return */pContext->viper->processBuffer(outBufferPtr, outBuffer->frameCount);
|
||||||
@ -144,53 +144,50 @@ static int32_t Viper_ICommand(effect_handle_t self,
|
|||||||
case EFFECT_CMD_SET_PARAM: {
|
case EFFECT_CMD_SET_PARAM: {
|
||||||
auto pCmdParam = (effect_param_t *) pCmdData;
|
auto pCmdParam = (effect_param_t *) pCmdData;
|
||||||
|
|
||||||
if (pCmdParam->psize != sizeof(int32_t)) {
|
|
||||||
*(int *) pReplyData = -EINVAL;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: implement
|
// TODO: implement
|
||||||
}
|
}
|
||||||
case EFFECT_CMD_GET_PARAM: {
|
case EFFECT_CMD_GET_PARAM: {
|
||||||
auto *pCmdParam = (effect_param_t *) pCmdData;
|
auto *pCmdParam = reinterpret_cast<effect_param_t *>(pCmdData);
|
||||||
auto *pReplyParam = (effect_param_t *) pReplyData;
|
auto *pReplyParam = reinterpret_cast<effect_param_t *>(pReplyData);
|
||||||
|
|
||||||
if (pCmdParam->psize != sizeof(int)) break;
|
// The value offset of an effect parameter is computed by rounding up
|
||||||
|
// the parameter size to the next 32 bit alignment.
|
||||||
|
uint32_t vOffset = ((pCmdParam->psize + sizeof(int32_t) - 1) / sizeof(int32_t)) * sizeof(int32_t);
|
||||||
|
|
||||||
switch (*(int *) pCmdParam->data) {
|
memcpy(pReplyParam, pCmdParam, sizeof(effect_param_t) + pCmdParam->psize);
|
||||||
|
|
||||||
|
switch (*(uint32_t *) pCmdParam->data) {
|
||||||
case PARAM_GET_DRIVER_VERSION: {
|
case PARAM_GET_DRIVER_VERSION: {
|
||||||
pReplyParam->status = 0;
|
pReplyParam->status = 0;
|
||||||
//pReplyParam->psize = sizeof(int32_t); // TODO
|
pReplyParam->vsize = sizeof(uint32_t);
|
||||||
pReplyParam->vsize = sizeof(int32_t);
|
*(uint32_t *) (pReplyParam->data + vOffset) = 0x2050004; // As original, change as needed
|
||||||
*(int32_t *) pReplyParam->data = 0x2050004; // As original, change as needed
|
*replySize = sizeof(effect_param_t) + pReplyParam->psize + vOffset + pReplyParam->vsize;
|
||||||
*replySize = 0x14; // As original, TODO: calculate correctly
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case PARAM_GET_ENABLED: {
|
case PARAM_GET_ENABLED: {
|
||||||
pReplyParam->status = 0;
|
pReplyParam->status = 0;
|
||||||
//pReplyParam->psize = sizeof(int32_t); // TODO
|
|
||||||
pReplyParam->vsize = sizeof(int32_t);
|
pReplyParam->vsize = sizeof(int32_t);
|
||||||
*(int32_t *) pReplyParam->data = pContext->viper->enabled;
|
*(int32_t *) (pReplyParam->data + vOffset) = pContext->viper->enabled;
|
||||||
*replySize = 0x14; // As original, TODO: calculate correctly
|
*replySize = sizeof(effect_param_t) + pReplyParam->psize + vOffset + pReplyParam->vsize;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case PARAM_GET_CONFIGURE: {
|
case PARAM_GET_CONFIGURE: {
|
||||||
pReplyParam->status = 0;
|
pReplyParam->status = 0;
|
||||||
//pReplyParam->psize = sizeof(int32_t); // TODO
|
|
||||||
pReplyParam->vsize = sizeof(int32_t);
|
pReplyParam->vsize = sizeof(int32_t);
|
||||||
*(int32_t *) pReplyParam->data = 1; // TODO?
|
*(int32_t *) (pReplyParam->data + vOffset) = 1; // TODO?
|
||||||
*replySize = 0x14; // As original, TODO: calculate correctly
|
*replySize = sizeof(effect_param_t) + pReplyParam->psize + vOffset + pReplyParam->vsize;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case PARAM_GET_DRVCANWORK: {
|
case PARAM_GET_DRVCANWORK: {
|
||||||
pReplyParam->status = 0;
|
pReplyParam->status = 0;
|
||||||
//pReplyParam->psize = sizeof(int32_t); // TODO
|
|
||||||
pReplyParam->vsize = sizeof(int32_t);
|
pReplyParam->vsize = sizeof(int32_t);
|
||||||
*(int32_t *) pReplyParam->data = pContext->viper->init_ok;
|
*(int32_t *) (pReplyParam->data + vOffset) = pContext->viper->init_ok;
|
||||||
*replySize = 0x14; // As original, TODO: calculate correctly
|
*replySize = sizeof(effect_param_t) + pReplyParam->psize + vOffset + pReplyParam->vsize;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case PARAM_GET_STREAMING: {
|
case PARAM_GET_STREAMING: { // Is processing
|
||||||
struct timeval time{};
|
struct timeval time{};
|
||||||
gettimeofday(&time, nullptr);
|
gettimeofday(&time, nullptr);
|
||||||
|
|
||||||
@ -200,32 +197,22 @@ static int32_t Viper_ICommand(effect_handle_t self,
|
|||||||
}
|
}
|
||||||
case PARAM_GET_SAMPLINGRATE: {
|
case PARAM_GET_SAMPLINGRATE: {
|
||||||
pReplyParam->status = 0;
|
pReplyParam->status = 0;
|
||||||
//pReplyParam->psize = sizeof(int32_t); // TODO
|
pReplyParam->vsize = sizeof(uint32_t);
|
||||||
pReplyParam->vsize = sizeof(int32_t);
|
*(uint32_t *) (pReplyParam->data + vOffset) = pContext->viper->samplingRate;
|
||||||
*(uint32_t *) pReplyParam->data = pContext->viper->samplingRate;
|
*replySize = sizeof(effect_param_t) + pReplyParam->psize + vOffset + pReplyParam->vsize;
|
||||||
*replySize = 0x14; // As original, TODO: calculate correctly
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
case PARAM_GET_CONVUSABLE: {
|
|
||||||
pReplyParam->status = 0;
|
|
||||||
//pReplyParam->psize = sizeof(int32_t); // TODO
|
|
||||||
pReplyParam->vsize = sizeof(int32_t);
|
|
||||||
*(int32_t *) pReplyParam->data = 1; // TODO: Figure out what is this
|
|
||||||
*replySize = 0x14; // As original, TODO: calculate correctly
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
case PARAM_GET_CONVKNLID: {
|
case PARAM_GET_CONVKNLID: {
|
||||||
pReplyParam->status = 0;
|
pReplyParam->status = 0;
|
||||||
//pReplyParam->psize = sizeof(int32_t); // TODO
|
pReplyParam->vsize = sizeof(uint32_t);
|
||||||
pReplyParam->vsize = sizeof(int32_t);
|
*(uint32_t *) (pReplyParam->data + vOffset) = pContext->viper->convolver->GetKernelID();
|
||||||
*(uint32_t *) pReplyParam->data = pContext->viper->convolver->GetKernelID();
|
*replySize = sizeof(effect_param_t) + pReplyParam->psize + vOffset + pReplyParam->vsize;
|
||||||
*replySize = 0x14; // As original, TODO: calculate correctly
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
case EFFECT_CMD_GET_CONFIG: {
|
case EFFECT_CMD_GET_CONFIG: {
|
||||||
memcpy(pReplyData, &pContext->config, sizeof(effect_config_t));
|
*(effect_config_t *) pReplyData = pContext->config;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -290,7 +277,7 @@ Viper_Create(const effect_uuid_t *uuid, int32_t sessionId __unused, int32_t ioId
|
|||||||
|
|
||||||
auto *pContext = new ViperContext;
|
auto *pContext = new ViperContext;
|
||||||
Viper_Init(pContext);
|
Viper_Init(pContext);
|
||||||
*pHandle = (effect_handle_t) pContext;
|
*pHandle = reinterpret_cast<effect_handle_t>(pContext);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user