68 lines
1.7 KiB
C
68 lines
1.7 KiB
C
|
||
#ifndef _AUDIO_DEC_MIC2PCM_H_
|
||
#define _AUDIO_DEC_MIC2PCM_H_
|
||
|
||
|
||
#include "asm/includes.h"
|
||
#include "media/includes.h"
|
||
#include "system/includes.h"
|
||
#include "app_config.h"
|
||
|
||
|
||
#define FIXED_SAMPLE_RATE 44100 //固定采样率
|
||
|
||
#define PCM_DEC_IN_SIZE 512
|
||
#define PCM_DEC_IN_CBUF_SIZE (PCM_DEC_IN_SIZE * 8)
|
||
|
||
struct pcm_dec_hdl {
|
||
struct audio_decoder decoder;
|
||
struct audio_res_wait wait; // 资源等待句柄
|
||
struct audio_mixer_ch mix_ch; // 叠加句柄
|
||
struct audio_eq_drc *eq_drc; //eq drc句柄
|
||
struct audio_src_handle *hw_src; //硬件src
|
||
cbuffer_t pcm_in_cbuf;
|
||
u8 *p_in_cbuf_buf;
|
||
u8 channel;
|
||
u8 output_ch;
|
||
u16 two_ch_remain_len;
|
||
u16 two_ch_remain_addr;
|
||
u16 sample_rate;
|
||
u32 coding_type;
|
||
u32 src_out_sr;
|
||
u32 id; // 唯一标识符,随机值
|
||
u32 start : 1; // 正在解码
|
||
};
|
||
|
||
#define ADC_MIC_BUF_NUM 2
|
||
#define ADC_MIC_IRQ_POINTS 256
|
||
#define ADC_MIC_BUFS_SIZE (ADC_MIC_BUF_NUM * ADC_MIC_IRQ_POINTS)
|
||
|
||
struct adc_mic_hdl {
|
||
u8 idle;
|
||
struct audio_adc_output_hdl adc_output;
|
||
struct adc_mic_ch mic_ch;
|
||
s16 adc_buf[ADC_MIC_BUFS_SIZE]; //align 4Bytes
|
||
};
|
||
|
||
|
||
/* 打开mic监听功能,设置mic采样率 */
|
||
void audio_mic2pcm_dec_open(u16 sample_rate);
|
||
|
||
/* 关闭mic2pcm监听功能,释放资源 */
|
||
void mic2pcm_dec_close(void);
|
||
|
||
/* mic状态切换,设置mic的采样率,打开mic返回1, 关闭mic返回 0, */
|
||
int mic2pcm_open_status_switch(u16 sample_rate);
|
||
|
||
/* 判断mic是否处于运行状态, 运行返回1,未运行返回0 */
|
||
int mic2pcm_dec_is_running(void);
|
||
|
||
/* mic监听功能重启, 即关闭后延时XX ms重启mic监听 */
|
||
void mic2pcm_dec_reset(u16 sample_rate, u16 time);
|
||
|
||
|
||
|
||
#endif
|
||
|
||
|