ISVP-SDK  3.12.0
Ingenic Smart Video Platform SDK
结构体 | 宏定义 | 枚举 | 枚举值 | 函数 | 变量

音频模块,包含录放音、音频编解码、音量及增益设置、回声消除、自动增益等功能 更多...

IMP_Audio 的协作图:

结构体

struct  IMPAudioIOAttr
 音频输入输出设备属性. 更多...
 
struct  IMPAudioFrame
 音频帧结构体. 更多...
 
struct  IMPAudioIChnParam
 音频通道参数结构体. 更多...
 
struct  IMPAudioOChnState
 音频输出通道的数据缓存状态结构体. 更多...
 
struct  IMPAudioStream
 定义音频码流结构体. 更多...
 
struct  IMPAudioEncChnAttr
 定义音频编码通道属性结构体. 更多...
 
struct  IMPAudioEncEncoder
 定义编码器属性结构体. 更多...
 
struct  IMPAudioDecChnAttr
 定义解码通道属性结构体. 更多...
 
struct  IMPAudioDecDecoder
 定义解码器属性结构体. 更多...
 
struct  IMPAudioAgcConfig
 定义AGC增益结构体. 更多...
 

宏定义

#define MAX_AUDIO_FRAME_NUM   50
 最大音频帧缓存数
 

枚举

enum  IMPBlock { BLOCK = 0, NOBLOCK = 1 }
 音频流阻塞类型 更多...
 
enum  IMPAudioSampleRate {
  AUDIO_SAMPLE_RATE_8000 = 8000, AUDIO_SAMPLE_RATE_16000 = 16000, AUDIO_SAMPLE_RATE_24000 = 24000, AUDIO_SAMPLE_RATE_44100 = 44100,
  AUDIO_SAMPLE_RATE_48000 = 48000, AUDIO_SAMPLE_RATE_96000 = 96000
}
 音频采样率定义. 更多...
 
enum  IMPAudioBitWidth { AUDIO_BIT_WIDTH_16 = 16 }
 音频采样精度定义. 更多...
 
enum  IMPAudioSoundMode { AUDIO_SOUND_MODE_MONO = 1, AUDIO_SOUND_MODE_STEREO = 2 }
 音频声道模式定义. 更多...
 
enum  IMPAudioPalyloadType {
  PT_PCM = 0, PT_G711A = 1, PT_G711U = 2, PT_G726 = 3,
  PT_AEC = 4, PT_ADPCM = 5, PT_MAX = 6
}
 定义音频净荷类型枚举.
 
enum  IMPAudioDecMode { ADEC_MODE_PACK = 0, ADEC_MODE_STREAM = 1 }
 定义解码方式. 更多...
 
enum  Level_ns { NS_LOW, NS_MODERATE, NS_HIGH, NS_VERYHIGH }
 定义噪声抑制级别. 更多...
 

函数

int IMP_AI_SetPubAttr (int audioDevId, IMPAudioIOAttr *attr)
 设置音频输入设备属性. 更多...
 
int IMP_AI_GetPubAttr (int audioDevId, IMPAudioIOAttr *attr)
 获取音频输入设备属性. 更多...
 
int IMP_AI_Enable (int audioDevId)
 启用音频输入设备. 更多...
 
int IMP_AI_Disable (int audioDevId)
 禁用音频输入设备. 更多...
 
int IMP_AI_EnableChn (int audioDevId, int aiChn)
 启用音频输入通道. 更多...
 
int IMP_AI_DisableChn (int audioDevId, int aiChn)
 禁用音频输入通道. 更多...
 
int IMP_AI_PollingFrame (int audioDevId, int aiChn, unsigned int timeout_ms)
 Polling音频流缓存. 更多...
 
int IMP_AI_GetFrame (int audioDevId, int aiChn, IMPAudioFrame *frm, IMPBlock block)
 获取音频帧. 更多...
 
int IMP_AI_ReleaseFrame (int audioDevId, int aiChn, IMPAudioFrame *frm)
 释放音频帧. 更多...
 
int IMP_AI_SetChnParam (int audioDevId, int aiChn, IMPAudioIChnParam *chnParam)
 设置音频输入通道参数. 更多...
 
int IMP_AI_GetChnParam (int audioDevId, int aiChn, IMPAudioIChnParam *chnParam)
 获取音频输入通道参数. 更多...
 
int IMP_AI_EnableAec (int aiDevId, int aiChn, int aoDevId, int aoChn)
 启用指定音频输入和音频输出的回声抵消功能. 更多...
 
int IMP_AI_DisableAec (int aiDevId, int aiChn)
 禁用回声抵消功能. 更多...
 
int IMP_AI_EnableNs (IMPAudioIOAttr *attr, int mode)
 启用指定音频输入的噪声抑制功能. 更多...
 
int IMP_AI_DisableNs (void)
 禁用噪声抑制功能. 更多...
 
int IMP_AI_EnableAgc (IMPAudioIOAttr *attr, IMPAudioAgcConfig agcConfig)
 启用音频输入的自动增益功能. 更多...
 
int IMP_AI_DisableAgc (void)
 禁用AI自动增益功能. 更多...
 
int IMP_AO_EnableAgc (IMPAudioIOAttr *attr, IMPAudioAgcConfig agcConfig)
 启用音频输出的自动增益功能. 更多...
 
int IMP_AO_DisableAgc (void)
 禁用AO自动增益功能. 更多...
 
int IMP_AI_EnableHpf (IMPAudioIOAttr *attr)
 启用音频输入的高通滤波. 更多...
 
int IMP_AI_DisableHpf (void)
 禁用AI高通滤波功能. 更多...
 
int IMP_AO_EnableHpf (IMPAudioIOAttr *attr)
 启用音频输出的高通滤波. 更多...
 
int IMP_AO_DisableHpf (void)
 禁用AO高通滤波功能. 更多...
 
int IMP_AO_SetPubAttr (int audioDevId, IMPAudioIOAttr *attr)
 设置音频输入输出设备属性. 更多...
 
int IMP_AO_GetPubAttr (int audioDevId, IMPAudioIOAttr *attr)
 获取音频输入输出设备属性. 更多...
 
int IMP_AO_Enable (int audioDevId)
 启用音频输出设备. 更多...
 
int IMP_AO_Disable (int audioDevId)
 禁用音频输出设备. 更多...
 
int IMP_AO_EnableChn (int audioDevId, int aoChn)
 启用音频输出通道. 更多...
 
int IMP_AO_DisableChn (int audioDevId, int aoChn)
 禁用音频输出通道. 更多...
 
int IMP_AO_SendFrame (int audioDevId, int aoChn, IMPAudioFrame *data, IMPBlock block)
 发送音频输出帧. 更多...
 
int IMP_AO_PauseChn (int audioDevId, int aoChn)
 暂停音频输出通道. 更多...
 
int IMP_AO_ResumeChn (int audioDevId, int aoChn)
 恢复音频输出通道. 更多...
 
int IMP_AO_ClearChnBuf (int audioDevId, int aoChn)
 清除音频输出通道中当前的音频数据缓存. 更多...
 
int IMP_AO_QueryChnStat (int audioDevId, int aoChn, IMPAudioOChnState *status)
 查询音频输出通道中当前的音频数据缓存状态. 更多...
 
int IMP_AENC_CreateChn (int aeChn, IMPAudioEncChnAttr *attr)
 创建音频编码通道. 更多...
 
int IMP_AENC_DestroyChn (int aeChn)
 销毁音频编码通道. 更多...
 
int IMP_AENC_SendFrame (int aeChn, IMPAudioFrame *frm)
 发送音频编码音频帧. 更多...
 
int IMP_AENC_PollingStream (int AeChn, unsigned int timeout_ms)
 Polling编码音频流缓存. 更多...
 
int IMP_AENC_GetStream (int aeChn, IMPAudioStream *stream, IMPBlock block)
 获取编码后码流. 更多...
 
int IMP_AENC_ReleaseStream (int aeChn, IMPAudioStream *stream)
 释放从音频编码通道获取的码流. 更多...
 
int IMP_AENC_RegisterEncoder (int *handle, IMPAudioEncEncoder *encoder)
 注册编码器. 更多...
 
int IMP_AENC_ReleaseEncoder (int *handle)
 注销编码器. 更多...
 
int IMP_ADEC_CreateChn (int adChn, IMPAudioDecChnAttr *attr)
 创建音频解码通道. 更多...
 
int IMP_ADEC_DestroyChn (int adChn)
 销毁音频解码通道. 更多...
 
int IMP_ADEC_SendStream (int adChn, IMPAudioStream *stream, IMPBlock block)
 发送音频码流到音频解码通道. 更多...
 
int IMP_ADEC_PollingStream (int AdChn, unsigned int timeout_ms)
 Polling解码音频流缓存. 更多...
 
int IMP_ADEC_GetStream (int adChn, IMPAudioStream *stream, IMPBlock block)
 获取解码后码流. 更多...
 
int IMP_ADEC_ReleaseStream (int adChn, IMPAudioStream *stream)
 释放从音频解码通道获取的码流. 更多...
 
int IMP_ADEC_ClearChnBuf (int adChn)
 清除音频解码通道中当前的音频数据缓存. 更多...
 
int IMP_ADEC_RegisterDecoder (int *handle, IMPAudioDecDecoder *decoder)
 注册解码器. 更多...
 
int IMP_ADEC_ReleaseDecoder (int *handle)
 注销解码器. 更多...
 
int IMP_AI_SetVol (int audioDevId, int aiChn, int aiVol)
 ACODEC配置. 更多...
 
int IMP_AI_GetVol (int audioDevId, int aiChn, int *vol)
 获取音频输入音量. 更多...
 
int IMP_AI_SetVolMute (int audioDevId, int aiChn, int mute)
 设置音频输入静音. 更多...
 
int IMP_AO_SetVol (int audioDevId, int aoChn, int aoVol)
 设置音频输出通道音量. 更多...
 
int IMP_AO_GetVol (int audioDevId, int aoChn, int *vol)
 获取音频输出通道音量. 更多...
 
int IMP_AO_SetVolMute (int audioDevId, int aoChn, int mute)
 设置音频输出静音. 更多...
 
int IMP_AI_SetGain (int audioDevId, int aiChn, int aiGain)
 设置音频输入增益. 更多...
 
int IMP_AI_GetGain (int audioDevId, int aiChn, int *aiGain)
 获取AI增益值. 更多...
 
int IMP_AO_SetGain (int audioDevId, int aoChn, int aoGain)
 设置音频输出增益. 更多...
 
int IMP_AO_GetGain (int audioDevId, int aoChn, int *aoGain)
 获取音频输出增益. 更多...
 
int IMP_AO_Soft_Mute (int audioDevId, int aoChn)
 输出软静音控制. 更多...
 
int IMP_AO_Soft_UNMute (int audioDevId, int aoChn)
 输出软撤销静音控制. 更多...
 
int IMP_AI_GetFrameAndRef (int audioDevId, int aiChn, IMPAudioFrame *frm, IMPAudioFrame *ref, IMPBlock block)
 获取音频帧和输出参考帧. 更多...
 
int IMP_AI_EnableAecRefFrame (int audioDevId, int aiChn, int audioAoDevId, int aoChn)
 打开获取参考帧. 更多...
 
int IMP_AI_DisableAecRefFrame (int audioDevId, int aiChn, int audioAoDevId, int aoChn)
 关闭获取参考帧. 更多...
 
int IMP_AO_CacheSwitch (int audioDevId, int aoChn, int cache_en)
 关闭音频播放缓存机制 更多...
 
int IMP_AO_FlushChnBuf (int audioDevId, int aoChn)
 等待最后一段音频数据播完; 更多...
 

变量

IMPAudioSampleRate samplerate
 音频采样率
 
IMPAudioBitWidth bitwidth
 音频采样精度
 
IMPAudioSoundMode soundmode
 音频声道模式
 
int frmNum
 缓存帧的数目, 取值范围:[2, MAX_AUDIO_FRAME_NUM]
 
int numPerFrm
 每帧的采样点个数
 
int chnCnt
 支持的通道数目
 
IMPAudioBitWidth bitwidth
 音频采样精度
 
IMPAudioSoundMode soundmode
 音频声道模式
 
uint32_t * virAddr
 音频帧数据虚拟地址
 
uint32_t phyAddr
 音频帧数据物理地址
 
int64_t timeStamp
 音频帧数据时间戳
 
int seq
 音频帧序号
 
int len
 音频帧长度
 
int usrFrmDepth
 音频帧缓存深度
 
int Rev
 保留
 
int chnTotalNum
 输出通道总的缓存块数
 
int chnFreeNum
 空闲缓存块数
 
int chnBusyNum
 被占用的缓存块数
 
uint8_t * stream
 数据流指针
 
uint32_t phyAddr
 数据流物理地址
 
int len
 音频码流长度
 
int64_t timeStamp
 时间戳
 
int seq
 音频码流序号
 
IMPAudioPalyloadType type
 音频净荷数据类型
 
int bufSize
 buf 大小,以帧为单位,[2~MAX_AUDIO_FRAME_NUM]
 
uint32_t * value
 协议属性指针
 
IMPAudioPalyloadType type
 编码协议类型
 
int maxFrmLen
 最大码流长度
 
char name [16]
 编码器名称
 
int(* openEncoder )(void *encoderAttr, void *encoder)
 
int(* encoderFrm )(void *encoder, IMPAudioFrame *data, unsigned char *outbuf, int *outLen)
 
int(* closeEncoder )(void *encoder)
 
IMPAudioPalyloadType type
 音频解码协议类型
 
int bufSize
 音频解码缓存大小
 
IMPAudioDecMode mode
 解码方式
 
void * value
 具体协议属性指针
 
IMPAudioPalyloadType type
 音频解码协议类型
 
char name [16]
 音频解码器名字
 
int(* openDecoder )(void *decoderAttr, void *decoder)
 
int(* decodeFrm )(void *decoder, unsigned char *inbuf, int inLen, unsigned short *outbuf, int *outLen, int *chns)
 
int(* getFrmInfo )(void *decoder, void *info)
 
int(* closeDecoder )(void *decoder)
 
int TargetLevelDbfs
 增益级别,取值为[0, 31], 这指目标音量级别,单位为db,为负值. 更多...
 
int CompressionGaindB
 设置最大的增益值,[0, 90],0代表无增益,值越大,增益越高. 更多...
 

详细描述

音频模块,包含录放音、音频编解码、音量及增益设置、回声消除、自动增益等功能

1 概述

音频功能包含音频输入,音频输出,回音消除,音频编码和音频解码5个模块.
其中音频输入和音频输出存在设备和通道的概念.其中一个MIC我们认为是一个Device,而一个MIC可以有多路Channel输入.
同样的一个SPK我们认为是一个放音Device,而一个SPK也可以有多路Channel输出.
当前版本的音频API一个Device只支持一个Channel.
回音消除位于音频输入接口中,具体说明在功能描述中体现.
音频编码当前音频API中支持PT_G711A、PT_G711U和PT_G726格式音频编码,如需要增加新的编码方式,需要注册编码器.
音频解码当前音频API中支持PT_G711A、PT_G711U和PT_G726格式音频解码,如需要增加新的解码方式,需要注册解码器.

2 功能描述

以下是对每个模块的具体说明

2.1 音频输入

音频输入Device ID 对应关系, 0: 对应数字MIC 1: 对应模拟MIC
音频输入Channel当前API只支持1个通道.
音频输入的音量设置,音量的取值范围为[-30 ~ 120]. -30代表静音,120表示将声音放大30dB,步长0.5dB.其中60是音量设置的一个临界点,
在这个值上软件不对音量做增加或减小,当音量值小于60时,每下降1,音量减小0.5dB;当音量值大于60时,上增加1,音量增加0.5dB。

2.2 音频输出

音频输出Device ID 对应关系, 0: 对应默认SPK 1: 对应其他SPK
音频输出Channel当前API只支持1个通道.
音频输出的音量设置,音量的取值范围为[-30 ~ 120]. -30代表静音,120表示将声音放大30dB,步长0.5dB.其中60是音量设置的一个临界点,
在这个值上软件不对音量做增加或减小,当音量值小于60时,每下降1,音量减小0.5dB;当音量值大于60时,上增加1,音量增加0.5dB.

2.3 回音消除

回音消除属于音频输入接口中的一项功能,所以在使能回音消除时必须先使能音频输入设备和通道.
回音消除当前支持音频采样率为8K和16K,一帧数据采样数为10ms音频数据的整数倍(如:8K采样率, 送入的数据为:8000 × 2 / 100 = 160byte的整数倍)。
回音消除针对不同的设备,不同的封装,回音消除会有不同的效果.
回音消除目前不支持自适应,所以针对不同设备有单独的回音消除参数,
回音消除的参数文件位于/etc/webrtc_profile.ini 配置文件中.
配置文件格式为如下(以下列出主要需要调试的三个参数):
[Set_Far_Frame]
Frame_V=0.3
[Set_Near_Frame]
Frame_V=0.1
delay_ms=150
其中第一个标签[Set_Far_Frame]中的内容代表远端参数,即SPK端放音数据参数.
Fram_V 代表音频幅值比例,调节该参数可以调节放音数据的幅度(此幅度只用于回音消除).
其中第一个标签[Set_Near_Frame]中的内容代表近端参数,即MIC端录音数据参数.
Fram_V 代表音频幅值比例,调节该参数可以调节录音数据的幅度(此幅度只用于回音消除).
delay_ms 由于软件和硬件具有延时性,且SPK与MIC的安放有一定距离,SPK放音数据会重新被MIC采样,所以SPK数据在MIC数据中体现会存在一定延时.
该时间代表放音数据在录音数据中的时间差.

2.4 音频编码

音频编码目前音频API支持PT_G711A、PT_G711U和PT_G726格式音频编码,如果需要增加新的编码方式,需要调用IMP_AENC_RegisterEncoder接口进行注册编码器.

2.5 音频解码

音频解码目前音频API支持PT_G711A、PT_G711U和PT_G726格式音频解码,如果需要增加新的解码方式,需要调用IMP_ADEC_RegisterDecoder接口进行注册解码器.

枚举类型说明

音频采样精度定义.

枚举值
AUDIO_BIT_WIDTH_16 

16bit采样精度

定义解码方式.

枚举值
ADEC_MODE_PACK 

Pack 方式解码

ADEC_MODE_STREAM 

Stream 方式解码

音频采样率定义.

枚举值
AUDIO_SAMPLE_RATE_8000 

8KHz采样率

AUDIO_SAMPLE_RATE_16000 

16KHz采样率

AUDIO_SAMPLE_RATE_24000 

24KHz采样率

AUDIO_SAMPLE_RATE_44100 

44.1KHz采样率

AUDIO_SAMPLE_RATE_48000 

48KHz采样率

AUDIO_SAMPLE_RATE_96000 

96KHz采样率

音频声道模式定义.

枚举值
AUDIO_SOUND_MODE_MONO 

单声道

AUDIO_SOUND_MODE_STEREO 

双声道

enum IMPBlock

音频流阻塞类型

枚举值
BLOCK 

阻塞

NOBLOCK 

非阻塞

enum Level_ns

定义噪声抑制级别.

枚举值
NS_LOW 

低等级级别噪声抑制

NS_MODERATE 

中等级级别噪声抑制

NS_HIGH 

高等级级别噪声抑制

NS_VERYHIGH 

最高等级级别噪声抑制

函数说明

int IMP_ADEC_ClearChnBuf ( int  adChn)

清除音频解码通道中当前的音频数据缓存.

参数
[in]adChn通道号.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_ADEC_CreateChn ( int  adChn,
IMPAudioDecChnAttr attr 
)

创建音频解码通道.

参数
[in]adChn通道号.
[in]attr通道属性指针.
返回值
0成功.
非0失败.
备注
示例代码
1 int adChn = 0;
2 IMPAudioDecChnAttr attr;
3 attr.type = PT_G711A;
4 attr.bufSize = 20;
5 attr.mode = ADEC_MODE_PACK;
6 ret = IMP_ADEC_CreateChn(adChn, &attr);
7 if(ret != 0) {
8  IMP_LOG_ERR(TAG, "imp audio decoder create channel failed\n");
9  return ret;
10 }
注意
无.
int IMP_ADEC_DestroyChn ( int  adChn)

销毁音频解码通道.

参数
[in]adChn通道号.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_ADEC_GetStream ( int  adChn,
IMPAudioStream stream,
IMPBlock  block 
)

获取解码后码流.

参数
[in]adChn通道号.
[in]stream获取解码码流.
[in]block阻塞/非阻塞标识.
返回值
0成功.
非0失败.
备注
示例代码见IMP_ADEC_SendStream函数说明.
注意
无.
int IMP_ADEC_PollingStream ( int  AdChn,
unsigned int  timeout_ms 
)

Polling解码音频流缓存.

参数
[in]AdChn音频解码输入通道号.
[in]timeout_msPolling超时时间.
返回值
0成功.
非0失败.
备注
无.
注意
在使用IMP_ADEC_GetStream之前使用该接口,当该接口调用成功之后表示音频 解码数据已经准备完毕,可以使用IMP_ADEC_GetStream获取解码完毕的数据.
int IMP_ADEC_RegisterDecoder ( int *  handle,
IMPAudioDecDecoder decoder 
)

注册解码器.

参数
[in]ps32handle注册句柄.
[in]decoder解码器属性结构体.
返回值
0成功.
非0失败.
备注
示例代码
1 int handle_g711a = 0;
2 IMPAudioDecDecoder my_decoder;
3 sprintf(my_decoder.name, "%s", "MY_G711A");
4 my_decoder.openDecoder = NULL; // 解码器回调函数
5 my_decoder.decodeFrm = MY_G711A_Decode_Frm; // 解码器回调函数
6 my_decoder.getFrmInfo = NULL; // 解码器回调函数
7 my_decoder.closeDecoder = NULL; // 解码器回调函数
8 
9 // 注册解码器
10 ret = IMP_ADEC_RegisterDecoder(&handle_g711a, &my_decoder);
11 if(ret != 0) {
12  IMP_LOG_ERR(TAG, "IMP_ADEC_RegisterDecoder failed\n");
13  return ret;
14 }
15 
16 // 使用解码器
17 int adChn = 0;
18 IMPAudioDecChnAttr attr;
19 attr.type = handle_g711a; // 解码type等于解码器注册返回的handle_g711a.
20 attr.bufSize = 20;
21 attr.mode = ADEC_MODE_PACK;
22 // 创建解码通道
23 ret = IMP_ADEC_CreateChn(adChn, &attr);
24 if(ret != 0) {
25  IMP_LOG_ERR(TAG, "imp audio decoder create channel failed\n");
26  return ret;
27 }
注意
注册之后使用方法和使用SDK自带解码器一样.
int IMP_ADEC_ReleaseDecoder ( int *  handle)

注销解码器.

参数
[in]ps32handle注册句柄(注册解码器时获得的句柄).
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_ADEC_ReleaseStream ( int  adChn,
IMPAudioStream stream 
)

释放从音频解码通道获取的码流.

参数
[in]adChn通道号.
[in]stream音频码流指针.
返回值
0成功.
非0失败.
备注
示例代码见IMP_ADEC_SendStream函数说明.
注意
无.
int IMP_ADEC_SendStream ( int  adChn,
IMPAudioStream stream,
IMPBlock  block 
)

发送音频码流到音频解码通道.

参数
[in]adChn通道号.
[in]stream音频码流.
[in]block阻塞/非阻塞标识.
返回值
0成功.
非0失败.
备注
示例代码
1 while(1) {
2  // 获取需要解码的数据
3  ret = fread(buf_g711, 1, IMP_AUDIO_BUF_SIZE/2, file_g711);
4  if(ret < IMP_AUDIO_BUF_SIZE/2)
5  break;
6 
7  // 发送解码数据
8  IMPAudioStream stream_in;
9  stream_in.stream = (uint8_t *)buf_g711;
10  stream_in.len = ret;
11  ret = IMP_ADEC_SendStream(adChn, &stream_in, BLOCK);
12  if(ret != 0) {
13  IMP_LOG_ERR(TAG, "imp audio encode send frame failed\n");
14  return ret;
15  }
16 
17  // 获取解码后的数据
18  IMPAudioStream stream_out;
19  ret = IMP_ADEC_GetStream(adChn, &stream_out, BLOCK);
20  if(ret != 0) {
21  IMP_LOG_ERR(TAG, "imp audio decoder get stream failed\n");
22  return ret;
23  }
24 
25  // 使用解码后的数据
26  fwrite(stream_out.stream, 1, stream_out.len, file_pcm);
27 
28  // 释放解码后的数据
29  ret = IMP_ADEC_ReleaseStream(adChn, &stream_out);
30  if(ret != 0) {
31  IMP_LOG_ERR(TAG, "imp audio decoder release stream failed\n");
32  return ret;
33  }
34 }
注意
无.
int IMP_AENC_CreateChn ( int  aeChn,
IMPAudioEncChnAttr attr 
)

创建音频编码通道.

参数
[in]aeChn通道号.
[in]attr音频编码通道属性指针.
返回值
0成功.
非0失败.
备注
示例代码
1 int AeChn = 0;
2 IMPAudioEncChnAttr attr;
3 attr.type = PT_G711A;
4 attr.bufSize = 20;
5 ret = IMP_AENC_CreateChn(AeChn, &attr);
6 if(ret != 0) {
7  IMP_LOG_ERR(TAG, "Audio encode create channel failed\n");
8  return ret;
9 }
注意
目前SDK支持PT_G711A、PT_G711U和PT_G726编码.
所以使用SDK中的编码,只需要attr.type = PT_G711A即可.
如何需要使用自定义的编码器,则需要注册编码器,示例代码在注册接口中说明.
int IMP_AENC_DestroyChn ( int  aeChn)

销毁音频编码通道.

参数
[in]aeChn通道号.
返回值
0成功.
非0失败.
备注
无.
注意
与IMP_AENC_CreateChn配套使用.
int IMP_AENC_GetStream ( int  aeChn,
IMPAudioStream stream,
IMPBlock  block 
)

获取编码后码流.

参数
[in]aeChn通道号.
[in]stream获取音频码流.
[in]block阻塞/非阻塞标识.
返回值
0成功.
非0失败.
备注
示例代码见IMP_AENC_SendFrame函数说明.
注意
无.
int IMP_AENC_PollingStream ( int  AeChn,
unsigned int  timeout_ms 
)

Polling编码音频流缓存.

参数
[in]AeChn音频编码输入通道号.
[in]timeout_msPolling超时时间.
返回值
0成功.
非0失败.
备注
无.
注意
在使用IMP_AENC_GetStream之前使用该接口,当该接口调用成功之后表示音频 编码数据已经准备完毕,可以使用IMP_AENC_GetStream获取编码完毕的数据.
int IMP_AENC_RegisterEncoder ( int *  handle,
IMPAudioEncEncoder encoder 
)

注册编码器.

参数
[in]ps32handle注册句柄.
[in]encoder编码器属性结构体.
返回值
0成功.
非0失败.
备注
示例代码
1 int handle_g711a = 0;
2 IMPAudioEncEncoder my_encoder;
3 my_encoder.maxFrmLen = 1024;
4 sprintf(my_encoder.name, "%s", "MY_G711A");
5 my_encoder.openEncoder = NULL; // 编码器回调函数
6 my_encoder.encoderFrm = MY_G711A_Encode_Frm; // 编码器回调函数
7 my_encoder.closeEncoder = NULL; // 编码器回调函数
8 
9 ret = IMP_AENC_RegisterEncoder(&handle_g711a, &my_encoder);
10 if(ret != 0) {
11  IMP_LOG_ERR(TAG, "IMP_AENC_RegisterEncoder failed\n");
12  return ret;
13 }
14 
15 // 使用编码器
16 int AeChn = 0;
17 IMPAudioEncChnAttr attr;
18 attr.type = handle_g711a; // 编码器type等于注册成功返回的handle_g711a的值即可.
19 attr.bufSize = 20;
20 ret = IMP_AENC_CreateChn(AeChn, &attr);
21 if(ret != 0) {
22  IMP_LOG_ERR(TAG, "imp audio encode create channel failed\n");
23  return ret;
24 }
注意
注册之后使用方法和使用SDK自带编码器一样.
int IMP_AENC_ReleaseEncoder ( int *  handle)

注销编码器.

参数
[in]ps32handle注册句柄(注册编码器时获得的句柄).
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AENC_ReleaseStream ( int  aeChn,
IMPAudioStream stream 
)

释放从音频编码通道获取的码流.

参数
[in]aeChn通道号.
[in]stream获取音频码流指针.
返回值
0成功.
非0失败.
备注
示例代码见IMP_AENC_SendFrame函数说明.
注意
无.
int IMP_AENC_SendFrame ( int  aeChn,
IMPAudioFrame frm 
)

发送音频编码音频帧.

参数
[in]aeChn通道号.
[in]frm音频帧结构体指针.
返回值
0成功.
非0失败.
备注
示例代码
1 while(1) {
2  // 读取一帧数据
3  ret = fread(buf_pcm, 1, IMP_AUDIO_BUF_SIZE, file_pcm);
4  if(ret < IMP_AUDIO_BUF_SIZE)
5  break;
6 
7  // 编码
8  IMPAudioFrame frm;
9  frm.virAddr = (uint32_t *)buf_pcm;
10  frm.len = ret;
11  ret = IMP_AENC_SendFrame(AeChn, &frm);
12  if(ret != 0) {
13  IMP_LOG_ERR(TAG, "imp audio encode send frame failed\n");
14  return ret;
15  }
16 
17  // 获取编码码流
18  IMPAudioStream stream;
19  ret = IMP_AENC_GetStream(AeChn, &stream, BLOCK);
20  if(ret != 0) {
21  IMP_LOG_ERR(TAG, "imp audio encode get stream failed\n");
22  return ret;
23  }
24 
25  // 使用编码码流
26  fwrite(stream.stream, 1, stream.len, file_g711);
27 
28  // 释放编码码流
29  ret = IMP_AENC_ReleaseStream(AeChn, &stream);
30  if(ret != 0) {
31  IMP_LOG_ERR(TAG, "imp audio encode release stream failed\n");
32  return ret;
33  }
34 }
注意
无.
int IMP_AI_Disable ( int  audioDevId)

禁用音频输入设备.

参数
[in]audioDevId音频设备号.
返回值
0成功.
非0失败.
备注
无.
注意
与IMP_AI_Enable配套使用,在系统休眠前必须执行IMP_AI_Disable.
int IMP_AI_DisableAec ( int  aiDevId,
int  aiChn 
)

禁用回声抵消功能.

参数
[in]aiDevId音频输入设备号.
[in]aiChn音频输入通道号.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AI_DisableAecRefFrame ( int  audioDevId,
int  aiChn,
int  audioAoDevId,
int  aoChn 
)

关闭获取参考帧.

参数
[in]audioDevId音频设备号.
[in]aiChn音频输入通道号.
[in]audioAoDevId音频输出设备号.
[in]aoChn音频输出通道号.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AI_DisableAgc ( void  )

禁用AI自动增益功能.

参数
无.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AI_DisableChn ( int  audioDevId,
int  aiChn 
)

禁用音频输入通道.

参数
[in]audioDevId音频设备号.
[in]aiChn音频输入通道号.
返回值
0成功.
非0失败.
备注
无.
注意
与IMP_AI_EnableChn配套使用.
int IMP_AI_DisableHpf ( void  )

禁用AI高通滤波功能.

参数
无.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AI_DisableNs ( void  )

禁用噪声抑制功能.

参数
无.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AI_Enable ( int  audioDevId)

启用音频输入设备.

参数
[in]audioDevId音频设备号.
返回值
0成功.
非0失败.
备注
无.
注意
在调用此函数前必须调用 IMP_AI_SetPubAttr().
int IMP_AI_EnableAec ( int  aiDevId,
int  aiChn,
int  aoDevId,
int  aoChn 
)

启用指定音频输入和音频输出的回声抵消功能.

参数
[in]aiDevId需要进行回声抵消的音频输入设备号.
[in]aiChn需要进行回声抵消的音频输入通道号.
[in]aoDevId需要进行回声抵消的音频输出设备号.
[in]aoChn需要进行回声抵消的音频输出通道号.
返回值
0成功.
非0失败.
备注
回音消除针对不同的设备,不同的封装,回音消除会有不同的效果.
回音消除目前不支持自适应,所以针对不同设备有单独的回音消除参数,
仅仅只是使能该功能效果不一定会好。
回音消除的参数文件位于/etc/webrtc_profile.ini 配置文件中.
配置文件格式为如下(以下列出主要需要调试的三个参数):
[Set_Far_Frame]
Frame_V=0.3
[Set_Near_Frame]
Frame_V=0.1
delay_ms=150
其中第一个标签[Set_Far_Frame]中的内容代表远端参数,即SPK端放音数据参数.
Fram_V 代表音频幅值比例,调节该参数可以调节放音数据的幅度(此幅度只用于回音消除).
其中第一个标签[Set_Near_Frame]中的内容代表近端参数,即MIC端录音数据参数.
Fram_V 代表音频幅值比例,调节该参数可以调节录音数据的幅度(此幅度只用于回音消除).
delay_ms 由于软件和硬件具有延时性,且SPK与MIC的安放有一定距离,SPK放音数据会重新被MIC采样,所以SPK数据在MIC数据中体现会存在一定延时.
该时间代表放音数据在录音数据中的时间差.
注意
实际上接口只会检查aiDevId和aiChn.但是最好在两个通道同时使能后调用.
在关闭音频输入通道的同时,回音消除功能同时关闭.如果再次使用需要再次打开.
int IMP_AI_EnableAecRefFrame ( int  audioDevId,
int  aiChn,
int  audioAoDevId,
int  aoChn 
)

打开获取参考帧.

参数
[in]audioDevId音频设备号.
[in]aiChn音频输入通道号.
[in]audioAoDevId音频输出设备号.
[in]aoChn音频输出通道号.
返回值
0成功.
非0失败.
备注
调用IMP_AI_GetFrameAndRef之前调用此接口.
注意
无.
int IMP_AI_EnableAgc ( IMPAudioIOAttr attr,
IMPAudioAgcConfig  agcConfig 
)

启用音频输入的自动增益功能.

参数
[in]attr需要进行自动增益的音频属性.
[in]agcConfig自动增益的参数配置,配置放大倍数.
返回值
0成功.
非0失败.
备注
需要注意agcConfig的配置,AGC的放大倍数主要有该参数配置,具体增益见IMPAudioAgcConfig说明.
需要注意的是,AGC可以将声音的增益放大,但是如果增益的参数不合适,就会导致破音等情况,请在具体使用时自行调整.
注意
回声消除包含了 AGC 功能,如果启用回声抵消,就不需要做自动增益.
int IMP_AI_EnableChn ( int  audioDevId,
int  aiChn 
)

启用音频输入通道.

参数
[in]audioDevId音频设备号.
[in]aiChn音频输入通道号.
返回值
0成功.
非0失败.
备注
无.
注意
必须先使能device.
int IMP_AI_EnableHpf ( IMPAudioIOAttr attr)

启用音频输入的高通滤波.

参数
[in]attr需要进行高通滤波的音频属性.
返回值
0成功.
非0失败.
备注
无.
注意
回声消除包含了 HPF 功能,如果启用回声抵消,就不需要做 HPF.
int IMP_AI_EnableNs ( IMPAudioIOAttr attr,
int  mode 
)

启用指定音频输入的噪声抑制功能.

参数
[in]attr需要进行噪声抑制的音频属性.
[in]mode噪声抑制的级别0 ~ 3,参见 Level_ns.
返回值
0成功.
非0失败.
备注
噪声抑制的mode参数表示噪声抑制的级别,范围为[0 ~ 3],级别越高,噪声抑制的越干净.
然而,噪声抑制的越干净同时也就会丢失更多的声音细节,所以这里有一个矛盾点,需要在
使用的时候进行权衡.
注意
回声消除包含了噪声抑制功能,如果启用回声抵消,就不需要做噪声抑制.
int IMP_AI_GetChnParam ( int  audioDevId,
int  aiChn,
IMPAudioIChnParam chnParam 
)

获取音频输入通道参数.

参数
[in]audioDevId音频设备号.
[in]aiChn音频输入通道号.
[out]chnParam音频通道参数.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AI_GetFrame ( int  audioDevId,
int  aiChn,
IMPAudioFrame frm,
IMPBlock  block 
)

获取音频帧.

参数
[in]audioDevId音频设备号.
[in]aiChn音频输入通道号.
[out]frm音频帧结构体指针.
[in]block阻塞/非阻塞标识.
返回值
0成功.
非0失败.
备注
示例代码
1 IMPAudioFrame frm;
2 // 获取音频帧
3 ret = IMP_AI_GetFrame(devID, chnID, &frm, BLOCK);
4 if(ret != 0) {
5  IMP_LOG_ERR(TAG, "Audio Get Frame Data error\n");
6  return ret;
7 }
8 
9 fwrite(frm.virAddr, 1, frm.len, record_file); // 使用音频帧数据
10 
11 // 释放音频帧
12 ret = IMP_AI_ReleaseFrame(devID, chnID, &frm);
13 if(ret != 0) {
14  IMP_LOG_ERR(TAG, "Audio release frame data error\n");
15  return ret;
16 }
注意
无.
int IMP_AI_GetFrameAndRef ( int  audioDevId,
int  aiChn,
IMPAudioFrame frm,
IMPAudioFrame ref,
IMPBlock  block 
)

获取音频帧和输出参考帧.

参数
[in]audioDevId音频设备号.
[in]aiChn音频输入通道号.
[out]frm音频帧结构体指针.
[out]ref参考帧结构体指针.
[in]block阻塞/非阻塞标识.
返回值
0成功.
非0失败.
备注
示例代码
1 IMPAudioFrame frm;
2 IMPAudioFrame ref;
3 // 获取音频帧和输出参考帧
4 ret = IMP_AI_GetFrameAndRef(devID, chnID, &frm, &ref, BLOCK);
5 if(ret != 0) {
6  IMP_LOG_ERR(TAG, "Audio Get Frame Data error\n");
7  return ret;
8 }
9 
10 fwrite(frm.virAddr, 1, frm.len, record_file); // 使用音频帧数据
11 fwrite(ref.virAddr, 1, ref.len, ref_file); // 使用音频参考帧
12 
13 // 释放音频帧
14 ret = IMP_AI_ReleaseFrame(devID, chnID, &frm);
15 if(ret != 0) {
16  IMP_LOG_ERR(TAG, "Audio release frame data error\n");
17  return ret;
18 }
注意
无.
int IMP_AI_GetGain ( int  audioDevId,
int  aiChn,
int *  aiGain 
)

获取AI增益值.

参数
[in]audioDevId音频输入设备号.
[in]aiChn音频输入通道号.
[out]aiGain音频输入增益.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AI_GetPubAttr ( int  audioDevId,
IMPAudioIOAttr attr 
)

获取音频输入设备属性.

参数
[in]audioDevId音频设备号.
[out]attr音频设备属性指针.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AI_GetVol ( int  audioDevId,
int  aiChn,
int *  vol 
)

获取音频输入音量.

参数
[in]aiDevId音频输入设备号.
[in]aiChn音频输入通道号.
[out]vol音频输入通道音量.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AI_PollingFrame ( int  audioDevId,
int  aiChn,
unsigned int  timeout_ms 
)

Polling音频流缓存.

参数
[in]audioDevId音频设备号.
[in]aiChn音频输入通道号.
[in]timeout_msPolling超时时间.
返回值
0成功.
非0失败.
备注
无.
注意
在使用IMP_AI_GetFrame之前使用该接口,当该接口调用成功之后表示音频 数据已经准备完毕,可以使用IMP_AI_GetFrame获取音频数据.
int IMP_AI_ReleaseFrame ( int  audioDevId,
int  aiChn,
IMPAudioFrame frm 
)

释放音频帧.

参数
[in]audioDevId音频设备号.
[in]aiChn音频输入通道号.
[in]frm音频帧结构体指针.
返回值
0成功.
非0失败.
备注
无.
注意
与IMP_AI_GetFrame配套使用.
int IMP_AI_SetChnParam ( int  audioDevId,
int  aiChn,
IMPAudioIChnParam chnParam 
)

设置音频输入通道参数.

参数
[in]audioDevId音频设备号.
[in]aiChn音频输入通道号.
[in]chnParam音频通道参数.
返回值
0成功.
非0失败.
备注
示例代码
1 int chnID = 0;
2 IMPAudioIChnParam chnParam;
3 chnParam.usrFrmDepth = 20; // the range of valid value is [2, MAX_AUDIO_FRAME_NUM].
4 ret = IMP_AI_SetChnParam(devID, chnID, &chnParam);
5 if(ret != 0) {
6  IMP_LOG_ERR(TAG, "set ai %d channel %d attr err: %d\n", devID, chnID, ret);
7  return ret;
8 }
注意
在IMP_AI_EnableChn前调用.
int IMP_AI_SetGain ( int  audioDevId,
int  aiChn,
int  aiGain 
)

设置音频输入增益.

参数
[in]audioDevId音频输入设备号.
[in]aiChn音频输入通道号.
[out]aiGain音频输入增益,范围[0 ~ 31].
返回值
0成功.
非0失败.
备注
无.
注意
aiGain的范围为[0 ~ 31],如果输入的值小于0,则aiGain的值将会
被设置为0.如果值大于31,aiGain的值会被设置为10.
int IMP_AI_SetPubAttr ( int  audioDevId,
IMPAudioIOAttr attr 
)

设置音频输入设备属性.

参数
[in]audioDevId音频设备号.
[in]attr音频设备属性指针.
返回值
0成功.
非0失败.
备注
示例代码
1 int devID = 1;
2 IMPAudioIOAttr attr;
3 attr.samplerate = AUDIO_SAMPLE_RATE_8000;
4 attr.bitwidth = AUDIO_BIT_WIDTH_16;
5 attr.soundmode = AUDIO_SOUND_MODE_MONO;
6 attr.frmNum = 20;
7 attr.numPerFrm = 400;
8 attr.chnCnt = 1;
9 ret = IMP_AI_SetPubAttr(devID, &attr);
10 if(ret != 0) {
11  IMP_LOG_ERR(TAG, "Set Audio in %d attr err: %d\n", devID, ret);
12  return ret;
13 }
注意
需要在IMP_AI_Enable前调用.
int IMP_AI_SetVol ( int  audioDevId,
int  aiChn,
int  aiVol 
)

ACODEC配置.

设置音频输入音量.

参数
[in]aiDevId音频输入设备号.
[in]aiChn音频输入通道号.
[in]aiVol音频输入音量大小.
返回值
0成功.
非0失败.
备注
音量的取值范围为[-30 ~ 120]. -30代表静音,120表示将声音放大30dB,步长0.5dB.
其中60是音量设置的一个临界点,在这个值上软件不对音量做增加或减小,当音量值小于60时,每下降1,音量减小0.5dB;当音量值大于60时,上增加1,音量增加0.5dB。

示例代码

1 int volume = 60;
2 ret = IMP_AI_SetVol(devID, chnID, volume);
3 if(ret != 0) {
4  IMP_LOG_ERR(TAG, "Audio Record set volume failed\n");
5  return ret;
6 }
注意
如果输入的aiVol超过了[-30 ~ 120]的范围,小于-30的将会取-30,大于120的取120.
int IMP_AI_SetVolMute ( int  audioDevId,
int  aiChn,
int  mute 
)

设置音频输入静音.

参数
[in]aiDevId音频输入设备号.
[in]aiChn音频输入通道号.
[out]mute音频输入静音标志, mute = 0:关闭静音, mute = 1:打开静音.
返回值
0成功.
非0失败.
备注
调用该接口可立刻静音.
注意
无.
int IMP_AO_CacheSwitch ( int  audioDevId,
int  aoChn,
int  cache_en 
)

关闭音频播放缓存机制

参数
[in]audioDevId音频设备号.
[in]aoChn音频输出通道号.
[in]cache_en缓存机制开启开关
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_ClearChnBuf ( int  audioDevId,
int  aoChn 
)

清除音频输出通道中当前的音频数据缓存.

参数
[in]audioDevId音频设备号.
[in]aoChn音频输出通道号.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_Disable ( int  audioDevId)

禁用音频输出设备.

参数
[in]audioDevId音频设备号.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_DisableAgc ( void  )

禁用AO自动增益功能.

参数
无.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_DisableChn ( int  audioDevId,
int  aoChn 
)

禁用音频输出通道.

参数
[in]audioDevId音频设备号.
[in]aoChn音频输出通道号.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_DisableHpf ( void  )

禁用AO高通滤波功能.

参数
无.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_Enable ( int  audioDevId)

启用音频输出设备.

参数
[in]audioDevId音频设备号.
返回值
0成功.
非0失败.
备注
无.
注意
在使能之前必须先调用IMP_AO_SetPubAttr.
int IMP_AO_EnableAgc ( IMPAudioIOAttr attr,
IMPAudioAgcConfig  agcConfig 
)

启用音频输出的自动增益功能.

参数
[in]attr需要进行自动增益的音频属性.
[in]agcConfig自动增益的参数配置,配置放大倍数.
返回值
0成功.
非0失败.
备注
需要注意agcConfig的配置,AGC的放大倍数主要有该参数配置,具体增益见IMPAudioAgcConfig说明.
需要注意的是,AGC可以将声音的增益放大,但是如果增益的参数不合适,就会导致破音等情况,请在具体使用时自行调整.
注意
回声消除包含了 AGC 功能,如果启用回声抵消,就不需要做自动增益.
int IMP_AO_EnableChn ( int  audioDevId,
int  aoChn 
)

启用音频输出通道.

参数
[in]audioDevId音频设备号.
[in]aoChn音频输出通道号.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_EnableHpf ( IMPAudioIOAttr attr)

启用音频输出的高通滤波.

参数
[in]attr需要进行高通滤波的音频属性.
返回值
0成功.
非0失败.
备注
无.
注意
回声消除包含了 HPF 功能,如果启用回声抵消,就不需要做 HPF.
int IMP_AO_FlushChnBuf ( int  audioDevId,
int  aoChn 
)

等待最后一段音频数据播完;

参数
[in]audioDevId音频设备号.
[in]aoChn音频输出通道号.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_GetGain ( int  audioDevId,
int  aoChn,
int *  aoGain 
)

获取音频输出增益.

参数
[in]audioDevId音频输出设备号.
[in]aoChn音频输出通道号.
[out]aoGain音频输出增益.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_GetPubAttr ( int  audioDevId,
IMPAudioIOAttr attr 
)

获取音频输入输出设备属性.

参数
[in]audioDevId音频设备号.
[out]attr音频输出设备属性指针.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_GetVol ( int  audioDevId,
int  aoChn,
int *  vol 
)

获取音频输出通道音量.

参数
[in]audioDevId音频设备号.
[in]aoChn音频输出通道号.
[out]aoVol音频输出音量.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_PauseChn ( int  audioDevId,
int  aoChn 
)

暂停音频输出通道.

参数
[in]audioDevId音频设备号.
[in]aoChn音频输出通道号.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_QueryChnStat ( int  audioDevId,
int  aoChn,
IMPAudioOChnState status 
)

查询音频输出通道中当前的音频数据缓存状态.

参数
[in]audioDevId音频设备号.
[in]aoChn音频输出通道号.
[out]status缓存状态结构体指针.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_ResumeChn ( int  audioDevId,
int  aoChn 
)

恢复音频输出通道.

参数
[in]audioDevId音频设备号.
[in]aoChn音频输出通道号.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_SendFrame ( int  audioDevId,
int  aoChn,
IMPAudioFrame data,
IMPBlock  block 
)

发送音频输出帧.

参数
[in]audioDevId音频设备号.
[in]aoChn音频输出通道号.
[in]data音频帧结构体指针.
[in]block阻塞/非阻塞标识.
返回值
0成功.
非0失败.
备注
示例代码
1 while(1) {
2  size = fread(buf, 1, IMP_AUDIO_BUF_SIZE, play_file);
3  if(size < IMP_AUDIO_BUF_SIZE)
4  break;
5 
6  IMPAudioFrame frm;
7  frm.virAddr = (uint32_t *)buf;
8  frm.len = size;
9  ret = IMP_AO_SendFrame(devID, chnID, &frm, BLOCK);
10  if(ret != 0) {
11  IMP_LOG_ERR(TAG, "send Frame Data error\n");
12  return ret;
13  }
14 }
注意
无.
int IMP_AO_SetGain ( int  audioDevId,
int  aoChn,
int  aoGain 
)

设置音频输出增益.

参数
[in]audioDevId音频输出设备号.
[in]aoChn音频输出通道号.
[out]aoGain音频输出增益,范围[0 ~ 0xcb].
返回值
0成功.
非0失败.
备注
无.
注意
aoGain的范围为[0 ~ 31],如果输入的值小于0,则aoGain的值将会
被设置为0.如果值大于31,aoGain的值会被设置为31.
int IMP_AO_SetPubAttr ( int  audioDevId,
IMPAudioIOAttr attr 
)

设置音频输入输出设备属性.

参数
[in]audioDevId音频设备号.
[in]attr音频输出设备属性指针.
返回值
0成功.
非0失败.
备注
无.
注意
无.
int IMP_AO_SetVol ( int  audioDevId,
int  aoChn,
int  aoVol 
)

设置音频输出通道音量.

参数
[in]audioDevId音频设备号.
[in]aoChn音频输出通道号.
[in]aoVol音频输出音量.
返回值
0成功.
非0失败.
备注
音量的取值范围为[-30 ~ 120]. -30代表静音,120表示将声音放大30dB,步长0.5dB.
其中60是音量设置的一个临界点,在这个值上软件不对音量做增加或减小,当音量值小于60时,每下降1,音量减小0.5dB;当音量值大于60时,上增加1,音量增加0.5dB。
注意
如果输入的aoVol超过了[-30 ~ 120]的范围,小于-30的将会取-30,大于120的取120.
int IMP_AO_SetVolMute ( int  audioDevId,
int  aoChn,
int  mute 
)

设置音频输出静音.

参数
[in]audioDevId音频输出设备号.
[in]aoChn音频输出通道号.
[out]mute音频输出静音标志, mute = 0:关闭静音, mute = 1:打开静音.
返回值
0成功.
非0失败.
备注
调用该接口可立刻静音.
注意
无.
int IMP_AO_Soft_Mute ( int  audioDevId,
int  aoChn 
)

输出软静音控制.

参数
[in]audioDevId音频输出设备号.
[in]aoChn音频输出通道号.
返回值
0成功.
非0失败.
备注
调用该接口不会立马静音,会从正常放音状态缓慢将音量降低,直到真正静音.
注意
无.
int IMP_AO_Soft_UNMute ( int  audioDevId,
int  aoChn 
)

输出软撤销静音控制.

参数
[in]audioDevId音频输出设备号.
[in]aoChn音频输出通道号.
返回值
0成功.
非0失败.
备注
调用该接口不会立马恢复当前音量,会从静音状态缓慢将音量增加,直到音量达到设置好的音量.
注意
无.

变量说明

int CompressionGaindB

设置最大的增益值,[0, 90],0代表无增益,值越大,增益越高.

int TargetLevelDbfs

增益级别,取值为[0, 31], 这指目标音量级别,单位为db,为负值.

值越小,音量越大.