1、trigger失败引起无声:
检查宏MULTI_DMA_TC、AUDIO_RESAMPLE是否有打开;有时候运行时序也会引起trigger失败,列如:串口日志输出使用同步打印(系统默认使用异步打印,有时候调试过程中会打开同步打印及TR_ATTR_IMM相关逻辑)、加osDelay到音频流相关线程;
2、DAC通道配置引起无声:
检查宏AUDIO_OUTPUT_SWAP;这类无声问题通常出现在通话(sco)中,由于通话只用了一个声道,在bt_sco_player配置通道时要注意:
// codec:spk
stream_cfg.channel_map = (enum AUD_CHANNEL_MAP_T)AUD_CHANNEL_MAP_CH0;
stream_cfg.channel_map配置的是AUDIO_RESAMPLE的通道,为0时会自适应到
CODEC_OUTPUT_DEV
ch_map = cfg->channel_map;
if (ch_map == 0) {
if (stream == AUD_STREAM_PLAYBACK) {
ch_map = (enum AUD_CHANNEL_MAP_T)CODEC_OUTPUT_DEV;
} else {
ch_map = (enum AUD_CHANNEL_MAP_T)hal_codec_get_input_path_cfg(cfg->io_path);
}
ch_map &= AUD_CHANNEL_MAP_ALL;
}
AUDIO_OUTPUT_SWAP宏可以让物理DAC通道进行左右切换。