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