QCC TX 音频输入切换+提示声音

QCC TX 音频输入切换+提示声音
QCC蓝牙芯片(QCC3040 QCC3056 等等),AUX、I2S、USB输入

蓝牙音频输入,模拟输出是最常见的方式。
也可以再此基础上动态切换输入方式。
在这里插入图片描述
针对TX切换EQ,调节音量不能出提示声音问题,可以增加本地提示声音然后混合(mix)到a2dp audio,然后在BT(sink)端出提示声音。

提示声音播放接口如下
void appKymeraHandleInternalTonePromptPlay(const KYMERA_INTERNAL_TONE_PROMPT_PLAY_T *msg)
{
kymeraTaskData *theKymera = KymeraGetTaskData();
output_source_t output = {0};
int16 volume_db = (msg->tone != NULL) ? KYMERA_CONFIG_TONE_VOLUME : KYMERA_CONFIG_PROMPT_VOLUME;

DEBUG_LOG("appKymeraHandleInternalTonePromptPlay, prompt %x, tone %p, ttp %d, int %u, lock 0x%x, mask 0x%x",
            msg->prompt, msg->tone, msg->time_to_play, msg->interruptible, msg->client_lock, msg->client_lock_mask);

kymera_SendStartInd(msg);

/* If there is a tone still playing at this point, it must be an interruptable tone, so cut it off */
if(appKymeraIsPlayingPrompt() || (!kymera_IsTheCorrectTonePromptChainReady(msg) && kymera_TonePromptIsReady()))
{
    appKymeraTonePromptStop();
}

kymera_PrepareOutputChain(msg->rate);
KymeraOutput_ChainStart();
output.aux = kymera_PrepareInputChain(msg);
PanicFalse(Kymera_OutputConnect(output_user_prompt, &output));
KymeraOutput_SetAuxVolume(volume_db);

if (KymeraOutput_SetAuxTtp(msg->time_to_play))
{
    rtime_t now = SystemClockGetTimerTime();
    rtime_t delta = rtime_sub(msg->time_to_play, now);
    DEBUG_LOG("appKymeraHandleInternalTonePromptPlay now=%u, ttp=%u, left=%d", now, msg->time_to_play, delta);
    uint16 delta_in_ms = (uint16)(delta/1000);
    TimestampEvent_Offset(TIMESTAMP_EVENT_PROMPT_PLAY, delta_in_ms);
}

/* Start tone */
if (theKymera->chain_tone_handle)
{
    ChainStart(theKymera->chain_tone_handle);
}

kymera_tone_state = kymera_tone_playing;
/* May need to exit low power mode to play tone simultaneously */
appKymeraConfigureDspPowerMode();

if (!msg->interruptible)
{
    appKymeraSetToneLock(theKymera);
}
theKymera->tone_client_lock = msg->client_lock;
theKymera->tone_client_lock_mask = msg->client_lock_mask;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值