📄 aud_audio.c
字号:
AUD_FUNC_ENTRY(AUD_SET_TV_OUT_AUD_PATH);
AUD_VALUE_TRACE(tv_on, aud_context_p->audio_mode, audio_tv_cable_in);
if(audio_tv_cable_in == tv_on)
{
return;
}
/* No need to change in headset mode when TV out enable/disable */
if (aud_context_p->audio_mode == AUD_MODE_NORMAL || aud_context_p->audio_mode == AUD_MODE_LOUDSPK)
{
/* TV cable in*/
if (tv_on)
{
/* Get hardware audio output path setting parameter. */
if(audio_tv_loud_speaker ||
aud_context_p->melody_output_device == AUDIO_DEVICE_SPEAKER_BOTH)
{
output_path = custom_cfg_hw_aud_output_path(AUDIO_DEVICE_SPEAKER_BOTH);
}
else /* Set output path to earphone to avoid hear sound from handset */
{
output_path = custom_cfg_hw_aud_output_path(AUDIO_DEVICE_SPEAKER2);
}
/* Melody */
#ifdef __MED_BT_A2DP_MOD__
#if defined(__BTMTK__)
if (!aud_bt_a2dp_is_mute_phone())
#elif defined(__BTVCSR_HCI_BCHS__)
if (!aud_bt_a2dp_is_media_output_on())
#endif
#endif
{
aud_melody_set_output_device(output_path);
}
/* FM Radio */
aud_fmr_set_output_device(output_path);
/* Background Sound Effect */
#ifdef __MED_SND_MOD__
aud_snd_set_output_device(output_path);
#endif
/* Set volume by using TV out gain value */
/* Melody */
if(audio_tv_loud_speaker ||
aud_context_p->melody_output_device == AUDIO_DEVICE_SPEAKER_BOTH)
{
aud_set_melody_volume(aud_context_p->audio_mode, current_playing_melody_volume_level);
}
else
{
aud_set_melody_volume(VOL_TV_OUT, current_playing_melody_volume_level);
}
/* FM Radio */
if(audio_tv_loud_speaker ||
aud_context_p->melody_output_device == AUDIO_DEVICE_SPEAKER_BOTH)
{
volume = aud_get_volume_gain(aud_context_p->audio_mode, AUD_VOLUME_FMR, current_playing_fmradio_volume_level);
}
else
{
volume = aud_get_volume_gain(VOL_NORMAL, AUD_VOLUME_TVO, current_playing_fmradio_volume_level);
}
aud_fmr_set_volume(volume);
}
/* TV cable out*/
else
{
/* Set output path back to load speaker for melody and FM radio */
output_path = custom_cfg_hw_aud_output_path(AUDIO_DEVICE_LOUDSPEAKER);
/* Melody */
#ifdef __MED_BT_A2DP_MOD__
#if defined(__BTMTK__)
if (!aud_bt_a2dp_is_mute_phone())
#elif defined(__BTVCSR_HCI_BCHS__)
if (!aud_bt_a2dp_is_media_output_on())
#endif
#endif
{
aud_melody_set_output_device(output_path);
}
/* FM Radio */
aud_fmr_set_output_device(output_path);
/* Background Sound Effect */
#ifdef __MED_SND_MOD__
aud_snd_set_output_device(output_path);
#endif
/* Set volume by using TV out gain value */
/* Melody */
if (aud_context_p->audio_mode == AUD_MODE_NORMAL)
{
gain_audio_mode = VOL_NORMAL;
}
else
{
gain_audio_mode = VOL_HANDFREE;
}
aud_set_melody_volume(gain_audio_mode, current_playing_melody_volume_level);
/* FM Radio */
volume = aud_get_volume_gain(VOL_NORMAL, AUD_VOLUME_FMR, current_playing_fmradio_volume_level);
aud_fmr_set_volume(volume);
}
}
/* Change TV out status for audio path */
if (tv_on)
{
audio_tv_cable_in = KAL_TRUE;
}
else
{
audio_tv_cable_in = KAL_FALSE;
}
}
/*****************************************************************************
* FUNCTION
* aud_set_tv_out_param
* DESCRIPTION
*
* PARAMETERS
* enable_loud_spk [IN]
* RETURNS
* void
*****************************************************************************/
void aud_set_tv_out_param(kal_uint8 enable_loud_spk)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_bool change_path = KAL_FALSE;
kal_uint8 output_path = 0;
kal_uint8 volume;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
AUD_FUNC_ENTRY(AUD_SET_TV_OUT_PARAM);
AUD_VALUE_TRACE(enable_loud_spk, -1, audio_tv_loud_speaker);
/* Check if we need to change audio path when change tv-out audio setting */
if(enable_loud_spk != audio_tv_loud_speaker)
{
change_path = KAL_TRUE;
}
if(enable_loud_spk)
{
audio_tv_loud_speaker = KAL_TRUE;
}
else
{
audio_tv_loud_speaker = KAL_FALSE;
}
/* Change audio path right away if TV cable in */
if(change_path &&
audio_tv_cable_in &&
(aud_context_p->audio_mode == AUD_MODE_NORMAL || aud_context_p->audio_mode == AUD_MODE_LOUDSPK))
{
/* Get hardware audio output path setting parameter. */
if(audio_tv_loud_speaker)
{
output_path = custom_cfg_hw_aud_output_path(AUDIO_DEVICE_SPEAKER_BOTH);
}
else /* Set output path to earphone to avoid hear sound from handset */
{
output_path = custom_cfg_hw_aud_output_path(AUDIO_DEVICE_SPEAKER2);
}
/* Melody */
#ifdef __MED_BT_A2DP_MOD__
#if defined(__BTMTK__)
if (!aud_bt_a2dp_is_mute_phone())
#elif defined(__BTVCSR_HCI_BCHS__)
if (!aud_bt_a2dp_is_media_output_on())
#endif
#endif
{
aud_melody_set_output_device(output_path);
}
/* FM Radio */
aud_fmr_set_output_device(output_path);
/* Background Sound Effect */
#ifdef __MED_SND_MOD__
aud_snd_set_output_device(output_path);
#endif
/* Set volume by using TV out gain value */
/* Melody */
if(audio_tv_loud_speaker ||
aud_context_p->melody_output_device == AUDIO_DEVICE_SPEAKER_BOTH)
{
aud_set_melody_volume(VOL_NORMAL, current_playing_melody_volume_level);
}
else
{
aud_set_melody_volume(VOL_TV_OUT, current_playing_melody_volume_level);
}
/* FM Radio */
if(audio_tv_loud_speaker ||
aud_context_p->melody_output_device == AUDIO_DEVICE_SPEAKER_BOTH)
{
volume = aud_get_volume_gain(VOL_NORMAL, AUD_VOLUME_FMR, current_playing_fmradio_volume_level);
}
else
{
volume = aud_get_volume_gain(VOL_NORMAL, AUD_VOLUME_TVO, current_playing_fmradio_volume_level);
}
aud_fmr_set_volume(volume);
}
}
#endif /* TV_OUT_SUPPORT */
/*****************************************************************************
* FUNCTION
* aud_audio_set_device_req_hdlr
* DESCRIPTION
*
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void aud_audio_set_device_req_hdlr(ilm_struct *ilm_ptr)
{
#ifdef DUMMY_CNF
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
kal_uint16 cnf_msg_id;
void *cnf_p = NULL;
#endif /* DUMMY_CNF */
l4aud_audio_set_device_req_struct *req_p;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
req_p = (l4aud_audio_set_device_req_struct*) ilm_ptr->local_para_ptr;
switch (req_p->audio_type)
{
case AUD_TYPE_SPEECH:
aud_speech_set_output_device(req_p->device);
break;
case AUD_TYPE_VM:
case AUD_TYPE_VR:
break;
case AUD_TYPE_TONE:
aud_tone_set_output_device(req_p->device);
break;
case AUD_TYPE_KEYTONE:
aud_keytone_set_output_device(req_p->device);
break;
case AUD_TYPE_MELODY:
aud_melody_set_output_device(req_p->device);
break;
case AUD_TYPE_MIC:
aud_mic_set_device(req_p->device);
break;
case AUD_TYPE_FMR:
aud_fmr_set_output_device(req_p->device);
break;
#ifdef __MED_SND_MOD__
case AUD_TYPE_BGSND:
aud_snd_set_output_device(req_p->device);
break;
#endif /* __MED_SND_MOD__ */
default:
break;
}
#ifdef DUMMY_CNF
cnf_p = (l4aud_audio_set_device_cnf_struct*)
construct_local_para(sizeof(l4aud_audio_set_device_cnf_struct), TD_CTRL);
cnf_msg_id = MSG_ID_L4AUD_AUDIO_SET_DEVICE_CNF;
aud_send_ilm(ilm_ptr->src_mod_id, cnf_msg_id, cnf_p, NULL);
#endif /* DUMMY_CNF */
}
/*****************************************************************************
* FUNCTION
* aud_audio_get_volume_req
* DESCRIPTION
*
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void aud_audio_get_volume_req(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
l4aud_get_volume_req_struct *req_p;
l4aud_get_volume_cnf_struct *cnf_p = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
req_p = (l4aud_get_volume_req_struct*) ilm_ptr->local_para_ptr;
cnf_p = (l4aud_get_volume_cnf_struct*) construct_local_para(sizeof(l4aud_get_volume_cnf_struct), TD_CTRL);
cnf_p->src_id = req_p->src_id;
cnf_p->volume_type = req_p->volume_type;
cnf_p->result = KAL_TRUE;
cnf_p->volume = aud_context_p->acoustic_data.volume[aud_context_p->audio_mode][req_p->volume_type];
aud_send_ilm(ilm_ptr->src_mod_id, MSG_ID_L4AUD_AUDIO_GET_VOLUME_CNF, cnf_p, NULL);
}
/*****************************************************************************
* FUNCTION
* aud_audio_set_volume_req_hdlr
* DESCRIPTION
*
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void aud_audio_set_volume_req_hdlr(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
#ifdef DUMMY_CNF
l4aud_audio_set
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -