⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aud_audio.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 5 页
字号:
    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 + -