Files
99_7018_lmx/include_lib/media/audio_gain_process.h
2025-10-29 13:10:02 +08:00

64 lines
2.1 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#ifndef __AUDIO_GAIN_PORCESS__H
#define __AUDIO_GAIN_PORCESS__H
#include "media/audio_stream.h"
#ifndef RUN_NORMAL
#define RUN_NORMAL 0
#endif
#ifndef RUN_BYPASS
#define RUN_BYPASS 1
#endif
struct aud_gain_parm {
float gain;//增加多少dB
u8 channel;//通道数
u8 indata_inc;//channel ==1 ?1:2;
u8 outdata_inc;//channel ==1 ?1:2;
u8 bit_wide;//0:16bit 132bit
u16 gain_name;
};
struct aud_gain_parm_update {
float gain;//增加多少dB powf(10, 界面值gain / 20.0f)
};
struct aud_gain_process {
struct audio_stream_entry entry; // 音频流入口
struct list_head hentry; //
struct aud_gain_parm parm;
u8 status; //内部运行状态机
u8 update; //设置参数更新标志
};
struct aud_gain_process *audio_gain_process_open(struct aud_gain_parm *parm);
void audio_gain_process_run(struct aud_gain_process *hdl, s16 *data, int len);
void audio_gain_process_close(struct aud_gain_process *hdl);
void audio_gain_process_update(u16 gain_name, struct aud_gain_parm_update *parm);
void audio_gain_process_bypass(u16 gain_name, u8 bypass);
struct aud_gain_process *get_cur_gain_hdl_by_name(u32 gain_name);
/*
* *in:输入数据地址
* *out:输出数据地址
* gain:dB值(powf(10, 界面值gain / 20.0f))
* channel:输入数据通道数
* Indatainc:同个声道相邻两点的差值 channel ==1 ?1:2
* OutdataInc:同个声道相邻两点的差值 channel ==1 ?1:2
* per_channel_npoint:一个声道的点数
* */
extern void GainProcess_16Bit(short *in, short *out, float gain, int channel, int IndataInc, int OutdataInc, int per_channel_npoint); //16位宽
/*
* *in:输入数据地址
* *out:输出数据地址
* gain:dB值powf(10, 界面值gain / 20.0f)
* channel:输入数据通道数
* Indatainc:同个声道相邻两点的差值 channel ==1 ?1:2
* OutdataInc:同个声道相邻两点的差值 channel ==1 ?1:2
* per_channel_npoint:一个声道的点数
* */
extern void GainProcess_32Bit(int *in, int *out, float gain, int channel, int IndataInc, int OutdataInc, int per_channel_npoint); //32位宽
#endif