📄 aud_melody.c
字号:
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, ¬e)) != 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 + -