📄 aud_mma.c
字号:
Media_WriteDataDone(req_p->size >> 1);
Media_DataFinished();
player_p->used = KAL_TRUE;
}
break;
}
#endif /* AAC_DECODE */
case MMA_TYPE_AU:
{
player_p = &(aud_context_p->player[MMA_PLAYER_AU]);
if (!player_p->used)
{
aud_mma_close_all_multi_player();
player_p->handler_func = req_p->handler;
aud_context_p->current_file_handle = MMA_PLAYER_AU;
handle = (Media_Handle*) MMA_PLAYER_AU;
player_p->handle = (kal_int32) aud_context_p->current_file_handle;
Media_SetBuffer((kal_uint16*) req_p->data, (kal_uint32) ((req_p->size >> 1) + 1));
Media_WriteDataDone(req_p->size >> 1);
Media_DataFinished();
player_p->used = KAL_TRUE;
}
break;
}
}
mma_set_handle((kal_int32) handle);
MMA_SET_EVENT(MMA_EVT_OPEN);
}
/*****************************************************************************
* FUNCTION
* aud_mma_close_req_hdlr
* DESCRIPTION
* This function is to close media handle.
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void aud_mma_close_req_hdlr(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
media_mma_close_req_struct *req_p;
Media_Status status = MEDIA_FAIL;
med_result_enum result;
aud_player_struct *player_p;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
if (aud_context_p->access_mod != ilm_ptr->src_mod_id)
{
mma_set_status(MED_RES_BLOCKED);
MMA_SET_EVENT(MMA_EVT_CLOSE);
return;
}
req_p = (media_mma_close_req_struct*) ilm_ptr->local_para_ptr;
result = MED_RES_INVALID_HANDLE;
ASSERT(req_p->handle != NULL);
switch (req_p->media_type)
{
case MMA_TYPE_MIDI:
{
kal_uint8 i;
for (i = MMA_PLAYER_SMF_1; i <= MMA_PLAYER_SMF_4; i++)
{
player_p = &(aud_context_p->player[i]);
if (player_p->used && player_p->handle == req_p->handle)
{
status = JSmf_Close((Media_Handle*) req_p->handle);
player_p->used = KAL_FALSE;
player_p->handle = NULL;
result = (med_result_enum) aud_get_res((kal_uint8) status);
break;
}
}
break;
}
case MMA_TYPE_TONE:
{
kal_uint8 i;
for (i = MMA_PLAYER_TONE_S1; i <= MMA_PLAYER_TONE_S4; i++)
{
player_p = &(aud_context_p->player[i]);
if (player_p->used && player_p->handle == req_p->handle)
{
status = JTone_Close((Media_Handle*) req_p->handle);
player_p->handle = NULL;
player_p->used = KAL_FALSE;
result = (med_result_enum) aud_get_res((kal_uint8) status);
break;
}
}
break;
}
case MMA_TYPE_WAV:
{
kal_uint8 i;
for (i = MMA_PLAYER_WAV_1; i <= MMA_PLAYER_WAV_3; i++)
{
player_p = &(aud_context_p->player[i]);
if (player_p->used && player_p->handle == req_p->handle)
{
status = JWav_Close((Media_Handle*) req_p->handle);
player_p->used = KAL_FALSE;
player_p->handle = NULL;
med_free_ext_mem((void **)&(player_p->buf_p));
result = (med_result_enum) aud_get_res((kal_uint8) status);
break;
}
}
break;
}
case MMA_TYPE_IMY:
{
player_p = &(aud_context_p->player[MMA_PLAYER_IMY]);
if (player_p->used && player_p->handle == req_p->handle)
{
status = JImy_Close((Media_Handle*) req_p->handle);
player_p->used = KAL_FALSE;
player_p->handle = NULL;
result = (med_result_enum) aud_get_res((kal_uint8) status);
}
break;
}
#ifdef MMA_AMR_SUPPORT
case MMA_TYPE_AMR:
{
player_p = &(aud_context_p->player[MMA_PLAYER_AMR]);
if (player_p->used && player_p->handle == req_p->handle)
{
status = JAmr_Close((Media_Handle*) req_p->handle);
player_p->used = KAL_FALSE;
player_p->handle = NULL;
result = (med_result_enum) aud_get_res((kal_uint8) status);
}
break;
}
#endif /* MMA_AMR_SUPPORT */
#ifdef DAF_DECODE
case MMA_TYPE_DAF:
{
player_p = &(aud_context_p->player[MMA_PLAYER_DAF]);
if (player_p->used && player_p->handle == req_p->handle)
{
player_p->used = KAL_FALSE;
player_p->handle = NULL;
result = MED_RES_OK;
}
break;
}
#endif /* DAF_DECODE */
#ifdef AAC_DECODE
case MMA_TYPE_AAC:
{
player_p = &(aud_context_p->player[MMA_PLAYER_AAC]);
if (player_p->used && player_p->handle == req_p->handle)
{
player_p->used = KAL_FALSE;
player_p->handle = NULL;
result = MED_RES_OK;
}
break;
}
#endif /* AAC_DECODE */
case MMA_TYPE_AU:
{
player_p = &(aud_context_p->player[MMA_PLAYER_AU]);
if (player_p->used && player_p->handle == req_p->handle)
{
player_p->used = KAL_FALSE;
player_p->handle = NULL;
result = MED_RES_OK;
}
break;
}
default:
ASSERT(0);
result = MED_RES_ERROR;
break;
}
mma_set_status(result);
MMA_SET_EVENT(MMA_EVT_CLOSE);
}
/*****************************************************************************
* FUNCTION
* aud_mma_play_req_hdlr
* DESCRIPTION
* This function is to play the media.
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void aud_mma_play_req_hdlr(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
media_mma_play_req_struct *req_p;
Media_Status status = MEDIA_FAIL;
kal_int32 handle;
med_result_enum result;
aud_player_struct *player_p;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
req_p = (media_mma_play_req_struct*) ilm_ptr->local_para_ptr;
if (aud_context_p->access_mod != ilm_ptr->src_mod_id)
{
mma_set_status(MED_RES_BLOCKED);
MMA_SET_EVENT(MMA_EVT_PLAY);
return;
}
if (aud_context_p->speech_on)
{
mma_set_status(MED_RES_BUSY);
MMA_SET_EVENT(MMA_EVT_PLAY);
return;
}
/* No output path setting for mma now, use default setting */
aud_get_active_device_path_by_mode(AUDIO_DEVICE_SPEAKER2,aud_melody_set_output_device);
result = MED_RES_INVALID_HANDLE;
handle = req_p->handle;
switch (req_p->media_type)
{
case MMA_TYPE_MIDI:
{
kal_uint8 i;
for (i = MMA_PLAYER_SMF_1; i <= MMA_PLAYER_SMF_4; i++)
{
player_p = &(aud_context_p->player[i]);
if (player_p->used && player_p->handle == handle)
{
status = JSmf_Play((Media_Handle*) handle);
result = (med_result_enum) aud_get_res((kal_uint8) status);
break;
}
}
break;
}
case MMA_TYPE_TONE:
{
kal_uint8 i;
for (i = MMA_PLAYER_TONE_S1; i <= MMA_PLAYER_TONE_S4; i++)
{
player_p = &(aud_context_p->player[i]);
if (player_p->used && player_p->handle == handle)
{
status = JTone_Play((Media_Handle*) handle);
result = (med_result_enum) aud_get_res((kal_uint8) status);
break;
}
}
break;
}
case MMA_TYPE_WAV:
{
kal_uint8 i;
for (i = MMA_PLAYER_WAV_1; i <= MMA_PLAYER_WAV_3; i++)
{
player_p = &(aud_context_p->player[i]);
if (player_p->used && player_p->handle == handle)
{
status = JWav_Play((Media_Handle*) handle);
result = (med_result_enum) aud_get_res((kal_uint8) status);
break;
}
}
break;
}
case MMA_TYPE_IMY:
player_p = &(aud_context_p->player[MMA_PLAYER_IMY]);
if (player_p->used && player_p->handle == handle)
{
status = JImy_Play((Media_Handle*) handle);
result = (med_result_enum) aud_get_res((kal_uint8) status);
}
break;
#ifdef MMA_AMR_SUPPORT
case MMA_TYPE_AMR:
player_p = &(aud_context_p->player[MMA_PLAYER_AMR]);
if (player_p->used && player_p->handle == handle)
{
status = JAmr_Play((Media_Handle*) handle);
result = (med_result_enum) aud_get_res((kal_uint8) status);
}
break;
#endif /* MMA_AMR_SUPPORT */
#ifdef DAF_DECODE
case MMA_TYPE_DAF:
{
player_p = &(aud_context_p->player[MMA_PLAYER_DAF]);
if (player_p->used && player_p->handle == handle)
{
status = Media_Play((Media_Format) MED_TYPE_DAF, aud_mma_event_callback_1, MEDIA_VMP_AS_RINGTONE);
result = (med_result_enum) aud_get_res((kal_uint8) status);
}
break;
}
#endif /* DAF_DECODE */
#ifdef AAC_DECODE
case MMA_TYPE_AAC:
{
player_p = &(aud_context_p->player[MMA_PLAYER_AAC]);
if (player_p->used && player_p->handle == handle)
{
status = Media_Play((Media_Format) MED_TYPE_AAC, aud_mma_event_callback_1, MEDIA_VMP_AS_RINGTONE);
result = (med_result_enum) aud_get_res((kal_uint8) status);
}
break;
}
#endif /* AAC_DECODE */
case MMA_TYPE_AU:
{
player_p = &(aud_context_p->player[MMA_PLAYER_AU]);
if (player_p->used && player_p->handle == handle)
{
status = Media_Play((Media_Format) MED_TYPE_AU, aud_mma_event_callback_1, MEDIA_VMP_AS_RINGTONE);
result = (med_result_enum) aud_get_res((kal_uint8) status);
}
break;
}
default:
ASSERT(0);
result = MED_RES_ERROR;
break;
}
mma_set_status(result);
MMA_SET_EVENT(MMA_EVT_PLAY);
}
/*****************************************************************************
* FUNCTION
* aud_mma_stop_req_hdlr
* DESCRIPTION
* This function is to stop the media.
* PARAMETERS
* ilm_ptr [?]
* RETURNS
* void
*****************************************************************************/
void aud_mma_stop_req_hdlr(ilm_struct *ilm_ptr)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
media_mma_stop_req_struct *req_p;
kal_int32 handle;
Media_Status status = MEDIA_FAIL;
med_result_enum result;
aud_player_struct *player_p;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -