1b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten/* 2b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * Copyright (C) 2010 The Android Open Source Project 3b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * 4b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * Licensed under the Apache License, Version 2.0 (the "License"); 5b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * you may not use this file except in compliance with the License. 6b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * You may obtain a copy of the License at 7b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * 8b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * http://www.apache.org/licenses/LICENSE-2.0 9b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * 10b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * Unless required by applicable law or agreed to in writing, software 11b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * distributed under the License is distributed on an "AS IS" BASIS, 12b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * See the License for the specific language governing permissions and 14b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten * limitations under the License. 15b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten */ 16b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 17b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten/* Classes vs. interfaces */ 18b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 19b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten#include "sles_allinclusive.h" 20b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 21c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 22c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#if USE_PROFILES & USE_PROFILES_GAME 23c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 24b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten// 3DGroup class 25b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 26510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kastenstatic const struct iid_vtable _3DGroup_interfaces[INTERFACES_3DGroup] = { 27104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(C3DGroup, mObject)}, 28b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT, 29b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(C3DGroup, mDynamicInterfaceManagement)}, 307a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_3DLOCATION, INTERFACE_IMPLICIT, offsetof(C3DGroup, m3DLocation)}, 317a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_3DDOPPLER, INTERFACE_DYNAMIC_GAME, offsetof(C3DGroup, m3DDoppler)}, 32c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_3DSOURCE, INTERFACE_EXPLICIT_GAME, offsetof(C3DGroup, m3DSource)}, 337a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_3DMACROSCOPIC, INTERFACE_OPTIONAL, offsetof(C3DGroup, m3DMacroscopic)}, 34b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 35b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 36b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kastenstatic const ClassTable C3DGroup_class = { 37b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten _3DGroup_interfaces, 38510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kasten INTERFACES_3DGroup, 39b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten MPH_to_3DGroup, 40b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten "3DGroup", 41b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten sizeof(C3DGroup), 42b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten SL_OBJECTID_3DGROUP, 438b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten 0, // OpenMAX AL object ID 44b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL, 45b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL, 46928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten NULL, 47f51dba65751107c930759938775b75531ec1f330Glenn Kasten C3DGroup_PreDestroy 48b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 49b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 50c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#endif 51c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 52c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 53b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten// AudioPlayer class 54b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 55510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kastenstatic const struct iid_vtable AudioPlayer_interfaces[INTERFACES_AudioPlayer] = { 56104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CAudioPlayer, mObject)}, 57711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT, 58b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(CAudioPlayer, mDynamicInterfaceManagement)}, 597a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_PLAY, INTERFACE_IMPLICIT, offsetof(CAudioPlayer, mPlay)}, 607a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_3DDOPPLER, INTERFACE_DYNAMIC_GAME, offsetof(CAudioPlayer, m3DDoppler)}, 61c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_3DGROUPING, INTERFACE_EXPLICIT_GAME, offsetof(CAudioPlayer, m3DGrouping)}, 62c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_3DLOCATION, INTERFACE_EXPLICIT_GAME, offsetof(CAudioPlayer, m3DLocation)}, 63c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_3DSOURCE, INTERFACE_EXPLICIT_GAME, offsetof(CAudioPlayer, m3DSource)}, 64711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_BUFFERQUEUE, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mBufferQueue)}, 65711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_EFFECTSEND, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mEffectSend)}, 66711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_MUTESOLO, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mMuteSolo)}, 677f5cc1afe49395fefaad9b2bbd728a45d1bfda6aJean-Michel Trivi {MPH_METADATAEXTRACTION, INTERFACE_DYNAMIC, 68fe96fa06360516c60490c7a697e1148017b4c1b2Glenn Kasten offsetof(CAudioPlayer, mMetadataExtraction)}, 69fe96fa06360516c60490c7a697e1148017b4c1b2Glenn Kasten {MPH_METADATATRAVERSAL, INTERFACE_DYNAMIC_GAME_MUSIC, 70fe96fa06360516c60490c7a697e1148017b4c1b2Glenn Kasten offsetof(CAudioPlayer, mMetadataTraversal)}, 717a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_PREFETCHSTATUS, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mPrefetchStatus)}, 727a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_RATEPITCH, INTERFACE_DYNAMIC_GAME, offsetof(CAudioPlayer, mRatePitch)}, 737a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_SEEK, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mSeek)}, 74c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten // The base Volume interface is explicit, but portions are only for Game and Music profiles 75c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_VOLUME, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mVolume)}, 767a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_3DMACROSCOPIC, INTERFACE_OPTIONAL, offsetof(CAudioPlayer, m3DMacroscopic)}, 7724430c9070298f12e68b84c921add38da6ad0490Jean-Michel Trivi {MPH_BASSBOOST, INTERFACE_DYNAMIC, offsetof(CAudioPlayer, mBassBoost)}, 787a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_DYNAMICSOURCE, INTERFACE_OPTIONAL, offsetof(CAudioPlayer, mDynamicSource)}, 7924430c9070298f12e68b84c921add38da6ad0490Jean-Michel Trivi {MPH_ENVIRONMENTALREVERB, INTERFACE_DYNAMIC, 80fe96fa06360516c60490c7a697e1148017b4c1b2Glenn Kasten offsetof(CAudioPlayer, mEnvironmentalReverb)}, 8124430c9070298f12e68b84c921add38da6ad0490Jean-Michel Trivi {MPH_EQUALIZER, INTERFACE_DYNAMIC, offsetof(CAudioPlayer, mEqualizer)}, 82c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_PITCH, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CAudioPlayer, mPitch)}, 8324430c9070298f12e68b84c921add38da6ad0490Jean-Michel Trivi {MPH_PRESETREVERB, INTERFACE_DYNAMIC, offsetof(CAudioPlayer, mPresetReverb)}, 8424430c9070298f12e68b84c921add38da6ad0490Jean-Michel Trivi {MPH_PLAYBACKRATE, INTERFACE_DYNAMIC, offsetof(CAudioPlayer, mPlaybackRate)}, 8524430c9070298f12e68b84c921add38da6ad0490Jean-Michel Trivi {MPH_VIRTUALIZER, INTERFACE_DYNAMIC, offsetof(CAudioPlayer, mVirtualizer)}, 867a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_VISUALIZATION, INTERFACE_OPTIONAL, offsetof(CAudioPlayer, mVisualization)}, 8705ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#ifdef ANDROID 885b09aa864215690580b18eb802927e8cc7eb4861Jean-Michel Trivi {MPH_ANDROIDEFFECT, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mAndroidEffect)}, 89fef6033d852daec8d88060b252e72f322724dca1Jean-Michel Trivi {MPH_ANDROIDEFFECTSEND, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mAndroidEffectSend)}, 905e3b06982dbf1eae237cc74326e66d51d3cdd664Glenn Kasten {MPH_ANDROIDCONFIGURATION, INTERFACE_EXPLICIT_PREREALIZE, 915e3b06982dbf1eae237cc74326e66d51d3cdd664Glenn Kasten offsetof(CAudioPlayer, mAndroidConfiguration)}, 9260ca9f9ef02f6e486c3338cb811f603dd7825c05Glenn Kasten {MPH_ANDROIDBUFFERQUEUESOURCE, INTERFACE_EXPLICIT, offsetof(CAudioPlayer, mAndroidBufferQueue)}, 9305ccff2aaa3e1507cdc7ab3b244c973c6708e009Jean-Michel Trivi#endif 94b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 95b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 96b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kastenstatic const ClassTable CAudioPlayer_class = { 97b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten AudioPlayer_interfaces, 98510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kasten INTERFACES_AudioPlayer, 99b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten MPH_to_AudioPlayer, 100b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten "AudioPlayer", 101b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten sizeof(CAudioPlayer), 102b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten SL_OBJECTID_AUDIOPLAYER, 1038b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten 0, // OpenMAX AL object ID 104b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten CAudioPlayer_Realize, 105928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten CAudioPlayer_Resume, 106928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten CAudioPlayer_Destroy, 107928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten CAudioPlayer_PreDestroy 108b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 109b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 110c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 111c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#if (USE_PROFILES & USE_PROFILES_OPTIONAL) || defined(ANDROID) 112c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 113b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten// AudioRecorder class 114b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 115510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kastenstatic const struct iid_vtable AudioRecorder_interfaces[INTERFACES_AudioRecorder] = { 116104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CAudioRecorder, mObject)}, 117711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT, 118b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(CAudioRecorder, mDynamicInterfaceManagement)}, 1197a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_RECORD, INTERFACE_IMPLICIT, offsetof(CAudioRecorder, mRecord)}, 120c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_AUDIOENCODER, INTERFACE_EXPLICIT, offsetof(CAudioRecorder, mAudioEncoder)}, 121c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_BASSBOOST, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CAudioRecorder, mBassBoost)}, 1227a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_DYNAMICSOURCE, INTERFACE_OPTIONAL, offsetof(CAudioRecorder, mDynamicSource)}, 123c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_EQUALIZER, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CAudioRecorder, mEqualizer)}, 1247a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_VISUALIZATION, INTERFACE_OPTIONAL, offsetof(CAudioRecorder, mVisualization)}, 1255e3b06982dbf1eae237cc74326e66d51d3cdd664Glenn Kasten {MPH_VOLUME, INTERFACE_OPTIONAL, offsetof(CAudioRecorder, mVolume)}, 1261580f7ab4e02ed2881ac7cdeab2044e990f2e9e6Glenn Kasten#ifdef ANDROID 1271580f7ab4e02ed2881ac7cdeab2044e990f2e9e6Glenn Kasten {MPH_ANDROIDSIMPLEBUFFERQUEUE, INTERFACE_EXPLICIT, offsetof(CAudioRecorder, mBufferQueue)}, 1281580f7ab4e02ed2881ac7cdeab2044e990f2e9e6Glenn Kasten {MPH_ANDROIDCONFIGURATION, INTERFACE_EXPLICIT_PREREALIZE, 1291580f7ab4e02ed2881ac7cdeab2044e990f2e9e6Glenn Kasten offsetof(CAudioRecorder, mAndroidConfiguration)}, 130677c796097b542e9ee6cf43a59e754f43c2370dcEric Laurent /* marked explicit for Android implementation, not an SL ES explicit interface */ 131677c796097b542e9ee6cf43a59e754f43c2370dcEric Laurent {MPH_ANDROIDACOUSTICECHOCANCELLATION, INTERFACE_EXPLICIT, offsetof(CAudioRecorder, 132f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean mAcousticEchoCancellation)}, 133677c796097b542e9ee6cf43a59e754f43c2370dcEric Laurent /* marked explicit for Android implementation, not an SL ES explicit interface */ 134677c796097b542e9ee6cf43a59e754f43c2370dcEric Laurent {MPH_ANDROIDAUTOMATICGAINCONTROL, INTERFACE_EXPLICIT, offsetof(CAudioRecorder, 135f8b3141926967ba37d315cc8d3956d7214958e6bPaul McLean mAutomaticGainControl)}, 136677c796097b542e9ee6cf43a59e754f43c2370dcEric Laurent /* marked explicit for Android implementation, not an SL ES explicit interface */ 137677c796097b542e9ee6cf43a59e754f43c2370dcEric Laurent {MPH_ANDROIDNOISESUPPRESSION, INTERFACE_EXPLICIT, offsetof(CAudioRecorder, mNoiseSuppression)}, 1383af2a8dd03f3113d5da1000dd79c143a9f0c4f36Jean-Michel Trivi#endif 139b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 140b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 141b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kastenstatic const ClassTable CAudioRecorder_class = { 142b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten AudioRecorder_interfaces, 143510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kasten INTERFACES_AudioRecorder, 144b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten MPH_to_AudioRecorder, 145b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten "AudioRecorder", 146b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten sizeof(CAudioRecorder), 147b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten SL_OBJECTID_AUDIORECORDER, 1488b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten 0, // OpenMAX AL object ID 1493af2a8dd03f3113d5da1000dd79c143a9f0c4f36Jean-Michel Trivi CAudioRecorder_Realize, 1503af2a8dd03f3113d5da1000dd79c143a9f0c4f36Jean-Michel Trivi CAudioRecorder_Resume, 151928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten CAudioRecorder_Destroy, 152928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten CAudioRecorder_PreDestroy 153b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 154b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 155c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#endif 156c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 157c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 158b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten// Engine class 159b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 160510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kastenstatic const struct iid_vtable Engine_interfaces[INTERFACES_Engine] = { 161104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CEngine, mObject)}, 162711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT, 163b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(CEngine, mDynamicInterfaceManagement)}, 1647a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_ENGINE, INTERFACE_IMPLICIT, offsetof(CEngine, mEngine)}, 165c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_ENGINECAPABILITIES, INTERFACE_IMPLICIT_BASE, offsetof(CEngine, mEngineCapabilities)}, 166c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_THREADSYNC, INTERFACE_IMPLICIT_BASE, offsetof(CEngine, mThreadSync)}, 167c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_AUDIOIODEVICECAPABILITIES, INTERFACE_IMPLICIT_BASE, 168b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(CEngine, mAudioIODeviceCapabilities)}, 169c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_AUDIODECODERCAPABILITIES, INTERFACE_EXPLICIT_BASE, 170b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(CEngine, mAudioDecoderCapabilities)}, 171c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_AUDIOENCODERCAPABILITIES, INTERFACE_EXPLICIT_BASE, 172b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(CEngine, mAudioEncoderCapabilities)}, 173c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_3DCOMMIT, INTERFACE_EXPLICIT_GAME, offsetof(CEngine, m3DCommit)}, 1745e3b06982dbf1eae237cc74326e66d51d3cdd664Glenn Kasten {MPH_DEVICEVOLUME, INTERFACE_OPTIONAL, offsetof(CEngine, mDeviceVolume)}, 1758db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten {MPH_XAENGINE, INTERFACE_IMPLICIT, offsetof(CEngine, mXAEngine)}, 176928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten#ifdef ANDROID 1775e3b06982dbf1eae237cc74326e66d51d3cdd664Glenn Kasten {MPH_ANDROIDEFFECTCAPABILITIES, INTERFACE_EXPLICIT, 1785e3b06982dbf1eae237cc74326e66d51d3cdd664Glenn Kasten offsetof(CEngine, mAndroidEffectCapabilities)}, 179928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten#endif 1806e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi {MPH_XAVIDEODECODERCAPABILITIES, INTERFACE_EXPLICIT, 1816e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi offsetof(CEngine, mVideoDecoderCapabilities)}, 182b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 183b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 184b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kastenstatic const ClassTable CEngine_class = { 185b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten Engine_interfaces, 186510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kasten INTERFACES_Engine, 187b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten MPH_to_Engine, 188b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten "Engine", 189b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten sizeof(CEngine), 190b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten SL_OBJECTID_ENGINE, 1918b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten XA_OBJECTID_ENGINE, 192d2a7f0d6883a6d3835642e7b282f05ed1c54fe63Glenn Kasten CEngine_Realize, 193928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten CEngine_Resume, 194928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten CEngine_Destroy, 195928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten CEngine_PreDestroy 196b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 197b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 198c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 199c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#if USE_PROFILES & USE_PROFILES_OPTIONAL 200c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 201b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten// LEDDevice class 202b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 203510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kastenstatic const struct iid_vtable LEDDevice_interfaces[INTERFACES_LEDDevice] = { 204104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CLEDDevice, mObject)}, 205b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT, 206b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(CLEDDevice, mDynamicInterfaceManagement)}, 2075e3b06982dbf1eae237cc74326e66d51d3cdd664Glenn Kasten {MPH_LED, INTERFACE_IMPLICIT, offsetof(CLEDDevice, mLEDArray)}, 208b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 209b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 210b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kastenstatic const ClassTable CLEDDevice_class = { 211b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten LEDDevice_interfaces, 212510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kasten INTERFACES_LEDDevice, 213b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten MPH_to_LEDDevice, 214b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten "LEDDevice", 215b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten sizeof(CLEDDevice), 216b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten SL_OBJECTID_LEDDEVICE, 2178b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten XA_OBJECTID_LEDDEVICE, 218b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL, 219b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL, 220928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten NULL, 221b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL 222b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 223b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 224c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#endif 225c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 226c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 227c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#if USE_PROFILES & USE_PROFILES_GAME 228c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 229b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten// Listener class 230b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 231510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kastenstatic const struct iid_vtable Listener_interfaces[INTERFACES_Listener] = { 232104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CListener, mObject)}, 233b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT, 234b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(CListener, mDynamicInterfaceManagement)}, 235f51dba65751107c930759938775b75531ec1f330Glenn Kasten {MPH_3DDOPPLER, INTERFACE_DYNAMIC_GAME, offsetof(CListener, m3DDoppler)}, 2365e3b06982dbf1eae237cc74326e66d51d3cdd664Glenn Kasten {MPH_3DLOCATION, INTERFACE_EXPLICIT_GAME, offsetof(CListener, m3DLocation)}, 237b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 238b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 239b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kastenstatic const ClassTable CListener_class = { 240b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten Listener_interfaces, 241510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kasten INTERFACES_Listener, 242b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten MPH_to_Listener, 243b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten "Listener", 244b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten sizeof(CListener), 245b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten SL_OBJECTID_LISTENER, 2468b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten 0, // OpenMAX AL object ID 247b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL, 248b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL, 249928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten NULL, 250b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL 251b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 252b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 253c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#endif 254c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 255c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 256c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#if USE_PROFILES & (USE_PROFILES_GAME | USE_PROFILES_MUSIC) 257c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 258b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten// MetadataExtractor class 259b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 260510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kastenstatic const struct iid_vtable MetadataExtractor_interfaces[INTERFACES_MetadataExtractor] = { 261104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CMetadataExtractor, mObject)}, 262b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT, 263b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(CMetadataExtractor, mDynamicInterfaceManagement)}, 2647a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_DYNAMICSOURCE, INTERFACE_IMPLICIT, offsetof(CMetadataExtractor, mDynamicSource)}, 2657a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_METADATAEXTRACTION, INTERFACE_IMPLICIT, offsetof(CMetadataExtractor, mMetadataExtraction)}, 2665e3b06982dbf1eae237cc74326e66d51d3cdd664Glenn Kasten {MPH_METADATATRAVERSAL, INTERFACE_IMPLICIT, offsetof(CMetadataExtractor, mMetadataTraversal)}, 267b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 268b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 269b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kastenstatic const ClassTable CMetadataExtractor_class = { 270b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten MetadataExtractor_interfaces, 271510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kasten INTERFACES_MetadataExtractor, 272b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten MPH_to_MetadataExtractor, 273b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten "MetadataExtractor", 274b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten sizeof(CMetadataExtractor), 275b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten SL_OBJECTID_METADATAEXTRACTOR, 2768b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten XA_OBJECTID_METADATAEXTRACTOR, 277b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL, 278b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL, 279928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten NULL, 280b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL 281b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 282b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 283c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#endif 284c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 285c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 286c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#if USE_PROFILES & USE_PROFILES_GAME 287c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 288b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten// MidiPlayer class 289b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 290510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kastenstatic const struct iid_vtable MidiPlayer_interfaces[INTERFACES_MidiPlayer] = { 291104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CMidiPlayer, mObject)}, 292b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT, 293b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(CMidiPlayer, mDynamicInterfaceManagement)}, 2947a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_PLAY, INTERFACE_IMPLICIT, offsetof(CMidiPlayer, mPlay)}, 2957a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_3DDOPPLER, INTERFACE_DYNAMIC_GAME, offsetof(C3DGroup, m3DDoppler)}, 296c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_3DGROUPING, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, m3DGrouping)}, 297c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_3DLOCATION, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, m3DLocation)}, 298c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_3DSOURCE, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, m3DSource)}, 299c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_BUFFERQUEUE, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, mBufferQueue)}, 300c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_EFFECTSEND, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, mEffectSend)}, 301c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_MUTESOLO, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, mMuteSolo)}, 302c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_METADATAEXTRACTION, INTERFACE_DYNAMIC_GAME, offsetof(CMidiPlayer, mMetadataExtraction)}, 303c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_METADATATRAVERSAL, INTERFACE_DYNAMIC_GAME, offsetof(CMidiPlayer, mMetadataTraversal)}, 304c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_MIDIMESSAGE, INTERFACE_EXPLICIT_GAME_PHONE, offsetof(CMidiPlayer, mMIDIMessage)}, 305c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_MIDITIME, INTERFACE_EXPLICIT_GAME_PHONE, offsetof(CMidiPlayer, mMIDITime)}, 306c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_MIDITEMPO, INTERFACE_EXPLICIT_GAME_PHONE, offsetof(CMidiPlayer, mMIDITempo)}, 307c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_MIDIMUTESOLO, INTERFACE_EXPLICIT_GAME, offsetof(CMidiPlayer, mMIDIMuteSolo)}, 308c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_PREFETCHSTATUS, INTERFACE_EXPLICIT_GAME_PHONE, offsetof(CMidiPlayer, mPrefetchStatus)}, 309c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_SEEK, INTERFACE_EXPLICIT_GAME_PHONE, offsetof(CMidiPlayer, mSeek)}, 310c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_VOLUME, INTERFACE_EXPLICIT_GAME_PHONE, offsetof(CMidiPlayer, mVolume)}, 3117a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_3DMACROSCOPIC, INTERFACE_OPTIONAL, offsetof(CMidiPlayer, m3DMacroscopic)}, 312c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_BASSBOOST, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CMidiPlayer, mBassBoost)}, 3137a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_DYNAMICSOURCE, INTERFACE_OPTIONAL, offsetof(CMidiPlayer, mDynamicSource)}, 314fe96fa06360516c60490c7a697e1148017b4c1b2Glenn Kasten {MPH_ENVIRONMENTALREVERB, INTERFACE_DYNAMIC_OPTIONAL, 315fe96fa06360516c60490c7a697e1148017b4c1b2Glenn Kasten offsetof(CMidiPlayer, mEnvironmentalReverb)}, 316c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_EQUALIZER, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CMidiPlayer, mEqualizer)}, 317c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_PITCH, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CMidiPlayer, mPitch)}, 318c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_PRESETREVERB, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CMidiPlayer, mPresetReverb)}, 319c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_PLAYBACKRATE, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CMidiPlayer, mPlaybackRate)}, 320c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten {MPH_VIRTUALIZER, INTERFACE_DYNAMIC_OPTIONAL, offsetof(CMidiPlayer, mVirtualizer)}, 3217a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_VISUALIZATION, INTERFACE_OPTIONAL, offsetof(CMidiPlayer, mVisualization)}, 322b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 323b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 324b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kastenstatic const ClassTable CMidiPlayer_class = { 325b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten MidiPlayer_interfaces, 326510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kasten INTERFACES_MidiPlayer, 327b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten MPH_to_MidiPlayer, 328b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten "MidiPlayer", 329b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten sizeof(CMidiPlayer), 330b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten SL_OBJECTID_MIDIPLAYER, 3318b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten 0, // OpenMAX AL object ID 332b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL, 333b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL, 334928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten NULL, 335b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL 336b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 337b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 338c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#endif 339c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 340c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 341b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten// OutputMix class 342b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 343510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kastenstatic const struct iid_vtable OutputMix_interfaces[INTERFACES_OutputMix] = { 344104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(COutputMix, mObject)}, 345711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT, 346b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(COutputMix, mDynamicInterfaceManagement)}, 3477a79f519d89eb0e1a5b3f4005484b16d6854d7e2Glenn Kasten {MPH_OUTPUTMIX, INTERFACE_IMPLICIT, offsetof(COutputMix, mOutputMix)}, 348b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten#ifdef USE_OUTPUTMIXEXT 349711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_OUTPUTMIXEXT, INTERFACE_UNAVAILABLE, offsetof(COutputMix, mOutputMixExt)}, 350b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten#else 351a438eb1cf1ae602afab00336528dd230bd929206Glenn Kasten {MPH_OUTPUTMIXEXT, INTERFACE_UNAVAILABLE, 0}, 352b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten#endif 353711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_ENVIRONMENTALREVERB, INTERFACE_DYNAMIC, 354104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten offsetof(COutputMix, mEnvironmentalReverb)}, 355711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_EQUALIZER, INTERFACE_DYNAMIC, offsetof(COutputMix, mEqualizer)}, 356711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_PRESETREVERB, INTERFACE_DYNAMIC, offsetof(COutputMix, mPresetReverb)}, 357711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_VIRTUALIZER, INTERFACE_DYNAMIC, offsetof(COutputMix, mVirtualizer)}, 358104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten // The overall Volume interface is explicit optional, 359c3845706778edec308bd9ced559cec0a456608bdGlenn Kasten // but portions of Volume are mandated only in Game and Music profiles 360104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten {MPH_VOLUME, INTERFACE_OPTIONAL, offsetof(COutputMix, mVolume)}, 361711332800108ad6e0e594796e5f8db0da3eff402Glenn Kasten {MPH_BASSBOOST, INTERFACE_DYNAMIC, offsetof(COutputMix, mBassBoost)}, 36249e4cfeedc0f8e571d301384084397054b4922f8Jean-Michel Trivi {MPH_VISUALIZATION, INTERFACE_OPTIONAL, offsetof(COutputMix, mVisualization)}, 36349e4cfeedc0f8e571d301384084397054b4922f8Jean-Michel Trivi#ifdef ANDROID 36449e4cfeedc0f8e571d301384084397054b4922f8Jean-Michel Trivi {MPH_ANDROIDEFFECT, INTERFACE_EXPLICIT, offsetof(COutputMix, mAndroidEffect)}, 36549e4cfeedc0f8e571d301384084397054b4922f8Jean-Michel Trivi#endif 366b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 367b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 368b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kastenstatic const ClassTable COutputMix_class = { 369b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten OutputMix_interfaces, 370510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kasten INTERFACES_OutputMix, 371b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten MPH_to_OutputMix, 372b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten "OutputMix", 373b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten sizeof(COutputMix), 374b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten SL_OBJECTID_OUTPUTMIX, 3758b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten XA_OBJECTID_OUTPUTMIX, 3767e01bc6208fb5b4a2a0019d67bf74373f8ee9428Jean-Michel Trivi COutputMix_Realize, 3777e01bc6208fb5b4a2a0019d67bf74373f8ee9428Jean-Michel Trivi COutputMix_Resume, 378928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten COutputMix_Destroy, 379928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten COutputMix_PreDestroy 380b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 381b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 382c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 383c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#if USE_PROFILES & USE_PROFILES_OPTIONAL 384c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 385b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten// Vibra class 386b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 387510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kastenstatic const struct iid_vtable VibraDevice_interfaces[INTERFACES_VibraDevice] = { 388104c000a6f36b871ca11e0394db1e5217f374cafGlenn Kasten {MPH_OBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CVibraDevice, mObject)}, 389a438eb1cf1ae602afab00336528dd230bd929206Glenn Kasten {MPH_DYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT, 390b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten offsetof(CVibraDevice, mDynamicInterfaceManagement)}, 3915e3b06982dbf1eae237cc74326e66d51d3cdd664Glenn Kasten {MPH_VIBRA, INTERFACE_IMPLICIT, offsetof(CVibraDevice, mVibra)}, 392b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 393b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 394b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kastenstatic const ClassTable CVibraDevice_class = { 395b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten VibraDevice_interfaces, 396510f3671f716f6835282e4b0fd0275c20e9dadd8Glenn Kasten INTERFACES_VibraDevice, 397b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten MPH_to_Vibra, 398b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten "VibraDevice", 399b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten sizeof(CVibraDevice), 400b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten SL_OBJECTID_VIBRADEVICE, 4018b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten XA_OBJECTID_VIBRADEVICE, 402b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL, 403b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL, 404928ea4ffff40c82987cfb1ac9e3095fdc6968709Glenn Kasten NULL, 405b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten NULL 406b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 407b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 408c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#endif 409c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 410b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 4118b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten// Media player class 4128b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten 4138b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kastenstatic const struct iid_vtable MediaPlayer_interfaces[INTERFACES_MediaPlayer] = { 414a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten {MPH_XAOBJECT, INTERFACE_IMPLICIT_PREREALIZE, offsetof(CMediaPlayer, mObject)}, 415a361b51914aeb5f8f65c7ecad719d1e01f90913bGlenn Kasten {MPH_XADYNAMICINTERFACEMANAGEMENT, INTERFACE_IMPLICIT, 4168b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten offsetof(CMediaPlayer, mDynamicInterfaceManagement)}, 41794a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten {MPH_XAPLAY, INTERFACE_IMPLICIT, offsetof(CMediaPlayer, mPlay)}, 41837dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi {MPH_XASTREAMINFORMATION, INTERFACE_EXPLICIT, offsetof(CMediaPlayer, mStreamInfo)}, 41937dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi {MPH_XAVOLUME, INTERFACE_IMPLICIT, offsetof(CMediaPlayer, mVolume)}, 42092b245bf8828db9e469febebbe8774c00570b5b9Jean-Michel Trivi {MPH_XASEEK, INTERFACE_EXPLICIT, offsetof(CMediaPlayer, mSeek)}, 421c623c89c0a32c5fc77c998f1742d58e7be69e8c1Glenn Kasten {MPH_XAPREFETCHSTATUS, INTERFACE_EXPLICIT, offsetof(CMediaPlayer, mPrefetchStatus)}, 422eba01e9626bb1801e0666f4e187ae09b5e649d70Glenn Kasten#ifdef ANDROID 42360ca9f9ef02f6e486c3338cb811f603dd7825c05Glenn Kasten {MPH_ANDROIDBUFFERQUEUESOURCE, INTERFACE_EXPLICIT, offsetof(CMediaPlayer, mAndroidBufferQueue)}, 424eba01e9626bb1801e0666f4e187ae09b5e649d70Glenn Kasten#endif 4258b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten}; 4268b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten 4278b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kastenstatic const ClassTable CMediaPlayer_class = { 4288b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten MediaPlayer_interfaces, 4298b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten INTERFACES_MediaPlayer, 4308b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten MPH_to_MediaPlayer, 4318b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten "MediaPlayer", 4328b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten sizeof(CMediaPlayer), 4338b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten 0, // OpenSL ES object ID 4348b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten XA_OBJECTID_MEDIAPLAYER, 43594a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten CMediaPlayer_Realize, 43694a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten CMediaPlayer_Resume, 43794a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten CMediaPlayer_Destroy, 43894a37e8117fb72790882dfb815f99e2365754c74Glenn Kasten CMediaPlayer_PreDestroy 4398b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten}; 4408b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten 4418b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten 4428b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kastenstatic const ClassTable * const slClasses[] = { 443b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten // Do not change order of these entries; they are in numerical order 444b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten &CEngine_class, 445c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#if USE_PROFILES & USE_PROFILES_OPTIONAL 446b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten &CLEDDevice_class, 447b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten &CVibraDevice_class, 448c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#else 449c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten NULL, 450c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten NULL, 451c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#endif 452b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten &CAudioPlayer_class, 453c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#if (USE_PROFILES & USE_PROFILES_OPTIONAL) || defined(ANDROID) 454b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten &CAudioRecorder_class, 455c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#else 456c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten NULL, 457c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#endif 458c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#if USE_PROFILES & (USE_PROFILES_GAME | USE_PROFILES_PHONE) 459b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten &CMidiPlayer_class, 460c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#else 461c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten NULL, 462c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#endif 463c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#if USE_PROFILES & USE_PROFILES_GAME 464b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten &CListener_class, 465b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten &C3DGroup_class, 466c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#else 467c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten NULL, 468c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten NULL, 469c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#endif 470b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten &COutputMix_class, 471c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#if USE_PROFILES & (USE_PROFILES_GAME | USE_PROFILES_MUSIC) 472b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten &CMetadataExtractor_class 473c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#else 474c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten NULL 475c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten#endif 476b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten}; 477b7154f2324c8ae44b820c07c69aaa80a4bb9e418Glenn Kasten 478c2b9d79c4b59caff965076f445f5a735a360b084Glenn Kasten 4798db0b106cdce5f5216b1535492de7930ad738aedGlenn Kastenstatic const ClassTable * const xaClasses[] = { 4808db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten &CEngine_class, 4818db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten#if USE_PROFILES & USE_PROFILES_OPTIONAL 4828db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten &CLEDDevice_class, 4838db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten &CVibraDevice_class, 4848db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten#else 4858db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten NULL, 4868db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten NULL, 4878db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten#endif 4888b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten &CMediaPlayer_class, 4898db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten#if 1 4908db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten NULL, 4918db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten NULL, 4928db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten#else 4938b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten &CMediaRecorder_class, 4948b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten &CRadioDevice_class, 4958db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten#endif 4968db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten &COutputMix_class, 4978db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten#if USE_PROFILES & (USE_PROFILES_GAME | USE_PROFILES_MUSIC) 4988db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten &CMetadataExtractor_class, 4998db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten#else 5008db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten NULL, 5018db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten#endif 5028db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten#if 1 5038db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten NULL 5048db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten#else 5058b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten &CCameraDevice_class 5068db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten#endif 5078db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten}; 5088db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten 5098db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten 5108b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten/* \brief Map SL_OBJECTID to class or NULL if object ID not supported */ 5118db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten 512527f8ca99f2938d6569fc25dcf3256985a54dec6Glenn KastenLI_API const ClassTable *objectIDtoClass(SLuint32 objectID) 5138db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten{ 5148db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten // object ID is the engine and always present 5158b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten assert(NULL != slClasses[0]); 5168b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten SLuint32 slObjectID0 = slClasses[0]->mSLObjectID; 5178b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten if ((slObjectID0 <= objectID) && ((slObjectID0 + sizeof(slClasses)/sizeof(slClasses[0])) > 5188b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten objectID)) { 5198b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten return slClasses[objectID - slObjectID0]; 5208b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten } 5218db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten assert(NULL != xaClasses[0]); 5228b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten SLuint32 xaObjectID0 = xaClasses[0]->mXAObjectID; 5238b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten if ((xaObjectID0 <= objectID) && ((xaObjectID0 + sizeof(xaClasses)/sizeof(xaClasses[0])) > 5248db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten objectID)) { 5258b8875067dd02b79361abb00c5d65b02a8ae72b0Glenn Kasten return xaClasses[objectID - xaObjectID0]; 5268db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten } 5278db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten return NULL; 5288db0b106cdce5f5216b1535492de7930ad738aedGlenn Kasten} 529