从这个函数中进入,进行开与关,也就是init跟deinit
static int bt_sco_player(bool on, enum APP_SYSFREQ_FREQ_T freq)
首先第一步是Codec的配置,mic跟speaker
①上行处理
在这里面可以处理通道数据,BES一般是talk mic的数据在第一位,ff mic在第二位
然后再对数据进行编码处理(编解码的处理函数在初始化的时候有做)
配置完参数之后打开audio flinger,在这里会将mic采集到的数据放到buf里,用dma传走,然后就会到上面mic capture的处理函数里
BES用的是codec
②下行处理
从bt获取到的数据解码后送到dma给到codec
bt-->store_voicebtpcm_m2p_buffer-->decode_voicebtpcm_m2p_frame-->audioflinger playback-->speaker
下行数据处理接口,pcm数据导入,codec输出到speaker
处理下行数据包括下行算法
SCO上行:mic–>audioflinger capture(bt_sco_codec_capture_data) (capture,PPbuffer->Queue) -->voicebtpcm_pcm_audio_data_come->store_voicebtpcm_p2m_buffer–>bt_sco_btpcm_playback_data(get_voicebtpcm_p2m_frame (playback,queue->PPbuffer)) -->bt
SCO下行:bt–>bt_sco_btpcm_capture_data(store_voicebtpcm_m2p_buffer) (capture,PPbuffer->Queue) -->decode_voicebtpcm_m2p_frame–>audioflinger playback (bt_sco_codec_playback_data)(playback,queue->PPbuffer)–>speaker