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 /* Includes */ 21 /* */ 22 /****************************************************************************************/ 23 #include "LVREV_Private.h" 24 25 /****************************************************************************************/ 26 /* */ 27 /* FUNCTION: LVREV_SetControlParameters */ 28 /* */ 29 /* DESCRIPTION: */ 30 /* Sets or changes the LVREV module parameters. */ 31 /* */ 32 /* PARAMETERS: */ 33 /* hInstance Instance handle */ 34 /* pNewParams Pointer to a parameter structure */ 35 /* */ 36 /* RETURNS: */ 37 /* LVM_Success Succeeded */ 38 /* LVREV_NULLADDRESS When hInstance or pNewParams is NULL */ 39 /* LVREV_OUTOFRANGE When any of the new parameters is out of range */ 40 /* */ 41 /* NOTES: */ 42 /* 1. This function may be interrupted by the LVREV_Process function */ 43 /* */ 44 /****************************************************************************************/ LVREV_SetControlParameters(LVREV_Handle_t hInstance,LVREV_ControlParams_st * pNewParams)45LVREV_ReturnStatus_en LVREV_SetControlParameters(LVREV_Handle_t hInstance, 46 LVREV_ControlParams_st *pNewParams) 47 { 48 49 LVREV_Instance_st *pLVREV_Private = (LVREV_Instance_st *)hInstance; 50 51 /* 52 * Check for error conditions 53 */ 54 if((hInstance == LVM_NULL) || (pNewParams == LVM_NULL)) 55 { 56 return LVREV_NULLADDRESS; 57 } 58 59 /* 60 * Check all new control parameters are in range 61 */ 62 if( ((pNewParams->OperatingMode != LVM_MODE_OFF) && (pNewParams->OperatingMode != LVM_MODE_ON)) || 63 ( 64 (pNewParams->SampleRate != LVM_FS_8000) && (pNewParams->SampleRate != LVM_FS_11025) && (pNewParams->SampleRate != LVM_FS_12000) && 65 (pNewParams->SampleRate != LVM_FS_16000) && (pNewParams->SampleRate != LVM_FS_22050) && (pNewParams->SampleRate != LVM_FS_24000) && 66 (pNewParams->SampleRate != LVM_FS_32000) && 67 (pNewParams->SampleRate != LVM_FS_44100) && 68 (pNewParams->SampleRate != LVM_FS_48000) 69 && (pNewParams->SampleRate != LVM_FS_88200) && (pNewParams->SampleRate != LVM_FS_96000) 70 && (pNewParams->SampleRate != LVM_FS_176400) && (pNewParams->SampleRate != LVM_FS_192000) 71 ) 72 #ifdef SUPPORT_MC 73 || ((pNewParams->SourceFormat != LVM_STEREO) && 74 (pNewParams->SourceFormat != LVM_MONOINSTEREO) && 75 (pNewParams->SourceFormat != LVM_MONO) && 76 (pNewParams->SourceFormat != LVM_MULTICHANNEL))) 77 #else 78 || ((pNewParams->SourceFormat != LVM_STEREO) && (pNewParams->SourceFormat != LVM_MONOINSTEREO) && (pNewParams->SourceFormat != LVM_MONO)) ) 79 #endif 80 { 81 return (LVREV_OUTOFRANGE); 82 } 83 84 if (pNewParams->Level > LVREV_MAX_LEVEL) 85 { 86 return LVREV_OUTOFRANGE; 87 } 88 89 if ((pNewParams->LPF < LVREV_MIN_LPF_CORNER) || (pNewParams->LPF > LVREV_MAX_LPF_CORNER)) 90 { 91 return LVREV_OUTOFRANGE; 92 } 93 94 if ((pNewParams->HPF < LVREV_MIN_HPF_CORNER) || (pNewParams->HPF > LVREV_MAX_HPF_CORNER)) 95 { 96 return LVREV_OUTOFRANGE; 97 } 98 99 if (pNewParams->T60 > LVREV_MAX_T60) 100 { 101 return LVREV_OUTOFRANGE; 102 } 103 104 if (pNewParams->Density > LVREV_MAX_DENSITY) 105 { 106 return LVREV_OUTOFRANGE; 107 } 108 109 if (pNewParams->Damping > LVREV_MAX_DAMPING) 110 { 111 return LVREV_OUTOFRANGE; 112 } 113 114 if (pNewParams->RoomSize > LVREV_MAX_ROOMSIZE) 115 { 116 return LVREV_OUTOFRANGE; 117 } 118 119 /* 120 * Copy the new parameters and set the flag to indicate they are available 121 */ 122 pLVREV_Private->NewParams = *pNewParams; 123 pLVREV_Private->bControlPending = LVM_TRUE; 124 125 return LVREV_SUCCESS; 126 } 127 128 /* End of file */ 129