之前写过 CSR8670/8675 发射(TX SOURCE)USB发射A2DP音乐,实现MIC声音到主机的文章,目前把该方案移植到QCC方案(QCC3040 QCC3056)。
因 CSR8670/8675成本比较贵,现在移植到QCC平台。
由于众多游戏玩家,打游戏时需要使用USB发射器传输音频,QCC USB发射器就完美的解决了该问题。
但是游戏玩家还需要语音通话,即一边听声音,一边语音沟通。
为解决这个问题,大部分做法时,A2DP 切换到HFP模式,这样保证了可以听到游戏的声音,同时在连接的耳机上也可以通过MIC说话传输到游戏机上。但是这种实现方式存在二个弊端:一.A2DP 切换到HFP模式后,耳机听到的声音音质大打折扣。二.只能一对一,不能一对二。
为解决这种痛点,我们提出了新的解决MIC使用时又保证音质,又同时兼顾一对二的方案。
QCC发射A2DP时,增加本地MIC输入到游戏机。这样很好的避免了音质的降低,用户不在因为音质变差而烦恼。
Source Microphones_TurnOnMicrophone(uint16 microphone_number, microphone_user_type_t microphone_user_type)
{
Source mic_source = NULL;
PanicFalse(microphones_IsValidMicrophoneNumber(microphone_number));
PanicFalse(microphone_user_type != invalid_user);
if(((microphone_user_type > normal_priority_user) && (microphones_GetMicrophoneUserType(microphone_number) != microphone_user_type))
|| (microphones_IsMicrophoneInExclusiveUse(microphone_number) == FALSE))
{
const audio_mic_params * microphone_config = Microphones_GetMicrophoneConfig(microphone_number);
bool already_in_use = Microphones_IsMicrophoneInUse(microphone_number);
if(!already_in_use)
{
DEBUG_LOG("Microphones_TurnOnMicrophone: microphone_number %d enum:mic_type_t:%d audio HDW instance %d",
microphone_number, microphone_config->type, microphone_config->instance);
AudioPluginSetMicGain(microphone_config->channel, *microphone_config);
mic_source = AudioPluginMicSetup(microphone_config->channel, *microphone_config);
}
else
{
mic_source = AudioPluginGetMicSource(*microphone_config, microphone_config->channel);
}
microphones_AddUser(microphone_number, microphone_user_type);
}
DEBUG_LOG("Microphones_TurnOnMicrophone: source=%p", mic_source);
return mic_source;
}
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/TengTaiTech/article/details/107282253