![]() |
CI130X SDK API手册
2.2.0
本手册用于描述CI130X SDK各个组件和驱动API
|
音频CODEC管理模块,初始化IIS和CODEC的接口 更多...
结构体 | |
| struct | cm_sound_info_t |
| 音频信息结构体 更多... | |
| struct | cm_play_buffer_info_t |
| 音频buffer信息结构体 更多... | |
| struct | cm_record_buffer_info_t |
| 音频buffer信息结构体 更多... | |
| union | cm_pcm_buffer_info_t |
| struct | cm_codec_interface_t |
| CODEC操作接口 更多... | |
| struct | cm_iis_info_t |
| union | cm_iis_info_t.__unnamed__ |
| struct | codec_hw_info_str |
| CODEC相关信息结构体 更多... | |
宏定义 | |
| #define | MAX_CODEC_NUM 2 |
| 设置音频CODEC管理模块支持的最大CODEC数量。 更多... | |
类型定义 | |
| typedef struct codec_hw_info_str | cm_codec_hw_info_t |
| CODEC相关信息结构体 更多... | |
枚举 | |
| enum | audio_play_card_over_sample_t { AUDIO_PLAY_OVER_SAMPLE_128 = 128, AUDIO_PLAY_OVER_SAMPLE_192 = 192, AUDIO_PLAY_OVER_SAMPLE_256 = 256, AUDIO_PLAY_OVER_SAMPLE_384 = 384 } |
| 定义放音设备支持的过采样率。 更多... | |
| enum | audio_play_card_clk_source_t { AUDIO_PLAY_CLK_SOURCE_IPCORE = 0, AUDIO_PLAY_CLK_SOURCE_EXT_OSC = 1, AUDIO_PLAY_CLK_SOURCE_INTER_RC = 2, AUDIO_PLAY_CLK_SOURCE_PAD_IN = 3, AUDIO_PLAY_CLK_SOURCE_OSC_OR_INEER_RC = 0xff } |
| 定义放音设备可选择的时钟源。 更多... | |
| enum | cm_iis_txrx_t { CM_IIS_TX, CM_IIS_RX } |
| enum | io_direction_t { CODEC_INPUT, CODEC_OUTPUT } |
| enum | cm_io_ctrl_cmd_t { CM_IOCTRL_SET_DAC_GAIN, CM_IOCTRL_SET_ADC_GAIN, CM_IOCTRL_ALC_ENABLE, CM_IOCTRL_ALC_DISABLE, CM_IOCTRL_DAC_ENABLE, CM_IOCTRL_MUTE } |
| enum | cm_cha_sel_t { CM_CHA_LEFT = 1, CM_CHA_RIGHT = 2, CM_CHA_TWO_CHA = 3 } |
函数 | |
| void | cm_init () |
| 初始化音频CODEC管理模块。 更多... | |
| int | cm_reg_codec (int codec_index, cm_codec_hw_info_t *p_codec_hw_info) |
| 向音频CODEC管理模块注册一个音频CODEC。 更多... | |
| int | cm_register_codec_callback (int codec_index, void(*callback_func)(void)) |
| 注册指定音频CODEC的回调函数,用于异步调用方式,CODEC会在特定事件发生时,调用此函数与调用者通信。 更多... | |
| int | cm_config_pcm_buffer (int codec_index, io_direction_t io_dir, cm_pcm_buffer_info_t *pcm_buffer_info) |
| 配置指定音频CODEC的PCM数据buffer。 更多... | |
| int | cm_config_codec (int codec_index, io_direction_t io_dir, cm_sound_info_t *sound_info) |
| 配置指定音频CODEX的音频信息。 更多... | |
| int | cm_start_codec (int codec_index, io_direction_t io_dir) |
| 启动指定的音频CODEC播放或录音。 更多... | |
| int | cm_stop_codec (int codec_index, io_direction_t io_dir) |
| 停止指定的音频CODEC播放或录音。 更多... | |
| int | cm_read_codec (int codec_index, uint32_t *data_addr, uint32_t *data_size) |
| 从指定的音频CODEC读取录制的PCM数据,此接口为同步调用接口,如果当前没有PCM数据可以读取,此调用会被阻塞,直到有PCM数据可读取时才返回。 更多... | |
| int | cm_write_codec (int codec_index, void *pcm_buffer, uint32_t wait_tick) |
| 向指定的音频CODEC写入数据。 更多... | |
| void | cm_get_pcm_buffer (int codec_index, uint32_t *ret_buf, uint32_t wait_tick) |
| 从指定的音频CODEC获取空闲的PCM数据buffer,用于填充PCM数据后再通过cm_write_codec接口写入音频CODEC。 更多... | |
| int | cm_release_pcm_buffer (int codec_index, io_direction_t io_dir, void *pcm_buffer) |
| 向指定的音频CODEC释放一个PCM数据buffer,释放的PCM数据buffer必须是通过cm_read_codec读取到的数据buffer,用于循环录制音频数据。 更多... | |
| int | cm_set_codec_dac_gain (int codec_index, cm_cha_sel_t cha, int gain) |
| 设置指定的音频CODEC的DAC(播放)的指定通道的增益。 更多... | |
| int | cm_set_codec_adc_gain (int codec_index, cm_cha_sel_t cha, int gain) |
| 设置指定的音频CODEC的ADC(录音)的指定通道的增益。 更多... | |
| int | cm_set_codec_alc (int codec_index, cm_cha_sel_t cha, FunctionalState alc_enable) |
| 设置指定的音频CODEC录音时是否开启ALC功能。 更多... | |
| int | cm_set_codec_dac_enable (int codec_index, int channel, FunctionalState en) |
| 设置指定的音频CODEC的DAC功能是否使能。 更多... | |
| int | cm_get_codec_empty_buffer_number (int codec_index, io_direction_t io_dir) |
| 获取指定的音频CODEC的空闲buffer数量。 更多... | |
| int | cm_get_codec_busy_buffer_number (int codec_index, io_direction_t io_dir) |
| 获取指定的音频CODEC的忙buffer数量。 更多... | |
| int | cm_set_codec_mute (int codec_index, io_direction_t io_dir, int channel_flag, FunctionalState en) |
| 设置静音模式。 更多... | |
| int | icodec_init (cm_codec_hw_info_t *codec_hw_info) |
| 包括CODEC整个的初始化,ADC、DAC的初始化 更多... | |
| int | icodec_start (io_direction_t io_dir) |
| ADC、DAC的启动 更多... | |
| int | icodec_config (cm_sound_info_t *audio_info, io_direction_t io_dir) |
| 配置CODEC ADC或者DAC的采样率、数据位宽以及通道选择 更多... | |
| int | icodec_stop (io_direction_t io_dir) |
| ADC、DAC的关闭 更多... | |
| int | icodec_ioctl (io_direction_t io_dir, uint32_t param0, uint32_t param1, uint32_t param2) |
| ADC、DAC的配置项,mute使能或关闭、配置增益等 更多... | |
音频CODEC管理模块,初始化IIS和CODEC的接口
| struct cm_sound_info_t |
音频信息结构体
| 成员变量 | ||
|---|---|---|
| uint8_t | channel_flag |
声道选择,bit[0] = 1选择左声道,bit[1]=1选择右声道,可以用或运算组合 |
| iis_data_width_t | sample_depth |
采样深度,以bit为单位 |
| uint32_t | sample_rate |
采样率 |
| struct cm_play_buffer_info_t |
| struct cm_record_buffer_info_t |
| union cm_pcm_buffer_info_t |
| 成员变量 | ||
|---|---|---|
| cm_play_buffer_info_t | play_buffer_info | |
| cm_record_buffer_info_t | record_buffer_info | |
| struct cm_codec_interface_t |
CODEC操作接口
成员变量 | |
| int(* | codec_init )(cm_codec_hw_info_t *) |
| int(* | codec_config )(cm_sound_info_t *audio_info, io_direction_t io_dir) |
| int(* | codec_start )(io_direction_t) |
| int(* | codec_stop )(io_direction_t) |
| int(* | codec_ioctl )(io_direction_t, uint32_t, uint32_t, uint32_t) |
| int(* codec_config) (cm_sound_info_t *audio_info, io_direction_t io_dir) |
CODEC配置接口,可以重复配置,不用再初始化
| int(* codec_init) (cm_codec_hw_info_t *) |
CODEC初始化接口
| int(* codec_ioctl) (io_direction_t, uint32_t, uint32_t, uint32_t) |
CODEC扩展控制接口
| int(* codec_start) (io_direction_t) |
CODEC启动接口
| int(* codec_stop) (io_direction_t) |
CODEC停止接口
| struct cm_iis_info_t |
| 成员变量 | ||
|---|---|---|
| union cm_iis_info_t | __unnamed__ | |
| IIS_Src_Source_t | clk_source |
IIS时钟源 |
| iis_data_format_t | iis_data_format |
IIS数据对齐方式 |
| IIS_Mode_Sel_t | iis_mode_sel |
指IIS工作模式:master or slave |
| iis_base_t | IISx |
指向CODEC使用到的IIS基地址 |
| IIS_Mclk_Mode_t | mclk_out_en |
mclk是否从PAD输出 |
| uint32_t | outside_mclk_fre |
外部送入的MCLK的时钟频率,只在使用外部MCLK做IIS时钟源时有效 |
| IIS_Mclk_Fs_t | over_sample |
过采样率 |
| IIS_Sck_Lrck_Wid_t | sck_lrck_ratio |
SCK与采样率的比值 |
| IIS_SckLrck_Mode_t | scklrck_out_en |
SCK/LRCK是否从PAD输出 |
| union cm_iis_info_t.__unnamed__ |
| 成员变量 | ||
|---|---|---|
| iis_rx_channal_t | rx_cha |
IIS接收rx通道选择 |
| iis_tx_channal_t | tx_cha |
IIS发送tx通道选择 |
| struct codec_hw_info_str |
CODEC相关信息结构体
| 成员变量 | ||
|---|---|---|
| inner_codec_adc_config_t | codec_gain |
CODEC增益初始设置 |
| cm_codec_interface_t | codec_if |
CODEC操作接口 |
| iic_base_t | IICx |
IIC基地址 |
| cm_iis_info_t | input_iis |
输入IIS相关信息 |
| cm_iis_info_t | output_iis |
输出IIS相关信息 |
| #define MAX_CODEC_NUM 2 |
设置音频CODEC管理模块支持的最大CODEC数量。
| typedef struct codec_hw_info_str cm_codec_hw_info_t |
CODEC相关信息结构体
| int cm_config_codec | ( | int | codec_index, |
| io_direction_t | io_dir, | ||
| cm_sound_info_t * | sound_info | ||
| ) |
配置指定音频CODEX的音频信息。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| io_dir | 指定配置的音频信息是用于输出(播放)还是用于输入(录音)。 |
| sound_info | 音频信息,比如采样率,采样位深度,通道数等。 |
| int cm_config_pcm_buffer | ( | int | codec_index, |
| io_direction_t | io_dir, | ||
| cm_pcm_buffer_info_t * | pcm_buffer_info | ||
| ) |
配置指定音频CODEC的PCM数据buffer。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| io_dir | 指定配置的音频buffer是用于输出(播放)还是用于输入(录音)。 |
| pcm_buffer_info | 用于传入需要配置的PCM buffer的详细信息,具体请见cm_pcm_buffer_info_t及内嵌结构体。 |
| int cm_get_codec_busy_buffer_number | ( | int | codec_index, |
| io_direction_t | io_dir | ||
| ) |
获取指定的音频CODEC的忙buffer数量。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| io_dir | 指定是启动播放还是启动录音。 |
| int cm_get_codec_empty_buffer_number | ( | int | codec_index, |
| io_direction_t | io_dir | ||
| ) |
获取指定的音频CODEC的空闲buffer数量。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| io_dir | 指定是启动播放还是启动录音。 |
| void cm_get_pcm_buffer | ( | int | codec_index, |
| uint32_t * | ret_buf, | ||
| uint32_t | wait_tick | ||
| ) |
从指定的音频CODEC获取空闲的PCM数据buffer,用于填充PCM数据后再通过cm_write_codec接口写入音频CODEC。
| ret_buf | uint32_t类型的指针,用于接收空闲的PCM数据buffer。 |
| wait_tick | 等待tick数,如果当前没有空闲的PCM数据buffer可用,此函数的调用会被阻塞,直到等待时间超过引参数设定的值 。 |
| void cm_init | ( | ) |
初始化音频CODEC管理模块。
初始化音频CODEC管理模块。
| int cm_read_codec | ( | int | codec_index, |
| uint32_t * | data_addr, | ||
| uint32_t * | data_size | ||
| ) |
从指定的音频CODEC读取录制的PCM数据,此接口为同步调用接口,如果当前没有PCM数据可以读取,此调用会被阻塞,直到有PCM数据可读取时才返回。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| data_addr | uint32_t类型的指针,用于接收存放PCM数据的buffer,调用者不需要申请内存,用到的内存是通过cm_config_codec接口配置的。 |
| data_size | 读取到的数据大小,以字节为单位。 |
| int cm_reg_codec | ( | int | codec_index, |
| cm_codec_hw_info_t * | p_codec_hw_info | ||
| ) |
向音频CODEC管理模块注册一个音频CODEC。
| codec_index | CODEC注册的索引号,在访问codec_manager其他接口时,用此索引号指定要操作的CODEC。 |
| codec_hw_info | 保存了注册的CODEC的相关信息的结构体。 |
向音频CODEC管理模块注册一个音频CODEC。
| codec_index | CODEC注册的索引号,在访问codec_manager其他接口时,用此索引号指定要操作的CODEC。 |
| codec_hw_info | 保存了注册的CODEC的相关信息的结构体。 |
| int cm_register_codec_callback | ( | int | codec_index, |
| void(*)(void) | callback_func | ||
| ) |
注册指定音频CODEC的回调函数,用于异步调用方式,CODEC会在特定事件发生时,调用此函数与调用者通信。
| codec_index | 音频CODEC注册的索引号,在访问codec_manager其他接口时,用此索引号指定要操作的CODEC。 |
| callback_func | 音频CODEC事件回调函数。 |
注册指定音频CODEC的回调函数,用于异步调用方式,CODEC会在特定事件发生时,调用此函数与调用者通信。
| codec_index | CODEC注册的索引号,在访问codec_manager其他接口时,用此索引号指定要操作的CODEC。 |
| callback_func | CODEC事件回调函数。 |
| int cm_release_pcm_buffer | ( | int | codec_index, |
| io_direction_t | io_dir, | ||
| void * | pcm_buffer | ||
| ) |
向指定的音频CODEC释放一个PCM数据buffer,释放的PCM数据buffer必须是通过cm_read_codec读取到的数据buffer,用于循环录制音频数据。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| io_dir | 指定是启动播放还是启动录音。 |
| pcm_buffer | 要释放的PCM数据buffer。 |
| int cm_set_codec_adc_gain | ( | int | codec_index, |
| cm_cha_sel_t | cha, | ||
| int | gain | ||
| ) |
设置指定的音频CODEC的ADC(录音)的指定通道的增益。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| cha | 用于传入要设置的音频通道,可以通过位或操作指定多个通道同时设置。 |
| gain | 指定要设置的增益值, 有效值范围请参数CODEC规格书。 |
设置指定的音频CODEC的ADC(录音)的指定通道的增益。
| codec_index | |
| cha | 通道 |
| gain | 增益(-18dB —— 28dB) |
| int cm_set_codec_alc | ( | int | codec_index, |
| cm_cha_sel_t | cha, | ||
| FunctionalState | alc_enable | ||
| ) |
设置指定的音频CODEC录音时是否开启ALC功能。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| cha | 用于传入要设置的音频通道,可以通过位或操作指定多个通道同时设置。 |
| alc_enable | ALC功能是否使能。ENABLE:使能;DISABLE:不使能。 |
设置指定的音频CODEC录音时是否开启ALC功能。
| codec_index | CODEC编号 |
| cha | 左声道或者右声道,不可以双声道 |
| alc_enable | ALC开关 |
| int cm_set_codec_dac_enable | ( | int | codec_index, |
| int | channel, | ||
| FunctionalState | en | ||
| ) |
设置指定的音频CODEC的DAC功能是否使能。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| channel | 用于传入要设置的音频通道,可以通过位或操作指定多个通道同时设置。 |
| en | DAC功能是否全能。ENABLE:使能;DISABLE:不使能。 |
| int cm_set_codec_dac_gain | ( | int | codec_index, |
| cm_cha_sel_t | cha, | ||
| int | gain | ||
| ) |
设置指定的音频CODEC的DAC(播放)的指定通道的增益。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| cha | 用于传入要设置的音频通道,可以通过位或操作指定多个通道同时设置。 |
| gain | 指定要设置的增益值, 有效值范围为(1-100)。 |
设置指定的音频CODEC的DAC(播放)的指定通道的增益。
| codec_index | CODEC编号 |
| cha | 通道 |
| gain | 增益值 |
| int cm_set_codec_mute | ( | int | codec_index, |
| io_direction_t | io_dir, | ||
| int | channel_flag, | ||
| FunctionalState | en | ||
| ) |
设置静音模式。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| io_dir | 指定是启动播放还是启动录音。 |
| channel_flag | 指定要静音的通道。 |
| en | 是否静音。ENABLE:静音功能开启;DISABLE:静音功能关闭。 |
| int cm_start_codec | ( | int | codec_index, |
| io_direction_t | io_dir | ||
| ) |
启动指定的音频CODEC播放或录音。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| io_dir | 指定是启动播放还是启动录音。 |
| int cm_stop_codec | ( | int | codec_index, |
| io_direction_t | io_dir | ||
| ) |
停止指定的音频CODEC播放或录音。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| io_dir | 指定是启动播放还是启动录音。 |
| int cm_write_codec | ( | int | codec_index, |
| void * | pcm_buffer, | ||
| uint32_t | wait_tick | ||
| ) |
向指定的音频CODEC写入数据。
| codec_index | 音频CODEC注册的索引号,用于指定要配置的音频CODEC。 |
| pcm_buffer | 一个void*类型的指针,指向向音频CODEC写入数据的buffer,此buffer只能通过接口cm_get_pcm_buffer获取,然后向其中填充PCM数据。 |
| wait_tick | 当音频CODEC的PCM buffer队列忙时,此调用等待的tick数,当等待时间超过此参数设置的值时,此调用会返回。 |
| int icodec_config | ( | cm_sound_info_t * | audio_info, |
| io_direction_t | io_dir | ||
| ) |
配置CODEC ADC或者DAC的采样率、数据位宽以及通道选择
| audio_info | |
| io_dir | 输入或输出(ADC或者DAC) |
| int icodec_init | ( | cm_codec_hw_info_t * | codec_hw_info | ) |
包括CODEC整个的初始化,ADC、DAC的初始化
| codec_hw_info | CODEC相关信息结构体 |
| int icodec_ioctl | ( | io_direction_t | io_dir, |
| uint32_t | param0, | ||
| uint32_t | param1, | ||
| uint32_t | param2 | ||
| ) |
ADC、DAC的配置项,mute使能或关闭、配置增益等
| param0 | cm_io_ctrl_cmd_t配置命令 |
| param1 | 参数1 |
| param2 | 参数2 |
| int icodec_start | ( | io_direction_t | io_dir | ) |
ADC、DAC的启动
| io_dir | 输入或输出(ADC或者DAC) |
| int icodec_stop | ( | io_direction_t | io_dir | ) |
ADC、DAC的关闭
| io_dir | 输入或输出(ADC或者DAC) |
1.8.14