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 /* 53 * Check for error conditions 54 */ 55 if((hInstance == LVM_NULL) || (pNewParams == LVM_NULL)) 56 { 57 return LVREV_NULLADDRESS; 58 } 59 60 /* 61 * Check all new control parameters are in range 62 */ 63 if( ((pNewParams->OperatingMode != LVM_MODE_OFF) && (pNewParams->OperatingMode != LVM_MODE_ON)) || 64 ( 65 (pNewParams->SampleRate != LVM_FS_8000) && (pNewParams->SampleRate != LVM_FS_11025) && (pNewParams->SampleRate != LVM_FS_12000) && 66 (pNewParams->SampleRate != LVM_FS_16000) && (pNewParams->SampleRate != LVM_FS_22050) && (pNewParams->SampleRate != LVM_FS_24000) && 67 (pNewParams->SampleRate != LVM_FS_32000) && 68 (pNewParams->SampleRate != LVM_FS_44100) && 69 (pNewParams->SampleRate != LVM_FS_48000) 70 #ifdef HIGHER_FS 71 && (pNewParams->SampleRate != LVM_FS_88200) && (pNewParams->SampleRate != LVM_FS_96000) 72 && (pNewParams->SampleRate != LVM_FS_176400) && (pNewParams->SampleRate != LVM_FS_192000) 73 #endif 74 ) 75 #ifdef SUPPORT_MC 76 || ((pNewParams->SourceFormat != LVM_STEREO) && 77 (pNewParams->SourceFormat != LVM_MONOINSTEREO) && 78 (pNewParams->SourceFormat != LVM_MONO) && 79 (pNewParams->SourceFormat != LVM_MULTICHANNEL))) 80 #else 81 || ((pNewParams->SourceFormat != LVM_STEREO) && (pNewParams->SourceFormat != LVM_MONOINSTEREO) && (pNewParams->SourceFormat != LVM_MONO)) ) 82 #endif 83 { 84 return (LVREV_OUTOFRANGE); 85 } 86 87 88 if (pNewParams->Level > LVREV_MAX_LEVEL) 89 { 90 return LVREV_OUTOFRANGE; 91 } 92 93 if ((pNewParams->LPF < LVREV_MIN_LPF_CORNER) || (pNewParams->LPF > LVREV_MAX_LPF_CORNER)) 94 { 95 return LVREV_OUTOFRANGE; 96 } 97 98 if ((pNewParams->HPF < LVREV_MIN_HPF_CORNER) || (pNewParams->HPF > LVREV_MAX_HPF_CORNER)) 99 { 100 return LVREV_OUTOFRANGE; 101 } 102 103 if (pNewParams->T60 > LVREV_MAX_T60) 104 { 105 return LVREV_OUTOFRANGE; 106 } 107 108 if (pNewParams->Density > LVREV_MAX_DENSITY) 109 { 110 return LVREV_OUTOFRANGE; 111 } 112 113 if (pNewParams->Damping > LVREV_MAX_DAMPING) 114 { 115 return LVREV_OUTOFRANGE; 116 } 117 118 if (pNewParams->RoomSize > LVREV_MAX_ROOMSIZE) 119 { 120 return LVREV_OUTOFRANGE; 121 } 122 123 124 125 /* 126 * Copy the new parameters and set the flag to indicate they are available 127 */ 128 pLVREV_Private->NewParams = *pNewParams; 129 pLVREV_Private->bControlPending = LVM_TRUE; 130 131 return LVREV_SUCCESS; 132 } 133 134 /* End of file */ 135