1*bebae9c0SAndroid Build Coastguard Worker /*
2*bebae9c0SAndroid Build Coastguard Worker * Copyright (C) 2010 The Android Open Source Project
3*bebae9c0SAndroid Build Coastguard Worker *
4*bebae9c0SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*bebae9c0SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*bebae9c0SAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*bebae9c0SAndroid Build Coastguard Worker *
8*bebae9c0SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*bebae9c0SAndroid Build Coastguard Worker *
10*bebae9c0SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*bebae9c0SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*bebae9c0SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*bebae9c0SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*bebae9c0SAndroid Build Coastguard Worker * limitations under the License.
15*bebae9c0SAndroid Build Coastguard Worker */
16*bebae9c0SAndroid Build Coastguard Worker
17*bebae9c0SAndroid Build Coastguard Worker /* EnvironmentalReverb implementation */
18*bebae9c0SAndroid Build Coastguard Worker
19*bebae9c0SAndroid Build Coastguard Worker #include "sles_allinclusive.h"
20*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
21*bebae9c0SAndroid Build Coastguard Worker #include <system/audio_effects/effect_environmentalreverb.h>
22*bebae9c0SAndroid Build Coastguard Worker #endif
23*bebae9c0SAndroid Build Coastguard Worker
24*bebae9c0SAndroid Build Coastguard Worker // Note: all Set operations use exclusive not poke,
25*bebae9c0SAndroid Build Coastguard Worker // because SetEnvironmentalReverbProperties is exclusive.
26*bebae9c0SAndroid Build Coastguard Worker // It is safe for the Get operations to use peek,
27*bebae9c0SAndroid Build Coastguard Worker // on the assumption that the block copy will atomically
28*bebae9c0SAndroid Build Coastguard Worker // replace each word of the block.
29*bebae9c0SAndroid Build Coastguard Worker
30*bebae9c0SAndroid Build Coastguard Worker
31*bebae9c0SAndroid Build Coastguard Worker #if defined(ANDROID)
32*bebae9c0SAndroid Build Coastguard Worker /**
33*bebae9c0SAndroid Build Coastguard Worker * returns true if this interface is not associated with an initialized EnvironmentalReverb effect
34*bebae9c0SAndroid Build Coastguard Worker */
NO_ENVREVERB(IEnvironmentalReverb * ier)35*bebae9c0SAndroid Build Coastguard Worker static inline bool NO_ENVREVERB(IEnvironmentalReverb* ier) {
36*bebae9c0SAndroid Build Coastguard Worker return (ier->mEnvironmentalReverbEffect == 0);
37*bebae9c0SAndroid Build Coastguard Worker }
38*bebae9c0SAndroid Build Coastguard Worker #endif
39*bebae9c0SAndroid Build Coastguard Worker
40*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_SetRoomLevel(SLEnvironmentalReverbItf self,SLmillibel room)41*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_SetRoomLevel(SLEnvironmentalReverbItf self, SLmillibel room)
42*bebae9c0SAndroid Build Coastguard Worker {
43*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
44*bebae9c0SAndroid Build Coastguard Worker
45*bebae9c0SAndroid Build Coastguard Worker //if (!(SL_MILLIBEL_MIN <= room && room <= 0)) {
46*bebae9c0SAndroid Build Coastguard Worker // comparison (SL_MILLIBEL_MIN <= room) is always true due to range of SLmillibel
47*bebae9c0SAndroid Build Coastguard Worker if (!(room <= 0)) {
48*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
49*bebae9c0SAndroid Build Coastguard Worker } else {
50*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
51*bebae9c0SAndroid Build Coastguard Worker interface_lock_exclusive(thiz);
52*bebae9c0SAndroid Build Coastguard Worker thiz->mProperties.roomLevel = room;
53*bebae9c0SAndroid Build Coastguard Worker #if !defined(ANDROID)
54*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
55*bebae9c0SAndroid Build Coastguard Worker #else
56*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
57*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
58*bebae9c0SAndroid Build Coastguard Worker } else {
59*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_setParam(thiz->mEnvironmentalReverbEffect,
60*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_ROOM_LEVEL, &room);
61*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
62*bebae9c0SAndroid Build Coastguard Worker }
63*bebae9c0SAndroid Build Coastguard Worker #endif
64*bebae9c0SAndroid Build Coastguard Worker interface_unlock_exclusive(thiz);
65*bebae9c0SAndroid Build Coastguard Worker }
66*bebae9c0SAndroid Build Coastguard Worker
67*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
68*bebae9c0SAndroid Build Coastguard Worker }
69*bebae9c0SAndroid Build Coastguard Worker
70*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_GetRoomLevel(SLEnvironmentalReverbItf self,SLmillibel * pRoom)71*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_GetRoomLevel(SLEnvironmentalReverbItf self, SLmillibel *pRoom)
72*bebae9c0SAndroid Build Coastguard Worker {
73*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
74*bebae9c0SAndroid Build Coastguard Worker
75*bebae9c0SAndroid Build Coastguard Worker if (NULL == pRoom) {
76*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
77*bebae9c0SAndroid Build Coastguard Worker } else {
78*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
79*bebae9c0SAndroid Build Coastguard Worker interface_lock_shared(thiz);
80*bebae9c0SAndroid Build Coastguard Worker #if 1 // !defined(ANDROID)
81*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
82*bebae9c0SAndroid Build Coastguard Worker #else
83*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
84*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
85*bebae9c0SAndroid Build Coastguard Worker } else {
86*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_getParam(thiz->mEnvironmentalReverbEffect,
87*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_ROOM_LEVEL, &thiz->mProperties.roomLevel);
88*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
89*bebae9c0SAndroid Build Coastguard Worker }
90*bebae9c0SAndroid Build Coastguard Worker #endif
91*bebae9c0SAndroid Build Coastguard Worker *pRoom = thiz->mProperties.roomLevel;
92*bebae9c0SAndroid Build Coastguard Worker
93*bebae9c0SAndroid Build Coastguard Worker interface_unlock_shared(thiz);
94*bebae9c0SAndroid Build Coastguard Worker
95*bebae9c0SAndroid Build Coastguard Worker }
96*bebae9c0SAndroid Build Coastguard Worker
97*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
98*bebae9c0SAndroid Build Coastguard Worker }
99*bebae9c0SAndroid Build Coastguard Worker
100*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_SetRoomHFLevel(SLEnvironmentalReverbItf self,SLmillibel roomHF)101*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_SetRoomHFLevel(
102*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLmillibel roomHF)
103*bebae9c0SAndroid Build Coastguard Worker {
104*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
105*bebae9c0SAndroid Build Coastguard Worker
106*bebae9c0SAndroid Build Coastguard Worker //if (!(SL_MILLIBEL_MIN <= roomHF && roomHF <= 0)) {
107*bebae9c0SAndroid Build Coastguard Worker // comparison (SL_MILLIBEL_MIN <= roomHF) is always true due to range of SLmillibel
108*bebae9c0SAndroid Build Coastguard Worker if (!(roomHF <= 0)) {
109*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
110*bebae9c0SAndroid Build Coastguard Worker } else {
111*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
112*bebae9c0SAndroid Build Coastguard Worker interface_lock_exclusive(thiz);
113*bebae9c0SAndroid Build Coastguard Worker thiz->mProperties.roomHFLevel = roomHF;
114*bebae9c0SAndroid Build Coastguard Worker #if !defined(ANDROID)
115*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
116*bebae9c0SAndroid Build Coastguard Worker #else
117*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
118*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
119*bebae9c0SAndroid Build Coastguard Worker } else {
120*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_setParam(thiz->mEnvironmentalReverbEffect,
121*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_ROOM_HF_LEVEL, &roomHF);
122*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
123*bebae9c0SAndroid Build Coastguard Worker }
124*bebae9c0SAndroid Build Coastguard Worker #endif
125*bebae9c0SAndroid Build Coastguard Worker interface_unlock_exclusive(thiz);
126*bebae9c0SAndroid Build Coastguard Worker }
127*bebae9c0SAndroid Build Coastguard Worker
128*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
129*bebae9c0SAndroid Build Coastguard Worker }
130*bebae9c0SAndroid Build Coastguard Worker
131*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_GetRoomHFLevel(SLEnvironmentalReverbItf self,SLmillibel * pRoomHF)132*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_GetRoomHFLevel(
133*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLmillibel *pRoomHF)
134*bebae9c0SAndroid Build Coastguard Worker {
135*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
136*bebae9c0SAndroid Build Coastguard Worker
137*bebae9c0SAndroid Build Coastguard Worker if (NULL == pRoomHF) {
138*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
139*bebae9c0SAndroid Build Coastguard Worker } else {
140*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
141*bebae9c0SAndroid Build Coastguard Worker interface_lock_shared(thiz);
142*bebae9c0SAndroid Build Coastguard Worker #if 1 // !defined(ANDROID)
143*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
144*bebae9c0SAndroid Build Coastguard Worker #else
145*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
146*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
147*bebae9c0SAndroid Build Coastguard Worker } else {
148*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_getParam(thiz->mEnvironmentalReverbEffect,
149*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_ROOM_HF_LEVEL, &thiz->mProperties.roomHFLevel);
150*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
151*bebae9c0SAndroid Build Coastguard Worker }
152*bebae9c0SAndroid Build Coastguard Worker #endif
153*bebae9c0SAndroid Build Coastguard Worker *pRoomHF = thiz->mProperties.roomHFLevel;
154*bebae9c0SAndroid Build Coastguard Worker
155*bebae9c0SAndroid Build Coastguard Worker interface_unlock_shared(thiz);
156*bebae9c0SAndroid Build Coastguard Worker }
157*bebae9c0SAndroid Build Coastguard Worker
158*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
159*bebae9c0SAndroid Build Coastguard Worker }
160*bebae9c0SAndroid Build Coastguard Worker
161*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_SetDecayTime(SLEnvironmentalReverbItf self,SLmillisecond decayTime)162*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_SetDecayTime(
163*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLmillisecond decayTime)
164*bebae9c0SAndroid Build Coastguard Worker {
165*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
166*bebae9c0SAndroid Build Coastguard Worker
167*bebae9c0SAndroid Build Coastguard Worker if (!(100 <= decayTime && decayTime <= 20000)) {
168*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
169*bebae9c0SAndroid Build Coastguard Worker } else {
170*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
171*bebae9c0SAndroid Build Coastguard Worker interface_lock_exclusive(thiz);
172*bebae9c0SAndroid Build Coastguard Worker thiz->mProperties.decayTime = decayTime;
173*bebae9c0SAndroid Build Coastguard Worker #if 1 // !defined(ANDROID)
174*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
175*bebae9c0SAndroid Build Coastguard Worker #else
176*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
177*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
178*bebae9c0SAndroid Build Coastguard Worker } else {
179*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_setParam(thiz->mEnvironmentalReverbEffect,
180*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_DECAY_TIME, &decayTime);
181*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
182*bebae9c0SAndroid Build Coastguard Worker }
183*bebae9c0SAndroid Build Coastguard Worker #endif
184*bebae9c0SAndroid Build Coastguard Worker interface_unlock_exclusive(thiz);
185*bebae9c0SAndroid Build Coastguard Worker }
186*bebae9c0SAndroid Build Coastguard Worker
187*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
188*bebae9c0SAndroid Build Coastguard Worker }
189*bebae9c0SAndroid Build Coastguard Worker
190*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_GetDecayTime(SLEnvironmentalReverbItf self,SLmillisecond * pDecayTime)191*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_GetDecayTime(
192*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLmillisecond *pDecayTime)
193*bebae9c0SAndroid Build Coastguard Worker {
194*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
195*bebae9c0SAndroid Build Coastguard Worker
196*bebae9c0SAndroid Build Coastguard Worker if (NULL == pDecayTime) {
197*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
198*bebae9c0SAndroid Build Coastguard Worker } else {
199*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
200*bebae9c0SAndroid Build Coastguard Worker interface_lock_shared(thiz);
201*bebae9c0SAndroid Build Coastguard Worker #if 1 // !defined(ANDROID)
202*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
203*bebae9c0SAndroid Build Coastguard Worker #else
204*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
205*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
206*bebae9c0SAndroid Build Coastguard Worker } else {
207*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_getParam(thiz->mEnvironmentalReverbEffect,
208*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_DECAY_TIME, &thiz->mProperties.decayTime);
209*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
210*bebae9c0SAndroid Build Coastguard Worker }
211*bebae9c0SAndroid Build Coastguard Worker #endif
212*bebae9c0SAndroid Build Coastguard Worker *pDecayTime = thiz->mProperties.decayTime;
213*bebae9c0SAndroid Build Coastguard Worker
214*bebae9c0SAndroid Build Coastguard Worker interface_unlock_shared(thiz);
215*bebae9c0SAndroid Build Coastguard Worker }
216*bebae9c0SAndroid Build Coastguard Worker
217*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
218*bebae9c0SAndroid Build Coastguard Worker }
219*bebae9c0SAndroid Build Coastguard Worker
220*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_SetDecayHFRatio(SLEnvironmentalReverbItf self,SLpermille decayHFRatio)221*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_SetDecayHFRatio(
222*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLpermille decayHFRatio)
223*bebae9c0SAndroid Build Coastguard Worker {
224*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
225*bebae9c0SAndroid Build Coastguard Worker
226*bebae9c0SAndroid Build Coastguard Worker if (!(100 <= decayHFRatio && decayHFRatio <= 2000)) {
227*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
228*bebae9c0SAndroid Build Coastguard Worker } else {
229*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
230*bebae9c0SAndroid Build Coastguard Worker interface_lock_exclusive(thiz);
231*bebae9c0SAndroid Build Coastguard Worker thiz->mProperties.decayHFRatio = decayHFRatio;
232*bebae9c0SAndroid Build Coastguard Worker #if !defined(ANDROID)
233*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
234*bebae9c0SAndroid Build Coastguard Worker #else
235*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
236*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
237*bebae9c0SAndroid Build Coastguard Worker } else {
238*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_setParam(thiz->mEnvironmentalReverbEffect,
239*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_DECAY_HF_RATIO, &decayHFRatio);
240*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
241*bebae9c0SAndroid Build Coastguard Worker }
242*bebae9c0SAndroid Build Coastguard Worker #endif
243*bebae9c0SAndroid Build Coastguard Worker interface_unlock_exclusive(thiz);
244*bebae9c0SAndroid Build Coastguard Worker }
245*bebae9c0SAndroid Build Coastguard Worker
246*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
247*bebae9c0SAndroid Build Coastguard Worker }
248*bebae9c0SAndroid Build Coastguard Worker
249*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_GetDecayHFRatio(SLEnvironmentalReverbItf self,SLpermille * pDecayHFRatio)250*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_GetDecayHFRatio(
251*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLpermille *pDecayHFRatio)
252*bebae9c0SAndroid Build Coastguard Worker {
253*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
254*bebae9c0SAndroid Build Coastguard Worker
255*bebae9c0SAndroid Build Coastguard Worker if (NULL == pDecayHFRatio) {
256*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
257*bebae9c0SAndroid Build Coastguard Worker } else {
258*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
259*bebae9c0SAndroid Build Coastguard Worker interface_lock_shared(thiz);
260*bebae9c0SAndroid Build Coastguard Worker #if 1 // !defined(ANDROID)
261*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
262*bebae9c0SAndroid Build Coastguard Worker #else
263*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
264*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
265*bebae9c0SAndroid Build Coastguard Worker } else {
266*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_getParam(thiz->mEnvironmentalReverbEffect,
267*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_DECAY_HF_RATIO, &thiz->mProperties.decayHFRatio);
268*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
269*bebae9c0SAndroid Build Coastguard Worker }
270*bebae9c0SAndroid Build Coastguard Worker #endif
271*bebae9c0SAndroid Build Coastguard Worker *pDecayHFRatio = thiz->mProperties.decayHFRatio;
272*bebae9c0SAndroid Build Coastguard Worker
273*bebae9c0SAndroid Build Coastguard Worker interface_unlock_shared(thiz);
274*bebae9c0SAndroid Build Coastguard Worker }
275*bebae9c0SAndroid Build Coastguard Worker
276*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
277*bebae9c0SAndroid Build Coastguard Worker }
278*bebae9c0SAndroid Build Coastguard Worker
279*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_SetReflectionsLevel(SLEnvironmentalReverbItf self,SLmillibel reflectionsLevel)280*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_SetReflectionsLevel(
281*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLmillibel reflectionsLevel)
282*bebae9c0SAndroid Build Coastguard Worker {
283*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
284*bebae9c0SAndroid Build Coastguard Worker
285*bebae9c0SAndroid Build Coastguard Worker //if (!(SL_MILLIBEL_MIN <= reflectionsLevel && reflectionsLevel <= 1000)) {
286*bebae9c0SAndroid Build Coastguard Worker // comparison (SL_MILLIBEL_MIN <= reflectionsLevel) is always true due to range of SLmillibel
287*bebae9c0SAndroid Build Coastguard Worker if (!(reflectionsLevel <= 1000)) {
288*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
289*bebae9c0SAndroid Build Coastguard Worker } else {
290*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
291*bebae9c0SAndroid Build Coastguard Worker interface_lock_exclusive(thiz);
292*bebae9c0SAndroid Build Coastguard Worker thiz->mProperties.reflectionsLevel = reflectionsLevel;
293*bebae9c0SAndroid Build Coastguard Worker #if !defined(ANDROID)
294*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
295*bebae9c0SAndroid Build Coastguard Worker #else
296*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
297*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
298*bebae9c0SAndroid Build Coastguard Worker } else {
299*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_setParam(thiz->mEnvironmentalReverbEffect,
300*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_REFLECTIONS_LEVEL, &reflectionsLevel);
301*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
302*bebae9c0SAndroid Build Coastguard Worker }
303*bebae9c0SAndroid Build Coastguard Worker #endif
304*bebae9c0SAndroid Build Coastguard Worker interface_unlock_exclusive(thiz);
305*bebae9c0SAndroid Build Coastguard Worker }
306*bebae9c0SAndroid Build Coastguard Worker
307*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
308*bebae9c0SAndroid Build Coastguard Worker }
309*bebae9c0SAndroid Build Coastguard Worker
310*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_GetReflectionsLevel(SLEnvironmentalReverbItf self,SLmillibel * pReflectionsLevel)311*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_GetReflectionsLevel(
312*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLmillibel *pReflectionsLevel)
313*bebae9c0SAndroid Build Coastguard Worker {
314*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
315*bebae9c0SAndroid Build Coastguard Worker
316*bebae9c0SAndroid Build Coastguard Worker if (NULL == pReflectionsLevel) {
317*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
318*bebae9c0SAndroid Build Coastguard Worker } else {
319*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
320*bebae9c0SAndroid Build Coastguard Worker interface_lock_shared(thiz);
321*bebae9c0SAndroid Build Coastguard Worker #if 1 // !defined(ANDROID)
322*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
323*bebae9c0SAndroid Build Coastguard Worker #else
324*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
325*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
326*bebae9c0SAndroid Build Coastguard Worker } else {
327*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_getParam(thiz->mEnvironmentalReverbEffect,
328*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_REFLECTIONS_LEVEL, &thiz->mProperties.reflectionsLevel);
329*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
330*bebae9c0SAndroid Build Coastguard Worker }
331*bebae9c0SAndroid Build Coastguard Worker #endif
332*bebae9c0SAndroid Build Coastguard Worker *pReflectionsLevel = thiz->mProperties.reflectionsLevel;
333*bebae9c0SAndroid Build Coastguard Worker
334*bebae9c0SAndroid Build Coastguard Worker interface_unlock_shared(thiz);
335*bebae9c0SAndroid Build Coastguard Worker }
336*bebae9c0SAndroid Build Coastguard Worker
337*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
338*bebae9c0SAndroid Build Coastguard Worker }
339*bebae9c0SAndroid Build Coastguard Worker
340*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_SetReflectionsDelay(SLEnvironmentalReverbItf self,SLmillisecond reflectionsDelay)341*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_SetReflectionsDelay(
342*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLmillisecond reflectionsDelay)
343*bebae9c0SAndroid Build Coastguard Worker {
344*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
345*bebae9c0SAndroid Build Coastguard Worker
346*bebae9c0SAndroid Build Coastguard Worker if (!(/* 0 <= reflectionsDelay && */ reflectionsDelay <= 300)) {
347*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
348*bebae9c0SAndroid Build Coastguard Worker } else {
349*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
350*bebae9c0SAndroid Build Coastguard Worker interface_lock_exclusive(thiz);
351*bebae9c0SAndroid Build Coastguard Worker thiz->mProperties.reflectionsDelay = reflectionsDelay;
352*bebae9c0SAndroid Build Coastguard Worker #if !defined(ANDROID)
353*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
354*bebae9c0SAndroid Build Coastguard Worker #else
355*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
356*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
357*bebae9c0SAndroid Build Coastguard Worker } else {
358*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_setParam(thiz->mEnvironmentalReverbEffect,
359*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_REFLECTIONS_DELAY, &reflectionsDelay);
360*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
361*bebae9c0SAndroid Build Coastguard Worker }
362*bebae9c0SAndroid Build Coastguard Worker #endif
363*bebae9c0SAndroid Build Coastguard Worker interface_unlock_exclusive(thiz);
364*bebae9c0SAndroid Build Coastguard Worker }
365*bebae9c0SAndroid Build Coastguard Worker
366*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
367*bebae9c0SAndroid Build Coastguard Worker }
368*bebae9c0SAndroid Build Coastguard Worker
369*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_GetReflectionsDelay(SLEnvironmentalReverbItf self,SLmillisecond * pReflectionsDelay)370*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_GetReflectionsDelay(
371*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLmillisecond *pReflectionsDelay)
372*bebae9c0SAndroid Build Coastguard Worker {
373*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
374*bebae9c0SAndroid Build Coastguard Worker
375*bebae9c0SAndroid Build Coastguard Worker if (NULL == pReflectionsDelay) {
376*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
377*bebae9c0SAndroid Build Coastguard Worker } else {
378*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
379*bebae9c0SAndroid Build Coastguard Worker interface_lock_shared(thiz);
380*bebae9c0SAndroid Build Coastguard Worker #if 1 // !defined(ANDROID)
381*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
382*bebae9c0SAndroid Build Coastguard Worker #else
383*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
384*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
385*bebae9c0SAndroid Build Coastguard Worker } else {
386*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_getParam(thiz->mEnvironmentalReverbEffect,
387*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_REFLECTIONS_DELAY, &thiz->mProperties.reflectionsDelay);
388*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
389*bebae9c0SAndroid Build Coastguard Worker }
390*bebae9c0SAndroid Build Coastguard Worker #endif
391*bebae9c0SAndroid Build Coastguard Worker *pReflectionsDelay = thiz->mProperties.reflectionsDelay;
392*bebae9c0SAndroid Build Coastguard Worker
393*bebae9c0SAndroid Build Coastguard Worker interface_unlock_shared(thiz);
394*bebae9c0SAndroid Build Coastguard Worker }
395*bebae9c0SAndroid Build Coastguard Worker
396*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
397*bebae9c0SAndroid Build Coastguard Worker }
398*bebae9c0SAndroid Build Coastguard Worker
399*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_SetReverbLevel(SLEnvironmentalReverbItf self,SLmillibel reverbLevel)400*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_SetReverbLevel(
401*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLmillibel reverbLevel)
402*bebae9c0SAndroid Build Coastguard Worker {
403*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
404*bebae9c0SAndroid Build Coastguard Worker
405*bebae9c0SAndroid Build Coastguard Worker //if (!(SL_MILLIBEL_MIN <= reverbLevel && reverbLevel <= 2000)) {
406*bebae9c0SAndroid Build Coastguard Worker // comparison (SL_MILLIBEL_MIN <= reverbLevel) is always true due to range of SLmillibel
407*bebae9c0SAndroid Build Coastguard Worker if (!(reverbLevel <= 2000)) {
408*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
409*bebae9c0SAndroid Build Coastguard Worker } else {
410*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
411*bebae9c0SAndroid Build Coastguard Worker interface_lock_exclusive(thiz);
412*bebae9c0SAndroid Build Coastguard Worker thiz->mProperties.reverbLevel = reverbLevel;
413*bebae9c0SAndroid Build Coastguard Worker #if !defined(ANDROID)
414*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
415*bebae9c0SAndroid Build Coastguard Worker #else
416*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
417*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
418*bebae9c0SAndroid Build Coastguard Worker } else {
419*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_setParam(thiz->mEnvironmentalReverbEffect,
420*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_REVERB_LEVEL, &reverbLevel);
421*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
422*bebae9c0SAndroid Build Coastguard Worker }
423*bebae9c0SAndroid Build Coastguard Worker #endif
424*bebae9c0SAndroid Build Coastguard Worker interface_unlock_exclusive(thiz);
425*bebae9c0SAndroid Build Coastguard Worker }
426*bebae9c0SAndroid Build Coastguard Worker
427*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
428*bebae9c0SAndroid Build Coastguard Worker }
429*bebae9c0SAndroid Build Coastguard Worker
430*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_GetReverbLevel(SLEnvironmentalReverbItf self,SLmillibel * pReverbLevel)431*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_GetReverbLevel(
432*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLmillibel *pReverbLevel)
433*bebae9c0SAndroid Build Coastguard Worker {
434*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
435*bebae9c0SAndroid Build Coastguard Worker
436*bebae9c0SAndroid Build Coastguard Worker if (NULL == pReverbLevel) {
437*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
438*bebae9c0SAndroid Build Coastguard Worker } else {
439*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
440*bebae9c0SAndroid Build Coastguard Worker interface_lock_shared(thiz);
441*bebae9c0SAndroid Build Coastguard Worker #if 1 // !defined(ANDROID)
442*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
443*bebae9c0SAndroid Build Coastguard Worker #else
444*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
445*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
446*bebae9c0SAndroid Build Coastguard Worker } else {
447*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_getParam(thiz->mEnvironmentalReverbEffect,
448*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_REVERB_LEVEL, &thiz->mProperties.reverbLevel);
449*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
450*bebae9c0SAndroid Build Coastguard Worker }
451*bebae9c0SAndroid Build Coastguard Worker #endif
452*bebae9c0SAndroid Build Coastguard Worker *pReverbLevel = thiz->mProperties.reverbLevel;
453*bebae9c0SAndroid Build Coastguard Worker
454*bebae9c0SAndroid Build Coastguard Worker interface_unlock_shared(thiz);
455*bebae9c0SAndroid Build Coastguard Worker }
456*bebae9c0SAndroid Build Coastguard Worker
457*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
458*bebae9c0SAndroid Build Coastguard Worker }
459*bebae9c0SAndroid Build Coastguard Worker
460*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_SetReverbDelay(SLEnvironmentalReverbItf self,SLmillisecond reverbDelay)461*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_SetReverbDelay(
462*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLmillisecond reverbDelay)
463*bebae9c0SAndroid Build Coastguard Worker {
464*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
465*bebae9c0SAndroid Build Coastguard Worker
466*bebae9c0SAndroid Build Coastguard Worker if (!(/* 0 <= reverbDelay && */ reverbDelay <= 100)) {
467*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
468*bebae9c0SAndroid Build Coastguard Worker } else {
469*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
470*bebae9c0SAndroid Build Coastguard Worker interface_lock_exclusive(thiz);
471*bebae9c0SAndroid Build Coastguard Worker thiz->mProperties.reverbDelay = reverbDelay;
472*bebae9c0SAndroid Build Coastguard Worker #if !defined(ANDROID)
473*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
474*bebae9c0SAndroid Build Coastguard Worker #else
475*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
476*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
477*bebae9c0SAndroid Build Coastguard Worker } else {
478*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_setParam(thiz->mEnvironmentalReverbEffect,
479*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_REVERB_DELAY, &reverbDelay);
480*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
481*bebae9c0SAndroid Build Coastguard Worker }
482*bebae9c0SAndroid Build Coastguard Worker #endif
483*bebae9c0SAndroid Build Coastguard Worker interface_unlock_exclusive(thiz);
484*bebae9c0SAndroid Build Coastguard Worker }
485*bebae9c0SAndroid Build Coastguard Worker
486*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
487*bebae9c0SAndroid Build Coastguard Worker }
488*bebae9c0SAndroid Build Coastguard Worker
489*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_GetReverbDelay(SLEnvironmentalReverbItf self,SLmillisecond * pReverbDelay)490*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_GetReverbDelay(
491*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLmillisecond *pReverbDelay)
492*bebae9c0SAndroid Build Coastguard Worker {
493*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
494*bebae9c0SAndroid Build Coastguard Worker
495*bebae9c0SAndroid Build Coastguard Worker if (NULL == pReverbDelay) {
496*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
497*bebae9c0SAndroid Build Coastguard Worker } else {
498*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
499*bebae9c0SAndroid Build Coastguard Worker interface_lock_shared(thiz);
500*bebae9c0SAndroid Build Coastguard Worker #if 1 // !defined(ANDROID)
501*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
502*bebae9c0SAndroid Build Coastguard Worker #else
503*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
504*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
505*bebae9c0SAndroid Build Coastguard Worker } else {
506*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_getParam(thiz->mEnvironmentalReverbEffect,
507*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_REVERB_DELAY, &thiz->mProperties.reverbDelay);
508*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
509*bebae9c0SAndroid Build Coastguard Worker }
510*bebae9c0SAndroid Build Coastguard Worker #endif
511*bebae9c0SAndroid Build Coastguard Worker *pReverbDelay = thiz->mProperties.reverbDelay;
512*bebae9c0SAndroid Build Coastguard Worker
513*bebae9c0SAndroid Build Coastguard Worker interface_unlock_shared(thiz);
514*bebae9c0SAndroid Build Coastguard Worker }
515*bebae9c0SAndroid Build Coastguard Worker
516*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
517*bebae9c0SAndroid Build Coastguard Worker }
518*bebae9c0SAndroid Build Coastguard Worker
519*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_SetDiffusion(SLEnvironmentalReverbItf self,SLpermille diffusion)520*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_SetDiffusion(
521*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLpermille diffusion)
522*bebae9c0SAndroid Build Coastguard Worker {
523*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
524*bebae9c0SAndroid Build Coastguard Worker
525*bebae9c0SAndroid Build Coastguard Worker if (!(0 <= diffusion && diffusion <= 1000)) {
526*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
527*bebae9c0SAndroid Build Coastguard Worker } else {
528*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
529*bebae9c0SAndroid Build Coastguard Worker interface_lock_exclusive(thiz);
530*bebae9c0SAndroid Build Coastguard Worker thiz->mProperties.diffusion = diffusion;
531*bebae9c0SAndroid Build Coastguard Worker #if !defined(ANDROID)
532*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
533*bebae9c0SAndroid Build Coastguard Worker #else
534*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
535*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
536*bebae9c0SAndroid Build Coastguard Worker } else {
537*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_setParam(thiz->mEnvironmentalReverbEffect,
538*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_DIFFUSION, &diffusion);
539*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
540*bebae9c0SAndroid Build Coastguard Worker }
541*bebae9c0SAndroid Build Coastguard Worker #endif
542*bebae9c0SAndroid Build Coastguard Worker interface_unlock_exclusive(thiz);
543*bebae9c0SAndroid Build Coastguard Worker }
544*bebae9c0SAndroid Build Coastguard Worker
545*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
546*bebae9c0SAndroid Build Coastguard Worker }
547*bebae9c0SAndroid Build Coastguard Worker
548*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_GetDiffusion(SLEnvironmentalReverbItf self,SLpermille * pDiffusion)549*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_GetDiffusion(SLEnvironmentalReverbItf self,
550*bebae9c0SAndroid Build Coastguard Worker SLpermille *pDiffusion)
551*bebae9c0SAndroid Build Coastguard Worker {
552*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
553*bebae9c0SAndroid Build Coastguard Worker
554*bebae9c0SAndroid Build Coastguard Worker if (NULL == pDiffusion) {
555*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
556*bebae9c0SAndroid Build Coastguard Worker } else {
557*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
558*bebae9c0SAndroid Build Coastguard Worker interface_lock_shared(thiz);
559*bebae9c0SAndroid Build Coastguard Worker #if 1 // !defined(ANDROID)
560*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
561*bebae9c0SAndroid Build Coastguard Worker #else
562*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
563*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
564*bebae9c0SAndroid Build Coastguard Worker } else {
565*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_getParam(thiz->mEnvironmentalReverbEffect,
566*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_DIFFUSION, &thiz->mProperties.diffusion);
567*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
568*bebae9c0SAndroid Build Coastguard Worker }
569*bebae9c0SAndroid Build Coastguard Worker #endif
570*bebae9c0SAndroid Build Coastguard Worker *pDiffusion = thiz->mProperties.diffusion;
571*bebae9c0SAndroid Build Coastguard Worker
572*bebae9c0SAndroid Build Coastguard Worker interface_unlock_shared(thiz);
573*bebae9c0SAndroid Build Coastguard Worker }
574*bebae9c0SAndroid Build Coastguard Worker
575*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
576*bebae9c0SAndroid Build Coastguard Worker }
577*bebae9c0SAndroid Build Coastguard Worker
578*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_SetDensity(SLEnvironmentalReverbItf self,SLpermille density)579*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_SetDensity(SLEnvironmentalReverbItf self,
580*bebae9c0SAndroid Build Coastguard Worker SLpermille density)
581*bebae9c0SAndroid Build Coastguard Worker {
582*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
583*bebae9c0SAndroid Build Coastguard Worker
584*bebae9c0SAndroid Build Coastguard Worker if (!(0 <= density && density <= 1000)) {
585*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
586*bebae9c0SAndroid Build Coastguard Worker } else {
587*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
588*bebae9c0SAndroid Build Coastguard Worker interface_lock_exclusive(thiz);
589*bebae9c0SAndroid Build Coastguard Worker thiz->mProperties.density = density;
590*bebae9c0SAndroid Build Coastguard Worker #if !defined(ANDROID)
591*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
592*bebae9c0SAndroid Build Coastguard Worker #else
593*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
594*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
595*bebae9c0SAndroid Build Coastguard Worker } else {
596*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_setParam(thiz->mEnvironmentalReverbEffect,
597*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_DENSITY, &density);
598*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
599*bebae9c0SAndroid Build Coastguard Worker }
600*bebae9c0SAndroid Build Coastguard Worker #endif
601*bebae9c0SAndroid Build Coastguard Worker interface_unlock_exclusive(thiz);
602*bebae9c0SAndroid Build Coastguard Worker }
603*bebae9c0SAndroid Build Coastguard Worker
604*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
605*bebae9c0SAndroid Build Coastguard Worker }
606*bebae9c0SAndroid Build Coastguard Worker
607*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_GetDensity(SLEnvironmentalReverbItf self,SLpermille * pDensity)608*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_GetDensity(SLEnvironmentalReverbItf self,
609*bebae9c0SAndroid Build Coastguard Worker SLpermille *pDensity)
610*bebae9c0SAndroid Build Coastguard Worker {
611*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
612*bebae9c0SAndroid Build Coastguard Worker
613*bebae9c0SAndroid Build Coastguard Worker if (NULL == pDensity) {
614*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
615*bebae9c0SAndroid Build Coastguard Worker } else {
616*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
617*bebae9c0SAndroid Build Coastguard Worker interface_lock_shared(thiz);
618*bebae9c0SAndroid Build Coastguard Worker #if 1 // !defined(ANDROID)
619*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
620*bebae9c0SAndroid Build Coastguard Worker #else
621*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
622*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
623*bebae9c0SAndroid Build Coastguard Worker } else {
624*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_getParam(thiz->mEnvironmentalReverbEffect,
625*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_DENSITY, &thiz->mProperties.density);
626*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
627*bebae9c0SAndroid Build Coastguard Worker }
628*bebae9c0SAndroid Build Coastguard Worker #endif
629*bebae9c0SAndroid Build Coastguard Worker *pDensity = thiz->mProperties.density;
630*bebae9c0SAndroid Build Coastguard Worker
631*bebae9c0SAndroid Build Coastguard Worker interface_unlock_shared(thiz);
632*bebae9c0SAndroid Build Coastguard Worker }
633*bebae9c0SAndroid Build Coastguard Worker
634*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
635*bebae9c0SAndroid Build Coastguard Worker }
636*bebae9c0SAndroid Build Coastguard Worker
637*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_SetEnvironmentalReverbProperties(SLEnvironmentalReverbItf self,const SLEnvironmentalReverbSettings * pProperties)638*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_SetEnvironmentalReverbProperties(SLEnvironmentalReverbItf self,
639*bebae9c0SAndroid Build Coastguard Worker const SLEnvironmentalReverbSettings *pProperties)
640*bebae9c0SAndroid Build Coastguard Worker {
641*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
642*bebae9c0SAndroid Build Coastguard Worker
643*bebae9c0SAndroid Build Coastguard Worker // note that it's unnecessary to verify that any level stored inside the "properties" struct
644*bebae9c0SAndroid Build Coastguard Worker // is >= SL_MILLIBEL_MIN before using it, due to range of SLmillibel
645*bebae9c0SAndroid Build Coastguard Worker
646*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
647*bebae9c0SAndroid Build Coastguard Worker do {
648*bebae9c0SAndroid Build Coastguard Worker if (NULL == pProperties)
649*bebae9c0SAndroid Build Coastguard Worker break;
650*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbSettings properties = *pProperties;
651*bebae9c0SAndroid Build Coastguard Worker if (!(properties.roomLevel <= 0))
652*bebae9c0SAndroid Build Coastguard Worker break;
653*bebae9c0SAndroid Build Coastguard Worker if (!(properties.roomHFLevel <= 0))
654*bebae9c0SAndroid Build Coastguard Worker break;
655*bebae9c0SAndroid Build Coastguard Worker if (!(100 <= properties.decayTime && properties.decayTime <= 20000))
656*bebae9c0SAndroid Build Coastguard Worker break;
657*bebae9c0SAndroid Build Coastguard Worker if (!(100 <= properties.decayHFRatio && properties.decayHFRatio <= 2000))
658*bebae9c0SAndroid Build Coastguard Worker break;
659*bebae9c0SAndroid Build Coastguard Worker if (!(properties.reflectionsLevel <= 1000))
660*bebae9c0SAndroid Build Coastguard Worker break;
661*bebae9c0SAndroid Build Coastguard Worker if (!(/* 0 <= properties.reflectionsDelay && */ properties.reflectionsDelay <= 300))
662*bebae9c0SAndroid Build Coastguard Worker break;
663*bebae9c0SAndroid Build Coastguard Worker if (!(properties.reverbLevel <= 2000))
664*bebae9c0SAndroid Build Coastguard Worker break;
665*bebae9c0SAndroid Build Coastguard Worker if (!(/* 0 <= properties.reverbDelay && */ properties.reverbDelay <= 100))
666*bebae9c0SAndroid Build Coastguard Worker break;
667*bebae9c0SAndroid Build Coastguard Worker if (!(0 <= properties.diffusion && properties.diffusion <= 1000))
668*bebae9c0SAndroid Build Coastguard Worker break;
669*bebae9c0SAndroid Build Coastguard Worker if (!(0 <= properties.density && properties.density <= 1000))
670*bebae9c0SAndroid Build Coastguard Worker break;
671*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
672*bebae9c0SAndroid Build Coastguard Worker interface_lock_exclusive(thiz);
673*bebae9c0SAndroid Build Coastguard Worker thiz->mProperties = properties;
674*bebae9c0SAndroid Build Coastguard Worker #if !defined(ANDROID)
675*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
676*bebae9c0SAndroid Build Coastguard Worker #else
677*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
678*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
679*bebae9c0SAndroid Build Coastguard Worker } else {
680*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_setParam(thiz->mEnvironmentalReverbEffect,
681*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_PROPERTIES, &properties);
682*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
683*bebae9c0SAndroid Build Coastguard Worker }
684*bebae9c0SAndroid Build Coastguard Worker #endif
685*bebae9c0SAndroid Build Coastguard Worker interface_unlock_exclusive(thiz);
686*bebae9c0SAndroid Build Coastguard Worker } while (0);
687*bebae9c0SAndroid Build Coastguard Worker
688*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
689*bebae9c0SAndroid Build Coastguard Worker }
690*bebae9c0SAndroid Build Coastguard Worker
691*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_GetEnvironmentalReverbProperties(SLEnvironmentalReverbItf self,SLEnvironmentalReverbSettings * pProperties)692*bebae9c0SAndroid Build Coastguard Worker static SLresult IEnvironmentalReverb_GetEnvironmentalReverbProperties(
693*bebae9c0SAndroid Build Coastguard Worker SLEnvironmentalReverbItf self, SLEnvironmentalReverbSettings *pProperties)
694*bebae9c0SAndroid Build Coastguard Worker {
695*bebae9c0SAndroid Build Coastguard Worker SL_ENTER_INTERFACE
696*bebae9c0SAndroid Build Coastguard Worker
697*bebae9c0SAndroid Build Coastguard Worker if (NULL == pProperties) {
698*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_PARAMETER_INVALID;
699*bebae9c0SAndroid Build Coastguard Worker } else {
700*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
701*bebae9c0SAndroid Build Coastguard Worker interface_lock_shared(thiz);
702*bebae9c0SAndroid Build Coastguard Worker #if 1 // !defined(ANDROID)
703*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_SUCCESS;
704*bebae9c0SAndroid Build Coastguard Worker #else
705*bebae9c0SAndroid Build Coastguard Worker if (NO_ENVREVERB(thiz)) {
706*bebae9c0SAndroid Build Coastguard Worker result = SL_RESULT_CONTROL_LOST;
707*bebae9c0SAndroid Build Coastguard Worker } else {
708*bebae9c0SAndroid Build Coastguard Worker android::status_t status = android_erev_getParam(thiz->mEnvironmentalReverbEffect,
709*bebae9c0SAndroid Build Coastguard Worker REVERB_PARAM_PROPERTIES, &thiz->mProperties);
710*bebae9c0SAndroid Build Coastguard Worker result = android_fx_statusToResult(status);
711*bebae9c0SAndroid Build Coastguard Worker }
712*bebae9c0SAndroid Build Coastguard Worker #endif
713*bebae9c0SAndroid Build Coastguard Worker *pProperties = thiz->mProperties;
714*bebae9c0SAndroid Build Coastguard Worker
715*bebae9c0SAndroid Build Coastguard Worker interface_unlock_shared(thiz);
716*bebae9c0SAndroid Build Coastguard Worker }
717*bebae9c0SAndroid Build Coastguard Worker
718*bebae9c0SAndroid Build Coastguard Worker SL_LEAVE_INTERFACE
719*bebae9c0SAndroid Build Coastguard Worker }
720*bebae9c0SAndroid Build Coastguard Worker
721*bebae9c0SAndroid Build Coastguard Worker
722*bebae9c0SAndroid Build Coastguard Worker static const struct SLEnvironmentalReverbItf_ IEnvironmentalReverb_Itf = {
723*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_SetRoomLevel,
724*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_GetRoomLevel,
725*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_SetRoomHFLevel,
726*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_GetRoomHFLevel,
727*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_SetDecayTime,
728*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_GetDecayTime,
729*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_SetDecayHFRatio,
730*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_GetDecayHFRatio,
731*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_SetReflectionsLevel,
732*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_GetReflectionsLevel,
733*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_SetReflectionsDelay,
734*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_GetReflectionsDelay,
735*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_SetReverbLevel,
736*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_GetReverbLevel,
737*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_SetReverbDelay,
738*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_GetReverbDelay,
739*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_SetDiffusion,
740*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_GetDiffusion,
741*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_SetDensity,
742*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_GetDensity,
743*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_SetEnvironmentalReverbProperties,
744*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb_GetEnvironmentalReverbProperties
745*bebae9c0SAndroid Build Coastguard Worker };
746*bebae9c0SAndroid Build Coastguard Worker
747*bebae9c0SAndroid Build Coastguard Worker static const SLEnvironmentalReverbSettings IEnvironmentalReverb_default = {
748*bebae9c0SAndroid Build Coastguard Worker SL_MILLIBEL_MIN, // roomLevel
749*bebae9c0SAndroid Build Coastguard Worker 0, // roomHFLevel
750*bebae9c0SAndroid Build Coastguard Worker 1000, // decayTime
751*bebae9c0SAndroid Build Coastguard Worker 500, // decayHFRatio
752*bebae9c0SAndroid Build Coastguard Worker SL_MILLIBEL_MIN, // reflectionsLevel
753*bebae9c0SAndroid Build Coastguard Worker 20, // reflectionsDelay
754*bebae9c0SAndroid Build Coastguard Worker SL_MILLIBEL_MIN, // reverbLevel
755*bebae9c0SAndroid Build Coastguard Worker 40, // reverbDelay
756*bebae9c0SAndroid Build Coastguard Worker 1000, // diffusion
757*bebae9c0SAndroid Build Coastguard Worker 1000 // density
758*bebae9c0SAndroid Build Coastguard Worker };
759*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_init(void * self)760*bebae9c0SAndroid Build Coastguard Worker void IEnvironmentalReverb_init(void *self)
761*bebae9c0SAndroid Build Coastguard Worker {
762*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
763*bebae9c0SAndroid Build Coastguard Worker thiz->mItf = &IEnvironmentalReverb_Itf;
764*bebae9c0SAndroid Build Coastguard Worker thiz->mProperties = IEnvironmentalReverb_default;
765*bebae9c0SAndroid Build Coastguard Worker #if defined(ANDROID)
766*bebae9c0SAndroid Build Coastguard Worker memset(&thiz->mEnvironmentalReverbDescriptor, 0, sizeof(effect_descriptor_t));
767*bebae9c0SAndroid Build Coastguard Worker // placement new (explicit constructor)
768*bebae9c0SAndroid Build Coastguard Worker (void) new (&thiz->mEnvironmentalReverbEffect) android::sp<android::AudioEffect>();
769*bebae9c0SAndroid Build Coastguard Worker #endif
770*bebae9c0SAndroid Build Coastguard Worker }
771*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_deinit(void * self)772*bebae9c0SAndroid Build Coastguard Worker void IEnvironmentalReverb_deinit(void *self)
773*bebae9c0SAndroid Build Coastguard Worker {
774*bebae9c0SAndroid Build Coastguard Worker #if defined(ANDROID)
775*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
776*bebae9c0SAndroid Build Coastguard Worker // explicit destructor
777*bebae9c0SAndroid Build Coastguard Worker thiz->mEnvironmentalReverbEffect.~sp();
778*bebae9c0SAndroid Build Coastguard Worker #endif
779*bebae9c0SAndroid Build Coastguard Worker }
780*bebae9c0SAndroid Build Coastguard Worker
IEnvironmentalReverb_Expose(void * self)781*bebae9c0SAndroid Build Coastguard Worker bool IEnvironmentalReverb_Expose(void *self)
782*bebae9c0SAndroid Build Coastguard Worker {
783*bebae9c0SAndroid Build Coastguard Worker #if defined(ANDROID)
784*bebae9c0SAndroid Build Coastguard Worker IEnvironmentalReverb *thiz = (IEnvironmentalReverb *) self;
785*bebae9c0SAndroid Build Coastguard Worker if (!android_fx_initEffectDescriptor(SL_IID_ENVIRONMENTALREVERB,
786*bebae9c0SAndroid Build Coastguard Worker &thiz->mEnvironmentalReverbDescriptor)) {
787*bebae9c0SAndroid Build Coastguard Worker SL_LOGE("EnvironmentalReverb initialization failed.");
788*bebae9c0SAndroid Build Coastguard Worker return false;
789*bebae9c0SAndroid Build Coastguard Worker }
790*bebae9c0SAndroid Build Coastguard Worker #endif
791*bebae9c0SAndroid Build Coastguard Worker return true;
792*bebae9c0SAndroid Build Coastguard Worker }
793