IPresetReverb.c revision 437f9ab9914ea61112aa496a047162a0d22194cd
182b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten/* 282b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * Copyright (C) 2010 The Android Open Source Project 382b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * 482b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * Licensed under the Apache License, Version 2.0 (the "License"); 582b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * you may not use this file except in compliance with the License. 682b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * You may obtain a copy of the License at 782b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * 882b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * http://www.apache.org/licenses/LICENSE-2.0 982b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * 1082b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * Unless required by applicable law or agreed to in writing, software 1182b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * distributed under the License is distributed on an "AS IS" BASIS, 1282b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1382b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * See the License for the specific language governing permissions and 1482b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten * limitations under the License. 1582b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten */ 1682b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten 1782b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten/* PresetReverb implementation */ 1882b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten 1982b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten#include "sles_allinclusive.h" 2082b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten 21437f9ab9914ea61112aa496a047162a0d22194cdGlenn Kastenstatic SLresult IPresetReverb_SetPreset(SLPresetReverbItf self, SLuint16 preset) 2282b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten{ 234c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten IPresetReverb *this = (IPresetReverb *) self; 244c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten switch (preset) { 254c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten case SL_REVERBPRESET_NONE: 264c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten case SL_REVERBPRESET_SMALLROOM: 274c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten case SL_REVERBPRESET_MEDIUMROOM: 284c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten case SL_REVERBPRESET_LARGEROOM: 294c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten case SL_REVERBPRESET_MEDIUMHALL: 304c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten case SL_REVERBPRESET_LARGEHALL: 314c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten case SL_REVERBPRESET_PLATE: 324c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten break; 334c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten default: 344c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten return SL_RESULT_PARAMETER_INVALID; 354c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten } 3682b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten interface_lock_poke(this); 3782b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten this->mPreset = preset; 3882b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten interface_unlock_poke(this); 3982b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten return SL_RESULT_SUCCESS; 4082b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten} 4182b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten 42437f9ab9914ea61112aa496a047162a0d22194cdGlenn Kastenstatic SLresult IPresetReverb_GetPreset(SLPresetReverbItf self, SLuint16 *pPreset) 4382b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten{ 4482b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten if (NULL == pPreset) 4582b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten return SL_RESULT_PARAMETER_INVALID; 46437f9ab9914ea61112aa496a047162a0d22194cdGlenn Kasten IPresetReverb *this = (IPresetReverb *) self; 4782b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten interface_lock_peek(this); 4882b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten SLuint16 preset = this->mPreset; 4982b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten interface_unlock_peek(this); 5082b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten *pPreset = preset; 5182b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten return SL_RESULT_SUCCESS; 5282b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten} 5382b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten 5482b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kastenstatic const struct SLPresetReverbItf_ IPresetReverb_Itf = { 5582b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten IPresetReverb_SetPreset, 5682b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten IPresetReverb_GetPreset 5782b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten}; 5882b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten 5982b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kastenvoid IPresetReverb_init(void *self) 6082b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten{ 6182b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten IPresetReverb *this = (IPresetReverb *) self; 6282b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten this->mItf = &IPresetReverb_Itf; 634c048c5d0d281e4e5777d732fc92a98aee876f71Glenn Kasten this->mPreset = SL_REVERBPRESET_NONE; 6482b1fcaca1b9c870c1a7978f0986fdad2fe7d06eGlenn Kasten} 65