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

📄 aud_melody.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 5 页
字号:
                output_path = AUDIO_DEVICE_LOUDSPEAKER;
            }

            device = custom_cfg_hw_aud_output_path(output_path);
            set_path_func(device);            
        }
    }
#endif /* #if defined(TV_OUT_SUPPORT) */

}


/*****************************************************************************
 * FUNCTION
 *  aud_melody_crescendo_hdlr
 * DESCRIPTION
 *  
 * PARAMETERS
 *  arg     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void aud_melody_crescendo_hdlr(void *arg)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    current_melody_volume1 += melody_volume_step1;
    /* /current_melody_volume2+= melody_volume_step2; */

    current_melody_volume1 = MIN(current_melody_volume1, max_melody_volume1);
    /* /current_melody_volume2 = MIN(current_melody_volume2, max_melody_volume2); */

    /* /aud_melody_set_volume((kal_uint8)current_melody_volume1, (kal_uint8)current_melody_volume2); */
    aud_melody_set_volume((kal_uint8) current_melody_volume1, 0);

    if (current_melody_volume1 < max_melody_volume1)
        /* /|| current_melody_volume2<max_melody_volume2) */
    {
        med_start_timer(AUD_TIMER_CRESCENDO, AUD_TIMER_PERIOD, aud_melody_crescendo_hdlr, 0);
    }
    else
    {
        med_stop_timer(AUD_TIMER_CRESCENDO);
    }

}


/*****************************************************************************
 * FUNCTION
 *  aud_melody_stop_crescendo
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void aud_melody_stop_crescendo(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    med_stop_timer(AUD_TIMER_CRESCENDO);
    /* /aud_melody_set_volume((kal_uint8)max_melody_volume1, (kal_uint8)max_melody_volume2); */
    aud_melody_set_volume((kal_uint8) max_melody_volume1, 0);

}


/*****************************************************************************
 * FUNCTION
 *  aud_melody_start_crescendo
 * DESCRIPTION
 *  
 * PARAMETERS
 *  play_style      [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void aud_melody_start_crescendo(kal_uint8 play_style)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (play_style == DEVICE_AUDIO_PLAY_CRESCENDO)
    {
        if (current_melody_volume1 < max_melody_volume1)
        {
            med_stop_timer(AUD_TIMER_CRESCENDO);
            med_start_timer(AUD_TIMER_CRESCENDO, AUD_TIMER_PERIOD, aud_melody_crescendo_hdlr, 0);
        }
    }
}


/*****************************************************************************
 * FUNCTION
 *  aud_melody_play_style_convert
 * DESCRIPTION
 *  
 * PARAMETERS
 *  play_style      [IN]        
 * RETURNS
 *  
 *****************************************************************************/
kal_uint8 aud_melody_play_style_convert(kal_uint8 play_style)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    kal_uint8 l1sp_play_style = 1;  /* AUDIO_PLAY_ONCE; */

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    switch (play_style)
    {
            /* Play sound for crescendo */
        case DEVICE_AUDIO_PLAY_CRESCENDO:
            l1sp_play_style = 0;    /* AUDIO_PLAY_CRESCENDO; */
            if (max_melody_volume1 >= CRESCENDO_STEPS)
            {
                melody_volume_step1 = max_melody_volume1 / CRESCENDO_STEPS;
                /* / melody_volume_step2 = max_melody_volume2/CRESCENDO_STEPS; */
                current_melody_volume1 = melody_volume_step1;
                /* / current_melody_volume2 = melody_volume_step2; */
                med_start_timer(AUD_TIMER_CRESCENDO, AUD_TIMER_PERIOD, aud_melody_crescendo_hdlr, 0);
            }
            else
            {
                melody_volume_step1 = 0;
                /* /melody_volume_step2 = 0; */
                current_melody_volume1 = max_melody_volume1;
                /* / current_melody_volume2 = max_melody_volume2; */
            }
            /* /aud_melody_set_volume((kal_uint8)current_melody_volume1, (kal_uint8)current_melody_volume2); */
            aud_melody_set_volume((kal_uint8) current_melody_volume1, 0);
            break;
            /* Play sound for repeat. */
        case DEVICE_AUDIO_PLAY_INFINITE:
            l1sp_play_style = 0;    /* AUDIO_PLAY_INFINITE; */
            break;
            /* Play sound for once. */
        case DEVICE_AUDIO_PLAY_ONCE:
            l1sp_play_style = 1;    /* AUDIO_PLAY_ONCE; */
            break;
        default:
            break;
    }

    return l1sp_play_style;

}


/*****************************************************************************
 * FUNCTION
 *  aud_media_play_event_hdlr
 * DESCRIPTION
 *  
 * PARAMETERS
 *  ilm_ptr     [?]     
 * RETURNS
 *  void
 *****************************************************************************/
void aud_media_play_event_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    aud_media_play_event_ind_struct *ind_p = (aud_media_play_event_ind_struct*) ilm_ptr->local_para_ptr;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (aud_context_p->last_seq_no != ind_p->seq_no ||
        (aud_context_p->state != AUD_MEDIA_PLAY && aud_context_p->state != AUD_MEDIA_PLAY_PAUSED))
    {
        AUD_VALUE_TRACE(ind_p->seq_no, aud_context_p->last_seq_no, aud_context_p->state);
        return;
    }

    switch (ind_p->event)
    {
        case MEDIA_END:
            /* enter AUD_MEDIA_IDLE state */
            AUD_ENTER_STATE(AUD_MEDIA_IDLE);
            aud_melody_stop_driver();

            /* aud_context_p->source_type== AUD_FILE */

    #ifdef __MED_MMA_MOD__
            aud_melody_close_handle();
    #endif 
            /* stop volume crescendo timer */
            med_stop_timer(AUD_TIMER_CRESCENDO);

    #if defined(__BTVCSR_HCI_BCHS__) && defined(__MED_BT_A2DP_MOD__)
            aud_bt_a2dp_media_stop_hdlr();
    #endif 

            /* free file buffer */
            aud_free_melody_file_buffer();

            if (aud_context_p->play_mode == AUD_MEDIA_PLAY_AS_RING)
            {
                aud_send_audio_play_finish_ind(MED_RES_END_OF_FILE);
            }
            else
            {
                aud_send_media_play_finish_ind(MED_RES_END_OF_FILE);
            }

            break;
        case MEDIA_ERROR:

        #ifdef __MED_MMA_MOD__
            aud_melody_close_handle();
        #endif 
            /* enter AUD_MEDIA_IDLE state */
            AUD_ENTER_STATE(AUD_MEDIA_IDLE);

            /* stop volume crescendo timer */
            med_stop_timer(AUD_TIMER_CRESCENDO);

        #if defined(__BTVCSR_HCI_BCHS__) && defined(__MED_BT_A2DP_MOD__)
            aud_bt_a2dp_media_stop_hdlr();
        #endif 

            /* not for iMelody, so ... */
            aud_melody_stop_driver();

            /* free file buffer */
            aud_free_melody_file_buffer();

            if (aud_context_p->source_type == AUD_FILE && aud_context_p->play_mode == AUD_MEDIA_PLAY_AS_SONG)
            {
                aud_send_media_play_finish_ind(MED_RES_ERROR);
            }
            else
            {
                aud_send_audio_play_finish_ind(MED_RES_ERROR);
            }
            break;
        case MEDIA_TERMINATED:
            /* enter AUD_MEDIA_IDLE state */
            AUD_ENTER_STATE(AUD_MEDIA_IDLE);

            /* stop volume crescendo timer */
            med_stop_timer(AUD_TIMER_CRESCENDO);

        #if defined(__BTVCSR_HCI_BCHS__) && defined(__MED_BT_A2DP_MOD__)
            aud_bt_a2dp_media_stop_hdlr();
        #endif 

            /* not for iMelody, so ... */
            aud_melody_stop_driver();
            break;
        case MEDIA_DATA_REQUEST:
        case MEDIA_DATA_NOTIFICATION:
            break;
        default:
            /* not for iMelody, so ... */
            break;
    }

    return;
}


/*****************************************************************************
 * FUNCTION
 *  aud_media_ievent_callback
 * DESCRIPTION
 *  
 * PARAMETERS
 *  handle      [?]         
 *  event       [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void aud_media_ievent_callback(Media_Handle *handle, Media_Event event)
{
#ifdef __MED_MMA_MOD__
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    if (event == MEDIA_EXTENDED_EVENT)
    {
        kal_int32 note;

        while ((event = JSmf_QueryExtEvent(handle, &note)) != MEDIA_NONE)
        {
            kal_prompt_trace(MOD_L1SP, "ExtEVT GetQ: %d", note);
            switch (event)
            {
                case MEDIA_LED_ON:
                    kal_prompt_trace(MOD_L1SP, "ExtEVT LED ON: %d", note);
                    aud_melody_imy_led_hdlr(KAL_TRUE);
                    break;
                case MEDIA_LED_OFF:
                    kal_prompt_trace(MOD_L1SP, "ExtEVT LED OFF: %d", note);
                    aud_melody_imy_led_hdlr(KAL_FALSE);
                    break;
                case MEDIA_VIBRATOR_ON:
                    kal_prompt_trace(MOD_L1SP, "ExtEVT VIBRATOR ON: %d", note);
                    aud_melody_imy_vibrator_hdlr(KAL_TRUE);
                    break;
                case MEDIA_VIBRATOR_OFF:
                    kal_prompt_trace(MOD_L1SP, "ExtEVT VIBRATOR OFF: %d", note);
                    aud_melody_imy_backlight_hdlr(KAL_FALSE);
                    break;
                case MEDIA_BACKLIGHT_ON:
                    kal_prompt_trace(MOD_L1SP, "ExtEVT BACKLIGHT ON: %d", note);
                    aud_melody_imy_backlight_hdlr(KAL_TRUE);
                    break;
                case MEDIA_BACKLIGHT_OFF:
                    kal_prompt_trace(MOD_L1SP, "ExtEVT BACKLIGHT OFF: %d", note);
                    aud_melody_imy_backlight_hdlr(KAL_FALSE);
                    break;
            }
        }
    }
    else
#endif /* __MED_MMA_MOD__ */ 
        aud_media_event_callback(event);
}


/*****************************************************************************
 * FUNCTION
 *  aud_media_event_callback
 * DESCRIPTION
 *  
 * PARAMETERS
 *  event       [IN]        
 * RETURNS
 *  void
 *****************************************************************************/
void aud_media_event_callback(Media_Event event)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    aud_media_play_event_ind_struct *ind_p = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -