示例#1
0
/*****************************************************************************
 * FUNCTION
 *  aud_trim_get_param_req_hdlr
 * DESCRIPTION
 *  This is a general function to get the settings of a trimming handler.
 * PARAMETERS
 *
 * RETURNS
 *  void
 *****************************************************************************/
void aud_trim_get_param_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    Media_Status drv_result = MEDIA_FAIL;
    l4aud_trim_get_param_req_struct *msg_p = (l4aud_trim_get_param_req_struct*) ilm_ptr->local_para_ptr;
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/    

    /* Validate handle */
    if (msg_p->handle != (kal_uint32)g_trim_ctx.mhdl_handle_p)
    {
        AUD_TRIM_RETURN(MED_RES_INVALID_HANDLE);
    }

    switch (msg_p->get_type)
    {
        case AUD_TRIM_GET_CURRENT_TIME:
            *((kal_uint32*)msg_p->data_p) = g_trim_ctx.mhdl_handle_p->GetCurrentTime(g_trim_ctx.mhdl_handle_p);
            *((kal_uint16*)msg_p->data_len_p) = sizeof(kal_uint32);
            drv_result = MEDIA_SUCCESS;
            break;
        default:
            drv_result = MEDIA_UNSUPPORTED_OPERATION;
            break;
    }

    _AUD_TRIM_TRACE(drv_result, msg_p->get_type, *((kal_uint32*)msg_p->data_p));
    
    AUD_TRIM_RETURN(aud_get_res(drv_result));
}
示例#2
0
/*****************************************************************************
 * FUNCTION
 *  _aud_trim_stop
 * DESCRIPTION
 *  This function is to stop the trimming.
 * PARAMETERS
 *  void
 * RETURNS
 *  The result of stop.
 *****************************************************************************/
static kal_int32 _aud_trim_stop(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    Media_Status drv_result;
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/    

    drv_result = g_trim_ctx.mhdl_handle_p->Stop(g_trim_ctx.mhdl_handle_p);
    _AUD_TRIM_TRACE(drv_result, g_trim_ctx.mhdl_handle_p, -1);

    if (drv_result == MEDIA_SUCCESS)
    {
        /* Enter IDLE state */
        g_trim_ctx.state = AUD_TRIM_STATE_IDLE;
    }

    /* Free working buffer */
    aud_util_free_ring_buffer();

    return aud_get_res(drv_result);
}
示例#3
0
/*****************************************************************************
 * FUNCTION
 *  aud_trim_set_param_req_hdlr
 * DESCRIPTION
 *  This is a general function to set the settings of a trimming handler.
 * PARAMETERS
 *
 * RETURNS
 *  void
 *****************************************************************************/
void aud_trim_set_param_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    Media_Status drv_result = MEDIA_FAIL;
    l4aud_trim_set_param_req_struct *msg_p = (l4aud_trim_set_param_req_struct*) ilm_ptr->local_para_ptr;
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/

    /* Validate handle */
    if (msg_p->handle != (kal_uint32)g_trim_ctx.mhdl_handle_p)
    {
        AUD_TRIM_RETURN(MED_RES_INVALID_HANDLE);
    }

    switch (msg_p->set_type)
    {
        case AUD_TRIM_SET_START_TIME:
            drv_result = g_trim_ctx.mhdl_handle_p->SetStartTime(g_trim_ctx.mhdl_handle_p, (kal_uint32)msg_p->data_p);
            break;
        case AUD_TRIM_SET_STOP_TIME:
            drv_result = g_trim_ctx.mhdl_handle_p->SetStopTime(g_trim_ctx.mhdl_handle_p, (kal_uint32)msg_p->data_p);
            break;
        case AUD_TRIM_SET_CACHE_TABLE:
            g_trim_ctx.mhdl_handle_p->SetCacheTbl(g_trim_ctx.mhdl_handle_p, (kal_uint8*)msg_p->data_p, NULL);
            drv_result = MEDIA_SUCCESS;
            break;
        default:
            drv_result = MEDIA_UNSUPPORTED_OPERATION;
            break;
    }

    _AUD_TRIM_TRACE(drv_result, msg_p->set_type, (kal_uint32)msg_p->data_p);
    
    AUD_TRIM_RETURN(aud_get_res(drv_result));
}
示例#4
0
/*****************************************************************************
 * FUNCTION
 *  aud_trim_start_req_hdlr
 * DESCRIPTION
 *  This function is used to start a trimming.
 * PARAMETERS
 *
 * RETURNS
 *  void
 *****************************************************************************/
void aud_trim_start_req_hdlr(ilm_struct *ilm_ptr)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    Media_Status drv_result;
    l4aud_trim_start_req_struct* msg_p = (l4aud_trim_start_req_struct*) ilm_ptr->local_para_ptr;
    
    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/    

    /* Validate handle */
    if (msg_p->handle != (kal_uint32)g_trim_ctx.mhdl_handle_p)
    {
        AUD_TRIM_RETURN(MED_RES_INVALID_HANDLE);
    }

    /* Set working buffer */
    aud_util_alloc_ring_buffer();
    g_trim_ctx.mhdl_handle_p->SetBuffer(g_trim_ctx.mhdl_handle_p, (kal_uint8*) aud_context_p->ring_buf, AUD_RING_BUFFER_SIZE);
        
    drv_result = g_trim_ctx.mhdl_handle_p->Trim(g_trim_ctx.mhdl_handle_p);
    _AUD_TRIM_TRACE(drv_result, g_trim_ctx.mhdl_handle_p, -1);

    if (drv_result == MEDIA_SUCCESS)
    {
        /* Enter TRIM state */
        g_trim_ctx.state = AUD_TRIM_STATE_TRIM;
    }
    else
    {
        /* Free working buffer */
        aud_util_free_ring_buffer();
    }
    
    AUD_TRIM_RETURN(aud_get_res(drv_result));
}
示例#5
0
/*****************************************************************************
 * FUNCTION
 *  aud_reverb_turn_on_req_hdlr
 * DESCRIPTION
 *  This function is to turn on 3D sound effect
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void aud_reverb_turn_on_req_hdlr(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    Media_Status result;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    AUD_FUNC_ENTRY3(AUD_REVERB_TURN_ON_REQ_HDLR, aud_app_cntx_p->state_eq, aud_app_cntx_p->state_reverb, aud_app_cntx_p->state_surround);


    /* Parameter is not set */
    if (aud_app_cntx_p->state_reverb == AUD_EFFECT_UNSET)
    {
        aud_app_set_result(MED_RES_FAIL);
    }
    /* Can not turn on with surround or equalizer at the same time */
    else if(aud_app_cntx_p->state_surround == AUD_EFFECT_ON || aud_app_cntx_p->state_eq == AUD_EFFECT_ON)
    {
        aud_app_set_result(MED_RES_BUSY);
    }
    /* Parameter is already set but not turn on or being paused by other feature. */
    else if (aud_app_cntx_p->state_reverb == AUD_EFFECT_OFF)
    {
        result = AudioPP_Reverb_TurnOn();
        aud_app_set_result((kal_int32) aud_get_res((kal_uint8) result));

        if (result == MEDIA_SUCCESS)
        {
            aud_app_cntx_p->state_reverb = AUD_EFFECT_ON;
        }
    }

    EFFECT_SET_EVENT(REVERB_EVT_ON);
}