Files
AC707N/SDK/audio/effect/node_param_update.c
2025-12-03 11:12:34 +08:00

274 lines
10 KiB
C

#ifdef SUPPORT_MS_EXTENSIONS
#pragma bss_seg(".node_param_update.data.bss")
#pragma data_seg(".node_param_update.data")
#pragma const_seg(".node_param_update.text.const")
#pragma code_seg(".node_param_update.text")
#endif
#include "jlstream.h"
#include "node_uuid.h"
#include "effects/effects_adj.h"
#include "node_param_update.h"
/* 各模块参数更新接口 */
void stero_mix_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
stereo_mix_gain_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_STEROMIX, node_name, &cfg, sizeof(cfg));
}
void surround_effect_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
surround_effect_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_SURROUND, node_name, &cfg, sizeof(cfg));
}
void crossover_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
crossover_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
if (cfg.parm.way_num == 3) {
jlstream_set_node_param(NODE_UUID_CROSSOVER, node_name, &cfg, sizeof(cfg));
} else {
jlstream_set_node_param(NODE_UUID_CROSSOVER_2BAND, node_name, &cfg, sizeof(cfg));
}
}
void band_merge_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
multi_mix_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_3BAND_MERGE, node_name, &cfg, sizeof(cfg));
}
void drc_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
wdrc_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_WDRC, node_name, &cfg, sizeof(cfg));
}
void bass_treble_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
bass_treble_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_BASS_TREBLE, node_name, &cfg, sizeof(cfg));
}
void autotune_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
autotune_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_AUTOTUNE, node_name, &cfg, sizeof(cfg));
}
void chorus_udpate_param(u8 mode_index, char *node_name, u8 cfg_index)
{
chorus_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_CHORUS, node_name, &cfg, sizeof(cfg));
}
void dynamic_eq_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
dynamic_eq_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_DYNAMIC_EQ, node_name, &cfg, sizeof(cfg));
}
void echo_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
echo_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_ECHO, node_name, &cfg, sizeof(cfg));
}
void howling_frequency_shift_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
howling_pitchshift_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_FREQUENCY_SHIFT, node_name, &cfg, sizeof(cfg));
}
void howling_suppress_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
notch_howling_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_HOWLING_SUPPRESS, node_name, &cfg, sizeof(cfg));
}
void gain_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
gain_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_GAIN, node_name, &cfg, sizeof(cfg));
}
void noisegate_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
noisegate_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_NOISEGATE, node_name, &cfg, sizeof(cfg));
}
void reverb_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
plate_reverb_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_PLATE_REVERB, node_name, &cfg, sizeof(cfg));
}
void reverb_advance_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
plate_reverb_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_PLATE_REVERB_ADVANCE, node_name, &cfg, sizeof(cfg));
}
void spectrum_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
struct spectrum_parm cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_SPECTRUM, node_name, &cfg, sizeof(cfg));
}
void stereo_widener_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
stereo_widener_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_STEREO_WIDENER, node_name, &cfg, sizeof(cfg));
}
void virtual_bass_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
virtual_bass_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_VBASS, node_name, &cfg, sizeof(cfg));
}
void voice_changer_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
voice_changer_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
return;
}
jlstream_set_node_param(NODE_UUID_VOICE_CHANGER, node_name, &cfg, sizeof(cfg));
}
void channel_expander_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
channel_expander_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_CHANNEL_EXPANDER, node_name, &cfg, sizeof(cfg));
}
void harmonic_exciter_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
harmonic_exciter_param_tool_set cfg = {0};
int ret = jlstream_read_form_data(mode_index, node_name, cfg_index, &cfg);
if (!ret) {
printf("read parm err, %s, %s\n", __func__, node_name);
return;
}
jlstream_set_node_param(NODE_UUID_HARMONIC_EXCITER, node_name, &cfg, sizeof(cfg));
}
/* eq参数更新接口 */
void eq_update_parm(u8 mode_index, char *node_name, u8 cfg_index)
{
struct cfg_info info = {0}; //节点配置相关信息(参数存储的目标地址、配置项大小)
int ret = jlstream_read_form_node_info_base(mode_index, node_name, cfg_index, &info);
if (!ret) {
struct eq_tool *tab = zalloc(info.size);
if (!jlstream_read_form_cfg_data(&info, tab)) {
printf("user eq cfg parm read err\n");
free(tab);
return;
}
//运行时,直接设置更新
struct eq_adj eff = {0};
eff.type = EQ_GLOBAL_GAIN_CMD;
eff.param.global_gain = tab->global_gain;
eff.fade_parm.fade_time = 10; //ms,淡入timer执行的周期
eff.fade_parm.fade_step = 0.1f; //淡入步进
jlstream_set_node_param(NODE_UUID_EQ, node_name, &eff, sizeof(eff));//更新总增益
eff.type = EQ_SEG_NUM_CMD;
eff.param.seg_num = tab->seg_num;
jlstream_set_node_param(NODE_UUID_EQ, node_name, &eff, sizeof(eff));//更新滤波器段数
for (int i = 0; i < tab->seg_num; i++) {
eff.type = EQ_SEG_CMD;
memcpy(&eff.param.seg, &tab->seg[i], sizeof(struct eq_seg_info));
jlstream_set_node_param(NODE_UUID_EQ, node_name, &eff, sizeof(eff));//更新滤波器系数
}
free(tab);
}
}