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

📄 aud_mma.c

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