blob: 07b7f0e128befb277c7abd79967e0f2b578448c6 [file] [log] [blame]
/*
* Copyright (C) 2004-2010 NXP Software
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/****************************************************************************************/
/* */
/* Includes */
/* */
/****************************************************************************************/
#include "LVM_Private.h"
#include "LVM_Tables.h"
/****************************************************************************************/
/* */
/* FUNCTION: LVM_GetSpectrum */
/* */
/* DESCRIPTION: */
/* This function is used to retrieve Spectral information at a given Audio time */
/* for display usage */
/* */
/* PARAMETERS: */
/* hInstance Instance Handle */
/* pCurrentPeaks Pointer to location where currents peaks are to be saved */
/* pPastPeaks Pointer to location where past peaks are to be saved */
/* AudioTime Audio time at which the spectral information is needed */
/* */
/* RETURNS: */
/* LVM_SUCCESS Succeeded */
/* LVM_NULLADDRESS If any of input addresses are NULL */
/* LVM_WRONGAUDIOTIME Failure due to audio time error */
/* */
/* NOTES: */
/* 1. This function may be interrupted by the LVM_Process function */
/* */
/****************************************************************************************/
LVM_ReturnStatus_en LVM_GetSpectrum(
LVM_Handle_t hInstance,
LVM_UINT8 *pCurrentPeaks,
LVM_UINT8 *pPastPeaks,
LVM_INT32 AudioTime
)
{
LVM_Instance_t *pInstance = (LVM_Instance_t *)hInstance;
pLVPSA_Handle_t *hPSAInstance;
LVPSA_RETURN LVPSA_Status;
if(pInstance == LVM_NULL)
{
return LVM_NULLADDRESS;
}
/*If PSA is not included at the time of instance creation, return without any processing*/
if(pInstance->InstParams.PSA_Included!=LVM_PSA_ON)
{
return LVM_SUCCESS;
}
hPSAInstance = pInstance->hPSAInstance;
if((pCurrentPeaks == LVM_NULL) ||
(pPastPeaks == LVM_NULL))
{
return LVM_NULLADDRESS;
}
/*
* Update new parameters if necessary
*/
if (pInstance->ControlPending == LVM_TRUE)
{
LVM_ApplyNewSettings(hInstance);
}
/* If PSA module is disabled, do nothing */
if(pInstance->Params.PSA_Enable==LVM_PSA_OFF)
{
return LVM_ALGORITHMDISABLED;
}
LVPSA_Status = LVPSA_GetSpectrum(hPSAInstance,
(LVPSA_Time) (AudioTime),
(LVM_UINT8*) pCurrentPeaks,
(LVM_UINT8*) pPastPeaks );
if(LVPSA_Status != LVPSA_OK)
{
if(LVPSA_Status == LVPSA_ERROR_WRONGTIME)
{
return (LVM_ReturnStatus_en) LVM_WRONGAUDIOTIME;
}
else
{
return (LVM_ReturnStatus_en) LVM_NULLADDRESS;
}
}
return(LVM_SUCCESS);
}
/****************************************************************************************/
/* */
/* FUNCTION: LVM_SetVolumeNoSmoothing */
/* */
/* DESCRIPTION: */
/* This function is used to set output volume without any smoothing */
/* */
/* PARAMETERS: */
/* hInstance Instance Handle */
/* pParams Control Parameters, only volume value is used here */
/* */
/* RETURNS: */
/* LVM_SUCCESS Succeeded */
/* LVM_NULLADDRESS If any of input addresses are NULL */
/* LVM_OUTOFRANGE When any of the control parameters are out of range */
/* */
/* NOTES: */
/* 1. This function may be interrupted by the LVM_Process function */
/* */
/****************************************************************************************/
LVM_ReturnStatus_en LVM_SetVolumeNoSmoothing( LVM_Handle_t hInstance,
LVM_ControlParams_t *pParams)
{
LVM_Instance_t *pInstance =(LVM_Instance_t *)hInstance;
LVM_ReturnStatus_en Error;
/*Apply new controls*/
Error = LVM_SetControlParameters(hInstance,pParams);
pInstance->NoSmoothVolume = LVM_TRUE;
return Error;
}