LVM_API_Specials.c revision d918324d44aa48b3b064ea9b87d0c520c38f15a9
1/* 2 * Copyright (C) 2004-2010 NXP Software 3 * Copyright (C) 2010 The Android Open Source Project 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 19/****************************************************************************************/ 20/* */ 21/* Includes */ 22/* */ 23/****************************************************************************************/ 24 25#include "LVM_Private.h" 26#include "LVM_Tables.h" 27 28/****************************************************************************************/ 29/* */ 30/* FUNCTION: LVM_GetSpectrum */ 31/* */ 32/* DESCRIPTION: */ 33/* This function is used to retrieve Spectral information at a given Audio time */ 34/* for display usage */ 35/* */ 36/* PARAMETERS: */ 37/* hInstance Instance Handle */ 38/* pCurrentPeaks Pointer to location where currents peaks are to be saved */ 39/* pPastPeaks Pointer to location where past peaks are to be saved */ 40/* AudioTime Audio time at which the spectral information is needed */ 41/* */ 42/* RETURNS: */ 43/* LVM_SUCCESS Succeeded */ 44/* LVM_NULLADDRESS If any of input addresses are NULL */ 45/* LVM_WRONGAUDIOTIME Failure due to audio time error */ 46/* */ 47/* NOTES: */ 48/* 1. This function may be interrupted by the LVM_Process function */ 49/* */ 50/****************************************************************************************/ 51LVM_ReturnStatus_en LVM_GetSpectrum( 52 LVM_Handle_t hInstance, 53 LVM_UINT8 *pCurrentPeaks, 54 LVM_UINT8 *pPastPeaks, 55 LVM_INT32 AudioTime 56 ) 57{ 58 LVM_Instance_t *pInstance = (LVM_Instance_t *)hInstance; 59 60 pLVPSA_Handle_t *hPSAInstance; 61 LVPSA_RETURN LVPSA_Status; 62 63 64 if(pInstance == LVM_NULL) 65 { 66 return LVM_NULLADDRESS; 67 } 68 69 /*If PSA is not included at the time of instance creation, return without any processing*/ 70 if(pInstance->InstParams.PSA_Included!=LVM_PSA_ON) 71 { 72 return LVM_SUCCESS; 73 } 74 75 hPSAInstance = pInstance->hPSAInstance; 76 77 if((pCurrentPeaks == LVM_NULL) || 78 (pPastPeaks == LVM_NULL)) 79 { 80 return LVM_NULLADDRESS; 81 } 82 83 84 /* 85 * Update new parameters if necessary 86 */ 87 if (pInstance->ControlPending == LVM_TRUE) 88 { 89 LVM_ApplyNewSettings(hInstance); 90 } 91 92 /* If PSA module is disabled, do nothing */ 93 if(pInstance->Params.PSA_Enable==LVM_PSA_OFF) 94 { 95 return LVM_ALGORITHMDISABLED; 96 } 97 98 LVPSA_Status = LVPSA_GetSpectrum(hPSAInstance, 99 (LVPSA_Time) (AudioTime), 100 (LVM_UINT8*) pCurrentPeaks, 101 (LVM_UINT8*) pPastPeaks ); 102 103 if(LVPSA_Status != LVPSA_OK) 104 { 105 if(LVPSA_Status == LVPSA_ERROR_WRONGTIME) 106 { 107 return (LVM_ReturnStatus_en) LVM_WRONGAUDIOTIME; 108 } 109 else 110 { 111 return (LVM_ReturnStatus_en) LVM_NULLADDRESS; 112 } 113 } 114 115 return(LVM_SUCCESS); 116} 117 118 119/****************************************************************************************/ 120/* */ 121/* FUNCTION: LVM_SetVolumeNoSmoothing */ 122/* */ 123/* DESCRIPTION: */ 124/* This function is used to set output volume without any smoothing */ 125/* */ 126/* PARAMETERS: */ 127/* hInstance Instance Handle */ 128/* pParams Control Parameters, only volume value is used here */ 129/* */ 130/* RETURNS: */ 131/* LVM_SUCCESS Succeeded */ 132/* LVM_NULLADDRESS If any of input addresses are NULL */ 133/* LVM_OUTOFRANGE When any of the control parameters are out of range */ 134/* */ 135/* NOTES: */ 136/* 1. This function may be interrupted by the LVM_Process function */ 137/* */ 138/****************************************************************************************/ 139LVM_ReturnStatus_en LVM_SetVolumeNoSmoothing( LVM_Handle_t hInstance, 140 LVM_ControlParams_t *pParams) 141{ 142 LVM_Instance_t *pInstance =(LVM_Instance_t *)hInstance; 143 LVM_ReturnStatus_en Error; 144 145 /*Apply new controls*/ 146 Error = LVM_SetControlParameters(hInstance,pParams); 147 pInstance->NoSmoothVolume = LVM_TRUE; 148 return Error; 149} 150 151