xref: /aosp_15_r20/frameworks/wilhelm/src/classes.cpp (revision bebae9c0e76121f8312ccb50385c080b3a0b023c)
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 /* Classes vs. interfaces */
18*bebae9c0SAndroid Build Coastguard Worker 
19*bebae9c0SAndroid Build Coastguard Worker #include "sles_allinclusive.h"
20*bebae9c0SAndroid Build Coastguard Worker 
21*bebae9c0SAndroid Build Coastguard Worker 
22*bebae9c0SAndroid Build Coastguard Worker #if USE_PROFILES & USE_PROFILES_GAME
23*bebae9c0SAndroid Build Coastguard Worker 
24*bebae9c0SAndroid Build Coastguard Worker // 3DGroup class
25*bebae9c0SAndroid Build Coastguard Worker 
26*bebae9c0SAndroid Build Coastguard Worker static const struct iid_vtable _3DGroup_interfaces[INTERFACES_3DGroup] = {
27*bebae9c0SAndroid Build Coastguard Worker     {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(C3DGroup, mObject)},
28*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT,
29*bebae9c0SAndroid Build Coastguard Worker         offsetof(C3DGroup, mDynamicInterfaceManagement)},
30*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DLOCATION, INTERFACE_IMPLICIT, offsetof(C3DGroup, m3DLocation)},
31*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DDOPPLER, INTERFACE_DYNAMIC_GAME, offsetof(C3DGroup, m3DDoppler)},
32*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DSOURCE, INTERFACE_EXPLICIT_GAME, offsetof(C3DGroup, m3DSource)},
33*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DMACROSCOPIC, INTERFACE_OPTIONAL, offsetof(C3DGroup, m3DMacroscopic)},
34*bebae9c0SAndroid Build Coastguard Worker };
35*bebae9c0SAndroid Build Coastguard Worker 
36*bebae9c0SAndroid Build Coastguard Worker static const ClassTable C3DGroup_class = {
37*bebae9c0SAndroid Build Coastguard Worker     _3DGroup_interfaces,
38*bebae9c0SAndroid Build Coastguard Worker     INTERFACES_3DGroup,
39*bebae9c0SAndroid Build Coastguard Worker     MPH_to_3DGroup,
40*bebae9c0SAndroid Build Coastguard Worker     "3DGroup",
41*bebae9c0SAndroid Build Coastguard Worker     sizeof(C3DGroup),
42*bebae9c0SAndroid Build Coastguard Worker     SL_OBJECTID_3DGROUP,
43*bebae9c0SAndroid Build Coastguard Worker     0,      // OpenMAX AL object ID
44*bebae9c0SAndroid Build Coastguard Worker     NULL,
45*bebae9c0SAndroid Build Coastguard Worker     NULL,
46*bebae9c0SAndroid Build Coastguard Worker     NULL,
47*bebae9c0SAndroid Build Coastguard Worker     C3DGroup_PreDestroy
48*bebae9c0SAndroid Build Coastguard Worker };
49*bebae9c0SAndroid Build Coastguard Worker 
50*bebae9c0SAndroid Build Coastguard Worker #endif
51*bebae9c0SAndroid Build Coastguard Worker 
52*bebae9c0SAndroid Build Coastguard Worker 
53*bebae9c0SAndroid Build Coastguard Worker // AudioPlayer class
54*bebae9c0SAndroid Build Coastguard Worker 
55*bebae9c0SAndroid Build Coastguard Worker static const struct iid_vtable AudioPlayer_interfaces[INTERFACES_AudioPlayer] = {
56*bebae9c0SAndroid Build Coastguard Worker     {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CAudioPlayer, mObject)},
57*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT,
58*bebae9c0SAndroid Build Coastguard Worker         offsetof(CAudioPlayer, mDynamicInterfaceManagement)},
59*bebae9c0SAndroid Build Coastguard Worker     {MPH_PLAY, INTERFACE_IMPLICIT, offsetof(CAudioPlayer, mPlay)},
60*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DDOPPLER, INTERFACE_DYNAMIC_GAME, offsetof(CAudioPlayer, m3DDoppler)},
61*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DGROUPING, INTERFACE_EXPLICIT_GAME, offsetof(CAudioPlayer, m3DGrouping)},
62*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DLOCATION, INTERFACE_EXPLICIT_GAME, offsetof(CAudioPlayer, m3DLocation)},
63*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DSOURCE, INTERFACE_EXPLICIT_GAME, offsetof(CAudioPlayer, m3DSource)},
64*bebae9c0SAndroid Build Coastguard Worker     {MPH_BUFFERQUEUE, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mBufferQueue)},
65*bebae9c0SAndroid Build Coastguard Worker     {MPH_EFFECTSEND, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mEffectSend)},
66*bebae9c0SAndroid Build Coastguard Worker     {MPH_MUTESOLO, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mMuteSolo)},
67*bebae9c0SAndroid Build Coastguard Worker     {MPH_METADATAEXTRACTION, INTERFACE_DYNAMIC,
68*bebae9c0SAndroid Build Coastguard Worker         offsetof(CAudioPlayer, mMetadataExtraction)},
69*bebae9c0SAndroid Build Coastguard Worker     {MPH_METADATATRAVERSAL, INTERFACE_DYNAMIC_GAME_MUSIC,
70*bebae9c0SAndroid Build Coastguard Worker         offsetof(CAudioPlayer, mMetadataTraversal)},
71*bebae9c0SAndroid Build Coastguard Worker     {MPH_PREFETCHSTATUS, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mPrefetchStatus)},
72*bebae9c0SAndroid Build Coastguard Worker     {MPH_RATEPITCH, INTERFACE_DYNAMIC_GAME, offsetof(CAudioPlayer, mRatePitch)},
73*bebae9c0SAndroid Build Coastguard Worker     {MPH_SEEK, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mSeek)},
74*bebae9c0SAndroid Build Coastguard Worker     // The base Volume interface is explicit, but portions are only for Game and Music profiles
75*bebae9c0SAndroid Build Coastguard Worker     {MPH_VOLUME, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mVolume)},
76*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DMACROSCOPIC, INTERFACE_OPTIONAL, offsetof(CAudioPlayer, m3DMacroscopic)},
77*bebae9c0SAndroid Build Coastguard Worker     {MPH_BASSBOOST, INTERFACE_DYNAMIC, offsetof(CAudioPlayer, mBassBoost)},
78*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICSOURCE, INTERFACE_OPTIONAL, offsetof(CAudioPlayer, mDynamicSource)},
79*bebae9c0SAndroid Build Coastguard Worker     {MPH_ENVIRONMENTALREVERB, INTERFACE_DYNAMIC,
80*bebae9c0SAndroid Build Coastguard Worker         offsetof(CAudioPlayer, mEnvironmentalReverb)},
81*bebae9c0SAndroid Build Coastguard Worker     {MPH_EQUALIZER, INTERFACE_DYNAMIC, offsetof(CAudioPlayer, mEqualizer)},
82*bebae9c0SAndroid Build Coastguard Worker     {MPH_PITCH, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CAudioPlayer, mPitch)},
83*bebae9c0SAndroid Build Coastguard Worker     {MPH_PRESETREVERB, INTERFACE_DYNAMIC, offsetof(CAudioPlayer, mPresetReverb)},
84*bebae9c0SAndroid Build Coastguard Worker     {MPH_PLAYBACKRATE, INTERFACE_DYNAMIC, offsetof(CAudioPlayer, mPlaybackRate)},
85*bebae9c0SAndroid Build Coastguard Worker     {MPH_VIRTUALIZER, INTERFACE_DYNAMIC, offsetof(CAudioPlayer, mVirtualizer)},
86*bebae9c0SAndroid Build Coastguard Worker     {MPH_VISUALIZATION, INTERFACE_OPTIONAL, offsetof(CAudioPlayer, mVisualization)},
87*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
88*bebae9c0SAndroid Build Coastguard Worker     {MPH_ANDROIDEFFECT, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mAndroidEffect)},
89*bebae9c0SAndroid Build Coastguard Worker     {MPH_ANDROIDEFFECTSEND, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mAndroidEffectSend)},
90*bebae9c0SAndroid Build Coastguard Worker     {MPH_ANDROIDCONFIGURATION, INTERFACE_EXPLICIT_PREREALIZE,
91*bebae9c0SAndroid Build Coastguard Worker             offsetof(CAudioPlayer, mAndroidConfiguration)},
92*bebae9c0SAndroid Build Coastguard Worker     {MPH_ANDROIDBUFFERQUEUESOURCE, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mAndroidBufferQueue)},
93*bebae9c0SAndroid Build Coastguard Worker #endif
94*bebae9c0SAndroid Build Coastguard Worker };
95*bebae9c0SAndroid Build Coastguard Worker 
96*bebae9c0SAndroid Build Coastguard Worker static const ClassTable CAudioPlayer_class = {
97*bebae9c0SAndroid Build Coastguard Worker     AudioPlayer_interfaces,
98*bebae9c0SAndroid Build Coastguard Worker     INTERFACES_AudioPlayer,
99*bebae9c0SAndroid Build Coastguard Worker     MPH_to_AudioPlayer,
100*bebae9c0SAndroid Build Coastguard Worker     "AudioPlayer",
101*bebae9c0SAndroid Build Coastguard Worker     sizeof(CAudioPlayer),
102*bebae9c0SAndroid Build Coastguard Worker     SL_OBJECTID_AUDIOPLAYER,
103*bebae9c0SAndroid Build Coastguard Worker     0,      // OpenMAX AL object ID
104*bebae9c0SAndroid Build Coastguard Worker     CAudioPlayer_Realize,
105*bebae9c0SAndroid Build Coastguard Worker     CAudioPlayer_Resume,
106*bebae9c0SAndroid Build Coastguard Worker     CAudioPlayer_Destroy,
107*bebae9c0SAndroid Build Coastguard Worker     CAudioPlayer_PreDestroy
108*bebae9c0SAndroid Build Coastguard Worker };
109*bebae9c0SAndroid Build Coastguard Worker 
110*bebae9c0SAndroid Build Coastguard Worker 
111*bebae9c0SAndroid Build Coastguard Worker #if (USE_PROFILES & USE_PROFILES_OPTIONAL) || defined(ANDROID)
112*bebae9c0SAndroid Build Coastguard Worker 
113*bebae9c0SAndroid Build Coastguard Worker // AudioRecorder class
114*bebae9c0SAndroid Build Coastguard Worker 
115*bebae9c0SAndroid Build Coastguard Worker static const struct iid_vtable AudioRecorder_interfaces[INTERFACES_AudioRecorder] = {
116*bebae9c0SAndroid Build Coastguard Worker     {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CAudioRecorder, mObject)},
117*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT,
118*bebae9c0SAndroid Build Coastguard Worker         offsetof(CAudioRecorder, mDynamicInterfaceManagement)},
119*bebae9c0SAndroid Build Coastguard Worker     {MPH_RECORD, INTERFACE_IMPLICIT, offsetof(CAudioRecorder, mRecord)},
120*bebae9c0SAndroid Build Coastguard Worker     {MPH_AUDIOENCODER, INTERFACE_EXPLICIT, offsetof(CAudioRecorder, mAudioEncoder)},
121*bebae9c0SAndroid Build Coastguard Worker     {MPH_BASSBOOST, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CAudioRecorder, mBassBoost)},
122*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICSOURCE, INTERFACE_OPTIONAL, offsetof(CAudioRecorder, mDynamicSource)},
123*bebae9c0SAndroid Build Coastguard Worker     {MPH_EQUALIZER, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CAudioRecorder, mEqualizer)},
124*bebae9c0SAndroid Build Coastguard Worker     {MPH_VISUALIZATION, INTERFACE_OPTIONAL, offsetof(CAudioRecorder, mVisualization)},
125*bebae9c0SAndroid Build Coastguard Worker     {MPH_VOLUME, INTERFACE_OPTIONAL, offsetof(CAudioRecorder, mVolume)},
126*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
127*bebae9c0SAndroid Build Coastguard Worker     {MPH_ANDROIDSIMPLEBUFFERQUEUE, INTERFACE_EXPLICIT, offsetof(CAudioRecorder, mBufferQueue)},
128*bebae9c0SAndroid Build Coastguard Worker     {MPH_ANDROIDCONFIGURATION, INTERFACE_EXPLICIT_PREREALIZE,
129*bebae9c0SAndroid Build Coastguard Worker             offsetof(CAudioRecorder, mAndroidConfiguration)},
130*bebae9c0SAndroid Build Coastguard Worker     /* marked explicit for Android implementation, not an SL ES explicit interface */
131*bebae9c0SAndroid Build Coastguard Worker     {MPH_ANDROIDACOUSTICECHOCANCELLATION, INTERFACE_EXPLICIT, offsetof(CAudioRecorder,
132*bebae9c0SAndroid Build Coastguard Worker                                                               mAcousticEchoCancellation)},
133*bebae9c0SAndroid Build Coastguard Worker     /* marked explicit for Android implementation, not an SL ES explicit interface */
134*bebae9c0SAndroid Build Coastguard Worker     {MPH_ANDROIDAUTOMATICGAINCONTROL, INTERFACE_EXPLICIT, offsetof(CAudioRecorder,
135*bebae9c0SAndroid Build Coastguard Worker                                                                    mAutomaticGainControl)},
136*bebae9c0SAndroid Build Coastguard Worker     /* marked explicit for Android implementation, not an SL ES explicit interface */
137*bebae9c0SAndroid Build Coastguard Worker     {MPH_ANDROIDNOISESUPPRESSION, INTERFACE_EXPLICIT, offsetof(CAudioRecorder, mNoiseSuppression)},
138*bebae9c0SAndroid Build Coastguard Worker #endif
139*bebae9c0SAndroid Build Coastguard Worker };
140*bebae9c0SAndroid Build Coastguard Worker 
141*bebae9c0SAndroid Build Coastguard Worker static const ClassTable CAudioRecorder_class = {
142*bebae9c0SAndroid Build Coastguard Worker     AudioRecorder_interfaces,
143*bebae9c0SAndroid Build Coastguard Worker     INTERFACES_AudioRecorder,
144*bebae9c0SAndroid Build Coastguard Worker     MPH_to_AudioRecorder,
145*bebae9c0SAndroid Build Coastguard Worker     "AudioRecorder",
146*bebae9c0SAndroid Build Coastguard Worker     sizeof(CAudioRecorder),
147*bebae9c0SAndroid Build Coastguard Worker     SL_OBJECTID_AUDIORECORDER,
148*bebae9c0SAndroid Build Coastguard Worker     0,      // OpenMAX AL object ID
149*bebae9c0SAndroid Build Coastguard Worker     CAudioRecorder_Realize,
150*bebae9c0SAndroid Build Coastguard Worker     CAudioRecorder_Resume,
151*bebae9c0SAndroid Build Coastguard Worker     CAudioRecorder_Destroy,
152*bebae9c0SAndroid Build Coastguard Worker     CAudioRecorder_PreDestroy
153*bebae9c0SAndroid Build Coastguard Worker };
154*bebae9c0SAndroid Build Coastguard Worker 
155*bebae9c0SAndroid Build Coastguard Worker #endif
156*bebae9c0SAndroid Build Coastguard Worker 
157*bebae9c0SAndroid Build Coastguard Worker 
158*bebae9c0SAndroid Build Coastguard Worker // Engine class
159*bebae9c0SAndroid Build Coastguard Worker 
160*bebae9c0SAndroid Build Coastguard Worker static const struct iid_vtable Engine_interfaces[INTERFACES_Engine] = {
161*bebae9c0SAndroid Build Coastguard Worker     {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CEngine, mObject)},
162*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT,
163*bebae9c0SAndroid Build Coastguard Worker         offsetof(CEngine, mDynamicInterfaceManagement)},
164*bebae9c0SAndroid Build Coastguard Worker     {MPH_ENGINE, INTERFACE_IMPLICIT, offsetof(CEngine, mEngine)},
165*bebae9c0SAndroid Build Coastguard Worker     {MPH_ENGINECAPABILITIES, INTERFACE_IMPLICIT_BASE, offsetof(CEngine, mEngineCapabilities)},
166*bebae9c0SAndroid Build Coastguard Worker     {MPH_THREADSYNC, INTERFACE_IMPLICIT_BASE, offsetof(CEngine, mThreadSync)},
167*bebae9c0SAndroid Build Coastguard Worker     {MPH_AUDIOIODEVICECAPABILITIES, INTERFACE_IMPLICIT_BASE,
168*bebae9c0SAndroid Build Coastguard Worker         offsetof(CEngine, mAudioIODeviceCapabilities)},
169*bebae9c0SAndroid Build Coastguard Worker     {MPH_AUDIODECODERCAPABILITIES, INTERFACE_EXPLICIT_BASE,
170*bebae9c0SAndroid Build Coastguard Worker         offsetof(CEngine, mAudioDecoderCapabilities)},
171*bebae9c0SAndroid Build Coastguard Worker     {MPH_AUDIOENCODERCAPABILITIES, INTERFACE_EXPLICIT_BASE,
172*bebae9c0SAndroid Build Coastguard Worker         offsetof(CEngine, mAudioEncoderCapabilities)},
173*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DCOMMIT, INTERFACE_EXPLICIT_GAME, offsetof(CEngine, m3DCommit)},
174*bebae9c0SAndroid Build Coastguard Worker     {MPH_DEVICEVOLUME, INTERFACE_OPTIONAL, offsetof(CEngine, mDeviceVolume)},
175*bebae9c0SAndroid Build Coastguard Worker     {MPH_XAENGINE, INTERFACE_IMPLICIT, offsetof(CEngine, mXAEngine)},
176*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
177*bebae9c0SAndroid Build Coastguard Worker     {MPH_ANDROIDEFFECTCAPABILITIES, INTERFACE_EXPLICIT,
178*bebae9c0SAndroid Build Coastguard Worker         offsetof(CEngine, mAndroidEffectCapabilities)},
179*bebae9c0SAndroid Build Coastguard Worker #endif
180*bebae9c0SAndroid Build Coastguard Worker     {MPH_XAVIDEODECODERCAPABILITIES, INTERFACE_EXPLICIT,
181*bebae9c0SAndroid Build Coastguard Worker         offsetof(CEngine, mVideoDecoderCapabilities)},
182*bebae9c0SAndroid Build Coastguard Worker };
183*bebae9c0SAndroid Build Coastguard Worker 
184*bebae9c0SAndroid Build Coastguard Worker static const ClassTable CEngine_class = {
185*bebae9c0SAndroid Build Coastguard Worker     Engine_interfaces,
186*bebae9c0SAndroid Build Coastguard Worker     INTERFACES_Engine,
187*bebae9c0SAndroid Build Coastguard Worker     MPH_to_Engine,
188*bebae9c0SAndroid Build Coastguard Worker     "Engine",
189*bebae9c0SAndroid Build Coastguard Worker     sizeof(CEngine),
190*bebae9c0SAndroid Build Coastguard Worker     SL_OBJECTID_ENGINE,
191*bebae9c0SAndroid Build Coastguard Worker     XA_OBJECTID_ENGINE,
192*bebae9c0SAndroid Build Coastguard Worker     CEngine_Realize,
193*bebae9c0SAndroid Build Coastguard Worker     CEngine_Resume,
194*bebae9c0SAndroid Build Coastguard Worker     CEngine_Destroy,
195*bebae9c0SAndroid Build Coastguard Worker     CEngine_PreDestroy
196*bebae9c0SAndroid Build Coastguard Worker };
197*bebae9c0SAndroid Build Coastguard Worker 
198*bebae9c0SAndroid Build Coastguard Worker 
199*bebae9c0SAndroid Build Coastguard Worker #if USE_PROFILES & USE_PROFILES_OPTIONAL
200*bebae9c0SAndroid Build Coastguard Worker 
201*bebae9c0SAndroid Build Coastguard Worker // LEDDevice class
202*bebae9c0SAndroid Build Coastguard Worker 
203*bebae9c0SAndroid Build Coastguard Worker static const struct iid_vtable LEDDevice_interfaces[INTERFACES_LEDDevice] = {
204*bebae9c0SAndroid Build Coastguard Worker     {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CLEDDevice, mObject)},
205*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT,
206*bebae9c0SAndroid Build Coastguard Worker         offsetof(CLEDDevice, mDynamicInterfaceManagement)},
207*bebae9c0SAndroid Build Coastguard Worker     {MPH_LED, INTERFACE_IMPLICIT, offsetof(CLEDDevice, mLEDArray)},
208*bebae9c0SAndroid Build Coastguard Worker };
209*bebae9c0SAndroid Build Coastguard Worker 
210*bebae9c0SAndroid Build Coastguard Worker static const ClassTable CLEDDevice_class = {
211*bebae9c0SAndroid Build Coastguard Worker     LEDDevice_interfaces,
212*bebae9c0SAndroid Build Coastguard Worker     INTERFACES_LEDDevice,
213*bebae9c0SAndroid Build Coastguard Worker     MPH_to_LEDDevice,
214*bebae9c0SAndroid Build Coastguard Worker     "LEDDevice",
215*bebae9c0SAndroid Build Coastguard Worker     sizeof(CLEDDevice),
216*bebae9c0SAndroid Build Coastguard Worker     SL_OBJECTID_LEDDEVICE,
217*bebae9c0SAndroid Build Coastguard Worker     XA_OBJECTID_LEDDEVICE,
218*bebae9c0SAndroid Build Coastguard Worker     NULL,
219*bebae9c0SAndroid Build Coastguard Worker     NULL,
220*bebae9c0SAndroid Build Coastguard Worker     NULL,
221*bebae9c0SAndroid Build Coastguard Worker     NULL
222*bebae9c0SAndroid Build Coastguard Worker };
223*bebae9c0SAndroid Build Coastguard Worker 
224*bebae9c0SAndroid Build Coastguard Worker #endif
225*bebae9c0SAndroid Build Coastguard Worker 
226*bebae9c0SAndroid Build Coastguard Worker 
227*bebae9c0SAndroid Build Coastguard Worker #if USE_PROFILES & USE_PROFILES_GAME
228*bebae9c0SAndroid Build Coastguard Worker 
229*bebae9c0SAndroid Build Coastguard Worker // Listener class
230*bebae9c0SAndroid Build Coastguard Worker 
231*bebae9c0SAndroid Build Coastguard Worker static const struct iid_vtable Listener_interfaces[INTERFACES_Listener] = {
232*bebae9c0SAndroid Build Coastguard Worker     {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CListener, mObject)},
233*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT,
234*bebae9c0SAndroid Build Coastguard Worker         offsetof(CListener, mDynamicInterfaceManagement)},
235*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DDOPPLER, INTERFACE_DYNAMIC_GAME, offsetof(CListener, m3DDoppler)},
236*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DLOCATION, INTERFACE_EXPLICIT_GAME, offsetof(CListener, m3DLocation)},
237*bebae9c0SAndroid Build Coastguard Worker };
238*bebae9c0SAndroid Build Coastguard Worker 
239*bebae9c0SAndroid Build Coastguard Worker static const ClassTable CListener_class = {
240*bebae9c0SAndroid Build Coastguard Worker     Listener_interfaces,
241*bebae9c0SAndroid Build Coastguard Worker     INTERFACES_Listener,
242*bebae9c0SAndroid Build Coastguard Worker     MPH_to_Listener,
243*bebae9c0SAndroid Build Coastguard Worker     "Listener",
244*bebae9c0SAndroid Build Coastguard Worker     sizeof(CListener),
245*bebae9c0SAndroid Build Coastguard Worker     SL_OBJECTID_LISTENER,
246*bebae9c0SAndroid Build Coastguard Worker     0,      // OpenMAX AL object ID
247*bebae9c0SAndroid Build Coastguard Worker     NULL,
248*bebae9c0SAndroid Build Coastguard Worker     NULL,
249*bebae9c0SAndroid Build Coastguard Worker     NULL,
250*bebae9c0SAndroid Build Coastguard Worker     NULL
251*bebae9c0SAndroid Build Coastguard Worker };
252*bebae9c0SAndroid Build Coastguard Worker 
253*bebae9c0SAndroid Build Coastguard Worker #endif
254*bebae9c0SAndroid Build Coastguard Worker 
255*bebae9c0SAndroid Build Coastguard Worker 
256*bebae9c0SAndroid Build Coastguard Worker #if USE_PROFILES & (USE_PROFILES_GAME | USE_PROFILES_MUSIC)
257*bebae9c0SAndroid Build Coastguard Worker 
258*bebae9c0SAndroid Build Coastguard Worker // MetadataExtractor class
259*bebae9c0SAndroid Build Coastguard Worker 
260*bebae9c0SAndroid Build Coastguard Worker static const struct iid_vtable MetadataExtractor_interfaces[INTERFACES_MetadataExtractor] = {
261*bebae9c0SAndroid Build Coastguard Worker     {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CMetadataExtractor, mObject)},
262*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT,
263*bebae9c0SAndroid Build Coastguard Worker         offsetof(CMetadataExtractor, mDynamicInterfaceManagement)},
264*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICSOURCE, INTERFACE_IMPLICIT, offsetof(CMetadataExtractor, mDynamicSource)},
265*bebae9c0SAndroid Build Coastguard Worker     {MPH_METADATAEXTRACTION, INTERFACE_IMPLICIT, offsetof(CMetadataExtractor, mMetadataExtraction)},
266*bebae9c0SAndroid Build Coastguard Worker     {MPH_METADATATRAVERSAL, INTERFACE_IMPLICIT, offsetof(CMetadataExtractor, mMetadataTraversal)},
267*bebae9c0SAndroid Build Coastguard Worker };
268*bebae9c0SAndroid Build Coastguard Worker 
269*bebae9c0SAndroid Build Coastguard Worker static const ClassTable CMetadataExtractor_class = {
270*bebae9c0SAndroid Build Coastguard Worker     MetadataExtractor_interfaces,
271*bebae9c0SAndroid Build Coastguard Worker     INTERFACES_MetadataExtractor,
272*bebae9c0SAndroid Build Coastguard Worker     MPH_to_MetadataExtractor,
273*bebae9c0SAndroid Build Coastguard Worker     "MetadataExtractor",
274*bebae9c0SAndroid Build Coastguard Worker     sizeof(CMetadataExtractor),
275*bebae9c0SAndroid Build Coastguard Worker     SL_OBJECTID_METADATAEXTRACTOR,
276*bebae9c0SAndroid Build Coastguard Worker     XA_OBJECTID_METADATAEXTRACTOR,
277*bebae9c0SAndroid Build Coastguard Worker     NULL,
278*bebae9c0SAndroid Build Coastguard Worker     NULL,
279*bebae9c0SAndroid Build Coastguard Worker     NULL,
280*bebae9c0SAndroid Build Coastguard Worker     NULL
281*bebae9c0SAndroid Build Coastguard Worker };
282*bebae9c0SAndroid Build Coastguard Worker 
283*bebae9c0SAndroid Build Coastguard Worker #endif
284*bebae9c0SAndroid Build Coastguard Worker 
285*bebae9c0SAndroid Build Coastguard Worker 
286*bebae9c0SAndroid Build Coastguard Worker #if USE_PROFILES & USE_PROFILES_GAME
287*bebae9c0SAndroid Build Coastguard Worker 
288*bebae9c0SAndroid Build Coastguard Worker // MidiPlayer class
289*bebae9c0SAndroid Build Coastguard Worker 
290*bebae9c0SAndroid Build Coastguard Worker static const struct iid_vtable MidiPlayer_interfaces[INTERFACES_MidiPlayer] = {
291*bebae9c0SAndroid Build Coastguard Worker     {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CMidiPlayer, mObject)},
292*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT,
293*bebae9c0SAndroid Build Coastguard Worker         offsetof(CMidiPlayer, mDynamicInterfaceManagement)},
294*bebae9c0SAndroid Build Coastguard Worker     {MPH_PLAY, INTERFACE_IMPLICIT, offsetof(CMidiPlayer, mPlay)},
295*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DDOPPLER, INTERFACE_DYNAMIC_GAME, offsetof(C3DGroup, m3DDoppler)},
296*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DGROUPING, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, m3DGrouping)},
297*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DLOCATION, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, m3DLocation)},
298*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DSOURCE, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, m3DSource)},
299*bebae9c0SAndroid Build Coastguard Worker     {MPH_BUFFERQUEUE, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, mBufferQueue)},
300*bebae9c0SAndroid Build Coastguard Worker     {MPH_EFFECTSEND, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, mEffectSend)},
301*bebae9c0SAndroid Build Coastguard Worker     {MPH_MUTESOLO, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, mMuteSolo)},
302*bebae9c0SAndroid Build Coastguard Worker     {MPH_METADATAEXTRACTION, INTERFACE_DYNAMIC_GAME, offsetof(CMidiPlayer, mMetadataExtraction)},
303*bebae9c0SAndroid Build Coastguard Worker     {MPH_METADATATRAVERSAL, INTERFACE_DYNAMIC_GAME, offsetof(CMidiPlayer, mMetadataTraversal)},
304*bebae9c0SAndroid Build Coastguard Worker     {MPH_MIDIMESSAGE, INTERFACE_EXPLICIT_GAME_PHONE, offsetof(CMidiPlayer, mMIDIMessage)},
305*bebae9c0SAndroid Build Coastguard Worker     {MPH_MIDITIME, INTERFACE_EXPLICIT_GAME_PHONE, offsetof(CMidiPlayer, mMIDITime)},
306*bebae9c0SAndroid Build Coastguard Worker     {MPH_MIDITEMPO, INTERFACE_EXPLICIT_GAME_PHONE, offsetof(CMidiPlayer, mMIDITempo)},
307*bebae9c0SAndroid Build Coastguard Worker     {MPH_MIDIMUTESOLO, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, mMIDIMuteSolo)},
308*bebae9c0SAndroid Build Coastguard Worker     {MPH_PREFETCHSTATUS, INTERFACE_EXPLICIT_GAME_PHONE, offsetof(CMidiPlayer, mPrefetchStatus)},
309*bebae9c0SAndroid Build Coastguard Worker     {MPH_SEEK, INTERFACE_EXPLICIT_GAME_PHONE, offsetof(CMidiPlayer, mSeek)},
310*bebae9c0SAndroid Build Coastguard Worker     {MPH_VOLUME, INTERFACE_EXPLICIT_GAME_PHONE, offsetof(CMidiPlayer, mVolume)},
311*bebae9c0SAndroid Build Coastguard Worker     {MPH_3DMACROSCOPIC, INTERFACE_OPTIONAL, offsetof(CMidiPlayer, m3DMacroscopic)},
312*bebae9c0SAndroid Build Coastguard Worker     {MPH_BASSBOOST, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CMidiPlayer, mBassBoost)},
313*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICSOURCE, INTERFACE_OPTIONAL, offsetof(CMidiPlayer, mDynamicSource)},
314*bebae9c0SAndroid Build Coastguard Worker     {MPH_ENVIRONMENTALREVERB, INTERFACE_DYNAMIC_OPTIONAL,
315*bebae9c0SAndroid Build Coastguard Worker         offsetof(CMidiPlayer, mEnvironmentalReverb)},
316*bebae9c0SAndroid Build Coastguard Worker     {MPH_EQUALIZER, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CMidiPlayer, mEqualizer)},
317*bebae9c0SAndroid Build Coastguard Worker     {MPH_PITCH, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CMidiPlayer, mPitch)},
318*bebae9c0SAndroid Build Coastguard Worker     {MPH_PRESETREVERB, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CMidiPlayer, mPresetReverb)},
319*bebae9c0SAndroid Build Coastguard Worker     {MPH_PLAYBACKRATE, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CMidiPlayer, mPlaybackRate)},
320*bebae9c0SAndroid Build Coastguard Worker     {MPH_VIRTUALIZER, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CMidiPlayer, mVirtualizer)},
321*bebae9c0SAndroid Build Coastguard Worker     {MPH_VISUALIZATION, INTERFACE_OPTIONAL, offsetof(CMidiPlayer, mVisualization)},
322*bebae9c0SAndroid Build Coastguard Worker };
323*bebae9c0SAndroid Build Coastguard Worker 
324*bebae9c0SAndroid Build Coastguard Worker static const ClassTable CMidiPlayer_class = {
325*bebae9c0SAndroid Build Coastguard Worker     MidiPlayer_interfaces,
326*bebae9c0SAndroid Build Coastguard Worker     INTERFACES_MidiPlayer,
327*bebae9c0SAndroid Build Coastguard Worker     MPH_to_MidiPlayer,
328*bebae9c0SAndroid Build Coastguard Worker     "MidiPlayer",
329*bebae9c0SAndroid Build Coastguard Worker     sizeof(CMidiPlayer),
330*bebae9c0SAndroid Build Coastguard Worker     SL_OBJECTID_MIDIPLAYER,
331*bebae9c0SAndroid Build Coastguard Worker     0,      // OpenMAX AL object ID
332*bebae9c0SAndroid Build Coastguard Worker     NULL,
333*bebae9c0SAndroid Build Coastguard Worker     NULL,
334*bebae9c0SAndroid Build Coastguard Worker     NULL,
335*bebae9c0SAndroid Build Coastguard Worker     NULL
336*bebae9c0SAndroid Build Coastguard Worker };
337*bebae9c0SAndroid Build Coastguard Worker 
338*bebae9c0SAndroid Build Coastguard Worker #endif
339*bebae9c0SAndroid Build Coastguard Worker 
340*bebae9c0SAndroid Build Coastguard Worker 
341*bebae9c0SAndroid Build Coastguard Worker // OutputMix class
342*bebae9c0SAndroid Build Coastguard Worker 
343*bebae9c0SAndroid Build Coastguard Worker static const struct iid_vtable OutputMix_interfaces[INTERFACES_OutputMix] = {
344*bebae9c0SAndroid Build Coastguard Worker     {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(COutputMix, mObject)},
345*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT,
346*bebae9c0SAndroid Build Coastguard Worker         offsetof(COutputMix, mDynamicInterfaceManagement)},
347*bebae9c0SAndroid Build Coastguard Worker     {MPH_OUTPUTMIX, INTERFACE_IMPLICIT, offsetof(COutputMix, mOutputMix)},
348*bebae9c0SAndroid Build Coastguard Worker #ifdef USE_OUTPUTMIXEXT
349*bebae9c0SAndroid Build Coastguard Worker     {MPH_OUTPUTMIXEXT, INTERFACE_UNAVAILABLE, offsetof(COutputMix, mOutputMixExt)},
350*bebae9c0SAndroid Build Coastguard Worker #else
351*bebae9c0SAndroid Build Coastguard Worker     {MPH_OUTPUTMIXEXT, INTERFACE_UNAVAILABLE, 0},
352*bebae9c0SAndroid Build Coastguard Worker #endif
353*bebae9c0SAndroid Build Coastguard Worker     {MPH_ENVIRONMENTALREVERB, INTERFACE_DYNAMIC,
354*bebae9c0SAndroid Build Coastguard Worker         offsetof(COutputMix, mEnvironmentalReverb)},
355*bebae9c0SAndroid Build Coastguard Worker     {MPH_EQUALIZER, INTERFACE_DYNAMIC, offsetof(COutputMix, mEqualizer)},
356*bebae9c0SAndroid Build Coastguard Worker     {MPH_PRESETREVERB, INTERFACE_DYNAMIC, offsetof(COutputMix, mPresetReverb)},
357*bebae9c0SAndroid Build Coastguard Worker     {MPH_VIRTUALIZER, INTERFACE_DYNAMIC, offsetof(COutputMix, mVirtualizer)},
358*bebae9c0SAndroid Build Coastguard Worker     // The overall Volume interface is explicit optional,
359*bebae9c0SAndroid Build Coastguard Worker     // but portions of Volume are mandated only in Game and Music profiles
360*bebae9c0SAndroid Build Coastguard Worker     {MPH_VOLUME, INTERFACE_OPTIONAL, offsetof(COutputMix, mVolume)},
361*bebae9c0SAndroid Build Coastguard Worker     {MPH_BASSBOOST, INTERFACE_DYNAMIC, offsetof(COutputMix, mBassBoost)},
362*bebae9c0SAndroid Build Coastguard Worker     {MPH_VISUALIZATION, INTERFACE_OPTIONAL, offsetof(COutputMix, mVisualization)},
363*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
364*bebae9c0SAndroid Build Coastguard Worker     {MPH_ANDROIDEFFECT, INTERFACE_EXPLICIT, offsetof(COutputMix, mAndroidEffect)},
365*bebae9c0SAndroid Build Coastguard Worker #endif
366*bebae9c0SAndroid Build Coastguard Worker };
367*bebae9c0SAndroid Build Coastguard Worker 
368*bebae9c0SAndroid Build Coastguard Worker static const ClassTable COutputMix_class = {
369*bebae9c0SAndroid Build Coastguard Worker     OutputMix_interfaces,
370*bebae9c0SAndroid Build Coastguard Worker     INTERFACES_OutputMix,
371*bebae9c0SAndroid Build Coastguard Worker     MPH_to_OutputMix,
372*bebae9c0SAndroid Build Coastguard Worker     "OutputMix",
373*bebae9c0SAndroid Build Coastguard Worker     sizeof(COutputMix),
374*bebae9c0SAndroid Build Coastguard Worker     SL_OBJECTID_OUTPUTMIX,
375*bebae9c0SAndroid Build Coastguard Worker     XA_OBJECTID_OUTPUTMIX,
376*bebae9c0SAndroid Build Coastguard Worker     COutputMix_Realize,
377*bebae9c0SAndroid Build Coastguard Worker     COutputMix_Resume,
378*bebae9c0SAndroid Build Coastguard Worker     COutputMix_Destroy,
379*bebae9c0SAndroid Build Coastguard Worker     COutputMix_PreDestroy
380*bebae9c0SAndroid Build Coastguard Worker };
381*bebae9c0SAndroid Build Coastguard Worker 
382*bebae9c0SAndroid Build Coastguard Worker 
383*bebae9c0SAndroid Build Coastguard Worker #if USE_PROFILES & USE_PROFILES_OPTIONAL
384*bebae9c0SAndroid Build Coastguard Worker 
385*bebae9c0SAndroid Build Coastguard Worker // Vibra class
386*bebae9c0SAndroid Build Coastguard Worker 
387*bebae9c0SAndroid Build Coastguard Worker static const struct iid_vtable VibraDevice_interfaces[INTERFACES_VibraDevice] = {
388*bebae9c0SAndroid Build Coastguard Worker     {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CVibraDevice, mObject)},
389*bebae9c0SAndroid Build Coastguard Worker     {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT,
390*bebae9c0SAndroid Build Coastguard Worker         offsetof(CVibraDevice, mDynamicInterfaceManagement)},
391*bebae9c0SAndroid Build Coastguard Worker     {MPH_VIBRA, INTERFACE_IMPLICIT, offsetof(CVibraDevice, mVibra)},
392*bebae9c0SAndroid Build Coastguard Worker };
393*bebae9c0SAndroid Build Coastguard Worker 
394*bebae9c0SAndroid Build Coastguard Worker static const ClassTable CVibraDevice_class = {
395*bebae9c0SAndroid Build Coastguard Worker     VibraDevice_interfaces,
396*bebae9c0SAndroid Build Coastguard Worker     INTERFACES_VibraDevice,
397*bebae9c0SAndroid Build Coastguard Worker     MPH_to_Vibra,
398*bebae9c0SAndroid Build Coastguard Worker     "VibraDevice",
399*bebae9c0SAndroid Build Coastguard Worker     sizeof(CVibraDevice),
400*bebae9c0SAndroid Build Coastguard Worker     SL_OBJECTID_VIBRADEVICE,
401*bebae9c0SAndroid Build Coastguard Worker     XA_OBJECTID_VIBRADEVICE,
402*bebae9c0SAndroid Build Coastguard Worker     NULL,
403*bebae9c0SAndroid Build Coastguard Worker     NULL,
404*bebae9c0SAndroid Build Coastguard Worker     NULL,
405*bebae9c0SAndroid Build Coastguard Worker     NULL
406*bebae9c0SAndroid Build Coastguard Worker };
407*bebae9c0SAndroid Build Coastguard Worker 
408*bebae9c0SAndroid Build Coastguard Worker #endif
409*bebae9c0SAndroid Build Coastguard Worker 
410*bebae9c0SAndroid Build Coastguard Worker 
411*bebae9c0SAndroid Build Coastguard Worker // Media player class
412*bebae9c0SAndroid Build Coastguard Worker 
413*bebae9c0SAndroid Build Coastguard Worker static const struct iid_vtable MediaPlayer_interfaces[INTERFACES_MediaPlayer] = {
414*bebae9c0SAndroid Build Coastguard Worker     {MPH_XAOBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CMediaPlayer, mObject)},
415*bebae9c0SAndroid Build Coastguard Worker     {MPH_XADYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT,
416*bebae9c0SAndroid Build Coastguard Worker         offsetof(CMediaPlayer, mDynamicInterfaceManagement)},
417*bebae9c0SAndroid Build Coastguard Worker     {MPH_XAPLAY, INTERFACE_IMPLICIT, offsetof(CMediaPlayer, mPlay)},
418*bebae9c0SAndroid Build Coastguard Worker     {MPH_XASTREAMINFORMATION, INTERFACE_EXPLICIT, offsetof(CMediaPlayer, mStreamInfo)},
419*bebae9c0SAndroid Build Coastguard Worker     {MPH_XAVOLUME, INTERFACE_IMPLICIT, offsetof(CMediaPlayer, mVolume)},
420*bebae9c0SAndroid Build Coastguard Worker     {MPH_XASEEK, INTERFACE_EXPLICIT, offsetof(CMediaPlayer, mSeek)},
421*bebae9c0SAndroid Build Coastguard Worker     {MPH_XAPREFETCHSTATUS, INTERFACE_EXPLICIT, offsetof(CMediaPlayer, mPrefetchStatus)},
422*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
423*bebae9c0SAndroid Build Coastguard Worker     {MPH_ANDROIDBUFFERQUEUESOURCE, INTERFACE_EXPLICIT, offsetof(CMediaPlayer, mAndroidBufferQueue)},
424*bebae9c0SAndroid Build Coastguard Worker #endif
425*bebae9c0SAndroid Build Coastguard Worker };
426*bebae9c0SAndroid Build Coastguard Worker 
427*bebae9c0SAndroid Build Coastguard Worker static const ClassTable CMediaPlayer_class = {
428*bebae9c0SAndroid Build Coastguard Worker     MediaPlayer_interfaces,
429*bebae9c0SAndroid Build Coastguard Worker     INTERFACES_MediaPlayer,
430*bebae9c0SAndroid Build Coastguard Worker     MPH_to_MediaPlayer,
431*bebae9c0SAndroid Build Coastguard Worker     "MediaPlayer",
432*bebae9c0SAndroid Build Coastguard Worker     sizeof(CMediaPlayer),
433*bebae9c0SAndroid Build Coastguard Worker     0,      // OpenSL ES object ID
434*bebae9c0SAndroid Build Coastguard Worker     XA_OBJECTID_MEDIAPLAYER,
435*bebae9c0SAndroid Build Coastguard Worker     CMediaPlayer_Realize,
436*bebae9c0SAndroid Build Coastguard Worker     CMediaPlayer_Resume,
437*bebae9c0SAndroid Build Coastguard Worker     CMediaPlayer_Destroy,
438*bebae9c0SAndroid Build Coastguard Worker     CMediaPlayer_PreDestroy
439*bebae9c0SAndroid Build Coastguard Worker };
440*bebae9c0SAndroid Build Coastguard Worker 
441*bebae9c0SAndroid Build Coastguard Worker 
442*bebae9c0SAndroid Build Coastguard Worker static const ClassTable * const slClasses[] = {
443*bebae9c0SAndroid Build Coastguard Worker     // Do not change order of these entries; they are in numerical order
444*bebae9c0SAndroid Build Coastguard Worker     &CEngine_class,
445*bebae9c0SAndroid Build Coastguard Worker #if USE_PROFILES & USE_PROFILES_OPTIONAL
446*bebae9c0SAndroid Build Coastguard Worker     &CLEDDevice_class,
447*bebae9c0SAndroid Build Coastguard Worker     &CVibraDevice_class,
448*bebae9c0SAndroid Build Coastguard Worker #else
449*bebae9c0SAndroid Build Coastguard Worker     NULL,
450*bebae9c0SAndroid Build Coastguard Worker     NULL,
451*bebae9c0SAndroid Build Coastguard Worker #endif
452*bebae9c0SAndroid Build Coastguard Worker     &CAudioPlayer_class,
453*bebae9c0SAndroid Build Coastguard Worker #if (USE_PROFILES & USE_PROFILES_OPTIONAL) || defined(ANDROID)
454*bebae9c0SAndroid Build Coastguard Worker     &CAudioRecorder_class,
455*bebae9c0SAndroid Build Coastguard Worker #else
456*bebae9c0SAndroid Build Coastguard Worker     NULL,
457*bebae9c0SAndroid Build Coastguard Worker #endif
458*bebae9c0SAndroid Build Coastguard Worker #if USE_PROFILES & (USE_PROFILES_GAME | USE_PROFILES_PHONE)
459*bebae9c0SAndroid Build Coastguard Worker     &CMidiPlayer_class,
460*bebae9c0SAndroid Build Coastguard Worker #else
461*bebae9c0SAndroid Build Coastguard Worker     NULL,
462*bebae9c0SAndroid Build Coastguard Worker #endif
463*bebae9c0SAndroid Build Coastguard Worker #if USE_PROFILES & USE_PROFILES_GAME
464*bebae9c0SAndroid Build Coastguard Worker     &CListener_class,
465*bebae9c0SAndroid Build Coastguard Worker     &C3DGroup_class,
466*bebae9c0SAndroid Build Coastguard Worker #else
467*bebae9c0SAndroid Build Coastguard Worker     NULL,
468*bebae9c0SAndroid Build Coastguard Worker     NULL,
469*bebae9c0SAndroid Build Coastguard Worker #endif
470*bebae9c0SAndroid Build Coastguard Worker     &COutputMix_class,
471*bebae9c0SAndroid Build Coastguard Worker #if USE_PROFILES & (USE_PROFILES_GAME | USE_PROFILES_MUSIC)
472*bebae9c0SAndroid Build Coastguard Worker     &CMetadataExtractor_class
473*bebae9c0SAndroid Build Coastguard Worker #else
474*bebae9c0SAndroid Build Coastguard Worker     NULL
475*bebae9c0SAndroid Build Coastguard Worker #endif
476*bebae9c0SAndroid Build Coastguard Worker };
477*bebae9c0SAndroid Build Coastguard Worker 
478*bebae9c0SAndroid Build Coastguard Worker 
479*bebae9c0SAndroid Build Coastguard Worker static const ClassTable * const xaClasses[] = {
480*bebae9c0SAndroid Build Coastguard Worker     &CEngine_class,
481*bebae9c0SAndroid Build Coastguard Worker #if USE_PROFILES & USE_PROFILES_OPTIONAL
482*bebae9c0SAndroid Build Coastguard Worker     &CLEDDevice_class,
483*bebae9c0SAndroid Build Coastguard Worker     &CVibraDevice_class,
484*bebae9c0SAndroid Build Coastguard Worker #else
485*bebae9c0SAndroid Build Coastguard Worker     NULL,
486*bebae9c0SAndroid Build Coastguard Worker     NULL,
487*bebae9c0SAndroid Build Coastguard Worker #endif
488*bebae9c0SAndroid Build Coastguard Worker     &CMediaPlayer_class,
489*bebae9c0SAndroid Build Coastguard Worker #if 1
490*bebae9c0SAndroid Build Coastguard Worker     NULL,
491*bebae9c0SAndroid Build Coastguard Worker     NULL,
492*bebae9c0SAndroid Build Coastguard Worker #else
493*bebae9c0SAndroid Build Coastguard Worker     &CMediaRecorder_class,
494*bebae9c0SAndroid Build Coastguard Worker     &CRadioDevice_class,
495*bebae9c0SAndroid Build Coastguard Worker #endif
496*bebae9c0SAndroid Build Coastguard Worker     &COutputMix_class,
497*bebae9c0SAndroid Build Coastguard Worker #if USE_PROFILES & (USE_PROFILES_GAME | USE_PROFILES_MUSIC)
498*bebae9c0SAndroid Build Coastguard Worker     &CMetadataExtractor_class,
499*bebae9c0SAndroid Build Coastguard Worker #else
500*bebae9c0SAndroid Build Coastguard Worker     NULL,
501*bebae9c0SAndroid Build Coastguard Worker #endif
502*bebae9c0SAndroid Build Coastguard Worker #if 1
503*bebae9c0SAndroid Build Coastguard Worker     NULL
504*bebae9c0SAndroid Build Coastguard Worker #else
505*bebae9c0SAndroid Build Coastguard Worker     &CCameraDevice_class
506*bebae9c0SAndroid Build Coastguard Worker #endif
507*bebae9c0SAndroid Build Coastguard Worker };
508*bebae9c0SAndroid Build Coastguard Worker 
509*bebae9c0SAndroid Build Coastguard Worker 
510*bebae9c0SAndroid Build Coastguard Worker /* \brief Map SL_OBJECTID to class or NULL if object ID not supported */
511*bebae9c0SAndroid Build Coastguard Worker 
objectIDtoClass(SLuint32 objectID)512*bebae9c0SAndroid Build Coastguard Worker LI_API const ClassTable *objectIDtoClass(SLuint32 objectID)
513*bebae9c0SAndroid Build Coastguard Worker {
514*bebae9c0SAndroid Build Coastguard Worker     // object ID is the engine and always present
515*bebae9c0SAndroid Build Coastguard Worker     assert(NULL != slClasses[0]);
516*bebae9c0SAndroid Build Coastguard Worker     SLuint32 slObjectID0 = slClasses[0]->mSLObjectID;
517*bebae9c0SAndroid Build Coastguard Worker     if ((slObjectID0 <= objectID) && ((slObjectID0 + sizeof(slClasses)/sizeof(slClasses[0])) >
518*bebae9c0SAndroid Build Coastguard Worker             objectID)) {
519*bebae9c0SAndroid Build Coastguard Worker         return slClasses[objectID - slObjectID0];
520*bebae9c0SAndroid Build Coastguard Worker     }
521*bebae9c0SAndroid Build Coastguard Worker     assert(NULL != xaClasses[0]);
522*bebae9c0SAndroid Build Coastguard Worker     SLuint32 xaObjectID0 = xaClasses[0]->mXAObjectID;
523*bebae9c0SAndroid Build Coastguard Worker     if ((xaObjectID0 <= objectID) && ((xaObjectID0 + sizeof(xaClasses)/sizeof(xaClasses[0])) >
524*bebae9c0SAndroid Build Coastguard Worker             objectID)) {
525*bebae9c0SAndroid Build Coastguard Worker         return xaClasses[objectID - xaObjectID0];
526*bebae9c0SAndroid Build Coastguard Worker     }
527*bebae9c0SAndroid Build Coastguard Worker     return NULL;
528*bebae9c0SAndroid Build Coastguard Worker }
529