QCC3083/QCC3084/QCC3095/QCC5181 Le audio一对多广播BIS
高通QCC方案,支持aptX adaptive、aptX lossless、aptX-HD、Ldac、AAC、SBC。
一对多广播BIS时支持lc3、aptX-adaptive、aptX-lite。
支持 aux、USB、spdif、i2s、a2dp音源输入。支持ble连接、控制、ota等。
广泛应用于广播系统。
示意图
Lc3 广播部分音频截图
void KymeraOutput_DisconnectStereoMainInput(void)
{
chain_endpoint_role_t in_roles[] =
{
EPR_SINK_STEREO_MIXER_L,
EPR_SINK_STEREO_MIXER_R
};
kymeraOutput_DisconnectViaResampler(in_roles, ARRAY_DIM(in_roles), &state.resamplers.main_input);
}
void KymeraOutput_DisconnectMonoMainInput(void)
{
chain_endpoint_role_t in_roles[] =
{
EPR_SINK_MIXER_MAIN_IN
};
if (state.chain_started)
{
kymeraOutput_StopSplitter(state.splitters.main_input);
}
kymeraOutput_DisconnectViaResampler(in_roles, ARRAY_DIM(in_roles), &state.resamplers.main_input);
kymeraOutput_DestroySplitter(&state.splitters.main_input);
}
void KymeraOutput_DisconnectAuxInput(void)
{
chain_endpoint_role_t in_roles[] =
{
EPR_VOLUME_AUX
};
kymeraOutput_DisconnectViaResampler(in_roles, ARRAY_DIM(in_roles), &state.resamplers.aux_input);
}
void KymeraOutput_DisconnectBackgroundInput(void)
{
chain_endpoint_role_t in_roles[] =
{
EPR_SINK_STEREO_MIXER_BACKGROUND_L,
EPR_SINK_STEREO_MIXER_BACKGROUND_R
};
kymeraOutput_DisconnectViaResampler(in_roles, ARRAY_DIM(in_roles), &state.resamplers.background_input);
}
void KymeraOutput_LoadDownloadableCaps(output_chain_t chain_type)
{
ChainLoadDownloadableCapsFromChainConfig(kymeraOutput_GetChainConfig(chain_type));
}
void KymeraOutput_UnloadDownloadableCaps(output_chain_t chain_type)
{
ChainUnloadDownloadableCapsFromChainConfig(kymeraOutput_GetChainConfig(chain_type));
}
void KymeraOutput_MuteMainChannel(bool mute_enable)
{
kymeraTaskData *theKymera = KymeraGetTaskData();
kymera_chain_handle_t output = KymeraOutput_GetOutputHandle();
int16 gain_in_db = mute_enable ? VOLUME_MUTE_IN_DB : 0;
appKymeraSourceSyncSetMonoRouteGain(output, theKymera->output_rate,
appConfigSyncUnmuteTransitionSamples(), gain_in_db);
}
void KymeraOutput_Init(void)
{
appKymeraRegisterDspClockUser(&kymera_output_dsp_clock_user_if);
}
#ifdef INCLUDE_KYMERA_COMPANDER
void KymeraOutput_EnableSoundLimiter(void)
{
state.bypass_limiter = FALSE;
}
void KymeraOutput_DisableSoundLimiter(void)
{
if(KymeraOutput_GetOutputHandle())
{
DEBUG_LOG_WARN(“KymeraOutput_DisableSoundLimiter: Cannot disable - chain already instantiated”);
}
state.bypass_limiter = TRUE;
}
#endif