Files
2025-12-03 11:12:34 +08:00

156 lines
4.5 KiB
C

#ifdef SUPPORT_MS_EXTENSIONS
#pragma bss_seg(".bass_treble.data.bss")
#pragma data_seg(".bass_treble.data")
#pragma const_seg(".bass_treble.text.const")
#pragma code_seg(".bass_treble.text")
#endif
#include "system/includes.h"
#include "media/includes.h"
#include "app_config.h"
#include "audio_config.h"
#include "effects/effects_adj.h"
#include "jlstream.h"
#include "user_cfg_id.h"
#include "online_db_deal.h"
#include "bass_treble.h"
#include "scene_switch.h"
#if TCFG_BASS_TREBLE_NODE_ENABLE
struct bass_treble_default_parm music_bass_treble_par = {0};
struct bass_treble_default_parm mic_bass_treble_par = {0};
/*
*获取musicc 高低音增益,节点调用
* */
int get_music_bass_treble_parm(int arg)
{
int ret = 0;
struct bass_treble_default_parm *par = (struct bass_treble_default_parm *)arg;
if (par->type & BASS_TREBLE_PARM_GET) {
if (music_bass_treble_par.type & (BASS_TREBLE_PARM_SET | BASS_TREBLE_PARM_SET_GLOBAL_GAIN)) {
memcpy(par, &music_bass_treble_par, sizeof(*par));
ret = 1;
}
}
par->cfg_index = 0;
par->mode_index = get_current_scene();
return ret;
}
__attribute__((weak))
u8 get_mic_current_scene()
{
return 0;
}
/*
*获取mic 高低音增益,节点调用
* */
int get_mic_bass_treble_parm(int arg)
{
int ret = 0;
struct bass_treble_default_parm *par = (struct bass_treble_default_parm *)arg;
if (par->type & BASS_TREBLE_PARM_GET) {
if (mic_bass_treble_par.type & (BASS_TREBLE_PARM_SET | BASS_TREBLE_PARM_SET_GLOBAL_GAIN)) {
memcpy(par, &mic_bass_treble_par, sizeof(*par));
ret = 1;
}
}
par->cfg_index = 0;
par->mode_index = get_mic_current_scene();
return ret;
}
/*音乐高低音更新接口,gain以外的参数在调音节点界面配置
*name:节点名称
*index:0 低音 1 中音 2 高音
*gain:增益 dB (-48~48),大于0的增益,存在失真风险,谨慎使用
*注意:gain范围由配置文件限制
* */
void music_bass_treble_eq_udpate(char *name, enum bass_treble_eff index, float gain)
{
struct bass_treble_parm par = {0};
par.type = BASS_TREBLE_PARM_SET;
par.gain.index = index;
par.gain.gain = gain;
jlstream_set_node_param(NODE_UUID_BASS_TREBLE, name, &par, sizeof(par));
music_bass_treble_par.type |= par.type;
music_bass_treble_par.gain[par.gain.index] = par.gain.gain;//记录增益
}
/*mic高低音更新接口,gain以外的参数在调音节点界面配置
*name :节点名称
*index:0 低音 1 中音 2 高音
*gain:增益 dB (-48~48),大于0的增益,存在失真风险,谨慎使用
*注意:gain范围由配置文件限制
* */
void mic_bass_treble_eq_udpate(char *name, enum bass_treble_eff index, float gain)
{
struct bass_treble_parm par = {0};
par.type = BASS_TREBLE_PARM_SET;
par.gain.index = index;
par.gain.gain = gain;
jlstream_set_node_param(NODE_UUID_BASS_TREBLE, name, &par, sizeof(par));
mic_bass_treble_par.type |= par.type;
mic_bass_treble_par.gain[par.gain.index] = par.gain.gain;//记录增益
}
/*
*音乐高低音eq,总增益更新
* */
void music_bass_treble_set_global_gain(char *name, float global_gain)
{
struct bass_treble_parm par = {0};
par.type = BASS_TREBLE_PARM_SET_GLOBAL_GAIN;
par.global_gain = global_gain;
jlstream_set_node_param(NODE_UUID_BASS_TREBLE, name, &par, sizeof(par));
music_bass_treble_par.type |= par.type;
music_bass_treble_par.global_gain = par.global_gain;
}
/*
*mic高低音eq,总增益更新
* */
void mic_bass_treble_set_global_gain(char *name, float global_gain)
{
struct bass_treble_parm par = {0};
par.type = BASS_TREBLE_PARM_SET_GLOBAL_GAIN;
par.global_gain = global_gain;
jlstream_set_node_param(NODE_UUID_BASS_TREBLE, name, &par, sizeof(par));
mic_bass_treble_par.type |= par.type;
mic_bass_treble_par.global_gain = par.global_gain;
}
//兼容旧接口
void mix_out_high_bass(u32 cmd, struct high_bass *hb)
{
if (cmd == AUDIO_EQ_HIGH) {
music_bass_treble_eq_udpate("MusicBassTre", BASS_TREBLE_HIGH, hb->gain);
} else if (cmd == AUDIO_EQ_BASS) {
music_bass_treble_eq_udpate("MusicBassTre", BASS_TREBLE_LOW, hb->gain);
}
}
void test_mid_eq(void *p)
{
static float gain = 0;
if (gain++ > 0) {
gain = -48;
}
printf("====gain %d\n", (int)gain);
music_bass_treble_eq_udpate("MusicBassTre", BASS_TREBLE_MID, gain);
/* float test_global_gain = -1; */
/* music_bass_treble_set_global_gain("MusicBassTre", test_global_gain); */
}
#endif