IVolume.cpp revision ab7724988c1ff39ad3fc95a7ae0e638357708f7c
10b167267bda99b68346045ccab14e810121d5de4Glenn Kasten/*
20b167267bda99b68346045ccab14e810121d5de4Glenn Kasten * Copyright (C) 2010 The Android Open Source Project
30b167267bda99b68346045ccab14e810121d5de4Glenn Kasten *
40b167267bda99b68346045ccab14e810121d5de4Glenn Kasten * Licensed under the Apache License, Version 2.0 (the "License");
50b167267bda99b68346045ccab14e810121d5de4Glenn Kasten * you may not use this file except in compliance with the License.
60b167267bda99b68346045ccab14e810121d5de4Glenn Kasten * You may obtain a copy of the License at
70b167267bda99b68346045ccab14e810121d5de4Glenn Kasten *
80b167267bda99b68346045ccab14e810121d5de4Glenn Kasten *      http://www.apache.org/licenses/LICENSE-2.0
90b167267bda99b68346045ccab14e810121d5de4Glenn Kasten *
100b167267bda99b68346045ccab14e810121d5de4Glenn Kasten * Unless required by applicable law or agreed to in writing, software
110b167267bda99b68346045ccab14e810121d5de4Glenn Kasten * distributed under the License is distributed on an "AS IS" BASIS,
120b167267bda99b68346045ccab14e810121d5de4Glenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
130b167267bda99b68346045ccab14e810121d5de4Glenn Kasten * See the License for the specific language governing permissions and
140b167267bda99b68346045ccab14e810121d5de4Glenn Kasten * limitations under the License.
150b167267bda99b68346045ccab14e810121d5de4Glenn Kasten */
160b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
170b167267bda99b68346045ccab14e810121d5de4Glenn Kasten/* Volume implementation */
180b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
19979a3f8743646af9999a89dff9e13b972b7efd87Glenn Kasten#include "sles_allinclusive.h"
20979a3f8743646af9999a89dff9e13b972b7efd87Glenn Kasten
21ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
220b167267bda99b68346045ccab14e810121d5de4Glenn Kastenstatic SLresult IVolume_SetVolumeLevel(SLVolumeItf self, SLmillibel level)
230b167267bda99b68346045ccab14e810121d5de4Glenn Kasten{
24ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
25ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
26ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (!((SL_MILLIBEL_MIN <= level) && (level <= PLATFORM_MILLIBEL_MAX_VOLUME))) {
27ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
28ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
29bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        IVolume *thiz = (IVolume *) self;
30bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        interface_lock_exclusive(thiz);
31bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        SLmillibel oldLevel = thiz->mLevel;
32ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        if (oldLevel != level) {
33bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten            thiz->mLevel = level;
34bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten            interface_unlock_exclusive_attributes(thiz, ATTR_GAIN);
35ab7724988c1ff39ad3fc95a7ae0e638357708f7cGlenn Kasten        } else {
36bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten            interface_unlock_exclusive(thiz);
37ab7724988c1ff39ad3fc95a7ae0e638357708f7cGlenn Kasten        }
38ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_SUCCESS;
39ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
40ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
41ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
420b167267bda99b68346045ccab14e810121d5de4Glenn Kasten}
430b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
44ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
450b167267bda99b68346045ccab14e810121d5de4Glenn Kastenstatic SLresult IVolume_GetVolumeLevel(SLVolumeItf self, SLmillibel *pLevel)
460b167267bda99b68346045ccab14e810121d5de4Glenn Kasten{
47ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
48ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
49ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (NULL == pLevel) {
50ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
51ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
52bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        IVolume *thiz = (IVolume *) self;
53b566926611b2105a46c4ff98238ad06aca54104dGlenn Kasten        interface_lock_shared(thiz);
54bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        SLmillibel level = thiz->mLevel;
55b566926611b2105a46c4ff98238ad06aca54104dGlenn Kasten        interface_unlock_shared(thiz);
56ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        *pLevel = level;
57ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_SUCCESS;
58ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
59ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
60ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
610b167267bda99b68346045ccab14e810121d5de4Glenn Kasten}
620b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
63ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
64d2a7f0d6883a6d3835642e7b282f05ed1c54fe63Glenn Kastenstatic SLresult IVolume_GetMaxVolumeLevel(SLVolumeItf self, SLmillibel *pMaxLevel)
650b167267bda99b68346045ccab14e810121d5de4Glenn Kasten{
66ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
67ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
68ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (NULL == pMaxLevel) {
69ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
70ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
71ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        *pMaxLevel = PLATFORM_MILLIBEL_MAX_VOLUME;
72ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_SUCCESS;
73ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
74ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
75ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
760b167267bda99b68346045ccab14e810121d5de4Glenn Kasten}
770b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
78ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
790b167267bda99b68346045ccab14e810121d5de4Glenn Kastenstatic SLresult IVolume_SetMute(SLVolumeItf self, SLboolean mute)
800b167267bda99b68346045ccab14e810121d5de4Glenn Kasten{
81ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
82ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
83bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    IVolume *thiz = (IVolume *) self;
84d2a7f0d6883a6d3835642e7b282f05ed1c54fe63Glenn Kasten    mute = SL_BOOLEAN_FALSE != mute; // normalize
85bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    interface_lock_exclusive(thiz);
86bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    SLboolean oldMute = thiz->mMute;
87e5bf0d2c9531a7064eb3ddcafaf93ac1b0974037Glenn Kasten    if (oldMute != mute) {
88bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        thiz->mMute = (SLuint8) mute;
89bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        interface_unlock_exclusive_attributes(thiz, ATTR_GAIN);
90ab7724988c1ff39ad3fc95a7ae0e638357708f7cGlenn Kasten    } else {
91bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        interface_unlock_exclusive(thiz);
92ab7724988c1ff39ad3fc95a7ae0e638357708f7cGlenn Kasten    }
93ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    result = SL_RESULT_SUCCESS;
94ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
95ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
960b167267bda99b68346045ccab14e810121d5de4Glenn Kasten}
970b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
98ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
990b167267bda99b68346045ccab14e810121d5de4Glenn Kastenstatic SLresult IVolume_GetMute(SLVolumeItf self, SLboolean *pMute)
1000b167267bda99b68346045ccab14e810121d5de4Glenn Kasten{
101ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
102ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
103ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (NULL == pMute) {
104ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
105ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
106bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        IVolume *thiz = (IVolume *) self;
107b566926611b2105a46c4ff98238ad06aca54104dGlenn Kasten        interface_lock_shared(thiz);
108bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        SLboolean mute = thiz->mMute;
109b566926611b2105a46c4ff98238ad06aca54104dGlenn Kasten        interface_unlock_shared(thiz);
110ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        *pMute = mute;
111ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_SUCCESS;
112ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
113ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
114ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
1150b167267bda99b68346045ccab14e810121d5de4Glenn Kasten}
1160b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
117ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
1180b167267bda99b68346045ccab14e810121d5de4Glenn Kastenstatic SLresult IVolume_EnableStereoPosition(SLVolumeItf self, SLboolean enable)
1190b167267bda99b68346045ccab14e810121d5de4Glenn Kasten{
120ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
121ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
122bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    IVolume *thiz = (IVolume *) self;
123d2a7f0d6883a6d3835642e7b282f05ed1c54fe63Glenn Kasten    enable = SL_BOOLEAN_FALSE != enable; // normalize
124bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    interface_lock_exclusive(thiz);
125bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    SLboolean oldEnable = thiz->mEnableStereoPosition;
126e5bf0d2c9531a7064eb3ddcafaf93ac1b0974037Glenn Kasten    if (oldEnable != enable) {
127bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        thiz->mEnableStereoPosition = (SLuint8) enable;
128bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        interface_unlock_exclusive_attributes(thiz, ATTR_GAIN);
12918abcc4b70fab1f84d6fbebac3a8e34480a6c4d3Glenn Kasten    } else {
130bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        interface_unlock_exclusive(thiz);
13118abcc4b70fab1f84d6fbebac3a8e34480a6c4d3Glenn Kasten    }
132ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    result = SL_RESULT_SUCCESS;
133ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
134ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
1350b167267bda99b68346045ccab14e810121d5de4Glenn Kasten}
1360b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
137ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
138f8acf4b469cdc9d2fe08fb7f6ca007365efc8bc1Jean-Michel Trivistatic SLresult IVolume_IsEnabledStereoPosition(SLVolumeItf self, SLboolean *pEnable)
1390b167267bda99b68346045ccab14e810121d5de4Glenn Kasten{
140ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
141ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
142ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (NULL == pEnable) {
143ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
144ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
145bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        IVolume *thiz = (IVolume *) self;
146b566926611b2105a46c4ff98238ad06aca54104dGlenn Kasten        interface_lock_shared(thiz);
147bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        SLboolean enable = thiz->mEnableStereoPosition;
148b566926611b2105a46c4ff98238ad06aca54104dGlenn Kasten        interface_unlock_shared(thiz);
149ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        *pEnable = enable;
150ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_SUCCESS;
151ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
152ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
153ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
1540b167267bda99b68346045ccab14e810121d5de4Glenn Kasten}
1550b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
156ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
157f8acf4b469cdc9d2fe08fb7f6ca007365efc8bc1Jean-Michel Trivistatic SLresult IVolume_SetStereoPosition(SLVolumeItf self, SLpermille stereoPosition)
1580b167267bda99b68346045ccab14e810121d5de4Glenn Kasten{
159ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
160ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
161ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (!((-1000 <= stereoPosition) && (1000 >= stereoPosition))) {
162ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
163ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
164bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        IVolume *thiz = (IVolume *) self;
165bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        interface_lock_exclusive(thiz);
166bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        SLpermille oldStereoPosition = thiz->mStereoPosition;
167ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        if (oldStereoPosition != stereoPosition) {
168bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten            thiz->mStereoPosition = stereoPosition;
169bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten            interface_unlock_exclusive_attributes(thiz, ATTR_GAIN);
170ab7724988c1ff39ad3fc95a7ae0e638357708f7cGlenn Kasten        } else {
171bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten            interface_unlock_exclusive(thiz);
172ab7724988c1ff39ad3fc95a7ae0e638357708f7cGlenn Kasten        }
173ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_SUCCESS;
174ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
175ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
176ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
1770b167267bda99b68346045ccab14e810121d5de4Glenn Kasten}
1780b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
179ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
180d2a7f0d6883a6d3835642e7b282f05ed1c54fe63Glenn Kastenstatic SLresult IVolume_GetStereoPosition(SLVolumeItf self, SLpermille *pStereoPosition)
1810b167267bda99b68346045ccab14e810121d5de4Glenn Kasten{
182ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_ENTER_INTERFACE
183ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
184ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    if (NULL == pStereoPosition) {
185ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_PARAMETER_INVALID;
186ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    } else {
187bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        IVolume *thiz = (IVolume *) self;
188b566926611b2105a46c4ff98238ad06aca54104dGlenn Kasten        interface_lock_shared(thiz);
189bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten        SLpermille stereoPosition = thiz->mStereoPosition;
190b566926611b2105a46c4ff98238ad06aca54104dGlenn Kasten        interface_unlock_shared(thiz);
191ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        *pStereoPosition = stereoPosition;
192ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten        result = SL_RESULT_SUCCESS;
193ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    }
194ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
195ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten    SL_LEAVE_INTERFACE
1960b167267bda99b68346045ccab14e810121d5de4Glenn Kasten}
1970b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
198ed46c29d6a09112dbbf584c82953f63289596fd6Glenn Kasten
1990b167267bda99b68346045ccab14e810121d5de4Glenn Kastenstatic const struct SLVolumeItf_ IVolume_Itf = {
2000b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    IVolume_SetVolumeLevel,
2010b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    IVolume_GetVolumeLevel,
2020b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    IVolume_GetMaxVolumeLevel,
2030b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    IVolume_SetMute,
2040b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    IVolume_GetMute,
2050b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    IVolume_EnableStereoPosition,
2060b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    IVolume_IsEnabledStereoPosition,
2070b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    IVolume_SetStereoPosition,
2080b167267bda99b68346045ccab14e810121d5de4Glenn Kasten    IVolume_GetStereoPosition
2090b167267bda99b68346045ccab14e810121d5de4Glenn Kasten};
2100b167267bda99b68346045ccab14e810121d5de4Glenn Kasten
2110b167267bda99b68346045ccab14e810121d5de4Glenn Kastenvoid IVolume_init(void *self)
2120b167267bda99b68346045ccab14e810121d5de4Glenn Kasten{
213bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    IVolume *thiz = (IVolume *) self;
214bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mItf = &IVolume_Itf;
215bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mLevel = 0;
216bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mMute = SL_BOOLEAN_FALSE;
217bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mEnableStereoPosition = SL_BOOLEAN_FALSE;
218bcc5c7225e3b7a1dbf2e9e830987f69167acf06fGlenn Kasten    thiz->mStereoPosition = 0;
2190b167267bda99b68346045ccab14e810121d5de4Glenn Kasten}
220