Files
AC707N/SDK/interface/media/effects/audio_crossover.h
T
2025-12-03 11:12:34 +08:00

66 lines
2.2 KiB
C

#ifndef _DRC_API_H_
#define _DRC_API_H_
#include "typedef.h"
#include "system/init.h"
#include "media/audio_stream.h"
//分频器 crossover:
typedef struct _CrossOverParam_TOOL_SET {
int way_num; //段数
int N; //阶数
int low_freq; //低中分频点
int high_freq; //高中分频点
} CrossOverUpdateParam;
//分频器 crossover:
typedef struct _CrossOverParam_EFF_TOOL_SET {
CrossOverUpdateParam parm;
} crossover_param_tool_set;
struct audio_crossover_filter_info {
CrossOverUpdateParam *crossover;
};
typedef int (*audio_crossover_filter_cb)(void *drc, struct audio_crossover_filter_info *info);
struct audio_crossover_param {
u32 sample_rate; //数据采样率
u8 channel; //通道数
u8 run32bit; //是否支持32bit 的输入数据处理 1:使能 0:不使能
u8 core;
u8 Qval;
CrossOverUpdateParam *crossover;
void *priv;
int (*output[3])(void *priv, void *data, u32 len);
};
struct audio_crossover {
void *work_buf;
CrossOverUpdateParam *crossover_inside;//
CrossOverUpdateParam *crossover;//
void *hw_crossover[3];
void *priv;
int (*output[3])(void *priv, void *data, u32 len);
u32 sample_rate; //采样率
u8 channel; //通道数
u8 run32bit; //是否使能32bit位宽数据处理1:使能 0:不使能
u8 updata; //系数更标志
u8 core;
u8 Qval;
};
struct audio_crossover *audio_crossover_open(struct audio_crossover_param *param);
int audio_crossover_close(struct audio_crossover *hdl);
int audio_crossover_run(struct audio_crossover *hdl, s16 *indata, s16 *outdata0, s16 *outdata1, s16 *outdata2, u32 len);//每次处理多个频带
void audio_crossover_update_parm(struct audio_crossover *hdl, CrossOverUpdateParam *crossover_parm);
void audio_crossover_set_bit_wide(struct audio_crossover *hdl, u8 run32bit);
int audio_crossover_run_pro(struct audio_crossover *hdl, s16 *indata, s16 *outdata, u32 len, int band_tar);//每次处理一个频带
int audio_crossover_flush_out(struct audio_crossover *hdl);
#endif