/***************************************************************************** * 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)); }
/***************************************************************************** * 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); }
/***************************************************************************** * 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)); }
/***************************************************************************** * 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)); }
/***************************************************************************** * 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); }