classes.h revision 10d8b6a5f9a7c24203e3ee228ec596d03c1aa78d
17c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project/* 27c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * Copyright (C) 2010 The Android Open Source Project 37c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * 47c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 57c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * you may not use this file except in compliance with the License. 67c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * You may obtain a copy of the License at 77c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * 87c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 97c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * 107c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 117c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 127c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * See the License for the specific language governing permissions and 147c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * limitations under the License. 157c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project */ 167c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 177c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#include "Configuration.h" 187c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 197c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#include "android/CallbackProtector.h" 20c5b2c0bf8007562536b822eb060fc54a01f8e08bMathias Agopian#include "android/android_Effect.h" 217c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#include "android/android_GenericPlayer.h" 22702ea9d42f52fc145090c0f0bfbe64993e4b8b33Brad Fitzpatrick#endif 23c5b2c0bf8007562536b822eb060fc54a01f8e08bMathias Agopian 24c5b2c0bf8007562536b822eb060fc54a01f8e08bMathias Agopian// Class structures 257c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 26c5b2c0bf8007562536b822eb060fc54a01f8e08bMathias Agopian 277c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project/*typedef*/ struct CAudioPlayer_struct { 287c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IObject mObject; 297c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 307c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_AudioPlayer 30 // see MPH_to_AudioPlayer in MPH_to.c for list of interfaces 317c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#else 3298e71ddaede9a0bfb681fd237bec1f66c6c53193Mathias Agopian#define INTERFACES_AudioPlayer 26 // see MPH_to_AudioPlayer in MPH_to.c for list of interfaces 335707dbf15d0b44c88fbaa6dd271097f2d42932e0Jeff Brown#endif 347c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mInterfaceStates2[INTERFACES_AudioPlayer - INTERFACES_Default]; 35208059f67ed2dd9fa025e07fcb6954d3cb61c79eMathias Agopian IDynamicInterfaceManagement mDynamicInterfaceManagement; 367c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPlay mPlay; 377c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project I3DDoppler m3DDoppler; 387c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project I3DGrouping m3DGrouping; 397c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project I3DLocation m3DLocation; 405707dbf15d0b44c88fbaa6dd271097f2d42932e0Jeff Brown I3DSource m3DSource; 417c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IBufferQueue mBufferQueue; 427c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IEffectSend mEffectSend; 437c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IMetadataExtraction mMetadataExtraction; 447c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IMetadataTraversal mMetadataTraversal; 457c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPrefetchStatus mPrefetchStatus; 467c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IRatePitch mRatePitch; 477c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project ISeek mSeek; 487c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVolume mVolume; 497c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IMuteSolo mMuteSolo; 507c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 517c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAndroidEffect mAndroidEffect; 527c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAndroidEffectSend mAndroidEffectSend; 53a877cd85b5a026384542e3271fc310d6a8fe24c6Brad Fitzpatrick IAndroidConfiguration mAndroidConfiguration; 54a877cd85b5a026384542e3271fc310d6a8fe24c6Brad Fitzpatrick IAndroidBufferQueue mAndroidBufferQueue; 55a877cd85b5a026384542e3271fc310d6a8fe24c6Brad Fitzpatrick#endif 56d36f4a5f130be7f7b29a8b63cedbc8edfa56db96Brad Fitzpatrick // optional interfaces 57d36f4a5f130be7f7b29a8b63cedbc8edfa56db96Brad Fitzpatrick I3DMacroscopic m3DMacroscopic; 58d36f4a5f130be7f7b29a8b63cedbc8edfa56db96Brad Fitzpatrick IBassBoost mBassBoost; 595707dbf15d0b44c88fbaa6dd271097f2d42932e0Jeff Brown IDynamicSource mDynamicSource; 605707dbf15d0b44c88fbaa6dd271097f2d42932e0Jeff Brown IEnvironmentalReverb mEnvironmentalReverb; 615707dbf15d0b44c88fbaa6dd271097f2d42932e0Jeff Brown IEqualizer mEqualizer; 627c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPitch mPitch; 637c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPresetReverb mPresetReverb; 647c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPlaybackRate mPlaybackRate; 657c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVirtualizer mVirtualizer; 667c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVisualization mVisualization; 677c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // fields below are per-instance private fields not associated with an interface 687c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project DataLocatorFormat mDataSource; 697c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project DataLocatorFormat mDataSink; 707c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // cached data for this instance 717c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // Formerly at IMuteSolo 727c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mMuteMask; // Mask for which channels are muted: bit 0=left, 1=right 737c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mSoloMask; // Mask for which channels are soloed: bit 0=left, 1=right 747c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mNumChannels; // initially UNKNOWN_NUMCHANNELS, then const once it is known, 757c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // range 1 <= x <= FCC_8 767c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // End of former IMuteSolo fields 777c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint32 mSampleRateMilliHz;// initially UNKNOWN_SAMPLERATE, then const once it is known 787c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // Formerly at IEffectSend 797c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project /** 807c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * Dry volume modified by effect send interfaces: SLEffectSendItf and SLAndroidEffectSendItf 817c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project */ 827c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLmillibel mDirectLevel; 837c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // implementation-specific data for this instance 847c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef USE_OUTPUTMIXEXT 857c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project Track *mTrack; 867c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project float mGains[STEREO_CHANNELS]; ///< Computed gain based on volume, mute, solo, stereo position 877c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLboolean mDestroyRequested; ///< Mixer to acknowledge application's call to Object::Destroy 887c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 897c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef USE_SNDFILE 907c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project struct SndFile mSndFile; 917c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif // USE_SNDFILE 927c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 937c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project enum AndroidObjectType mAndroidObjType; 947c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project /** identifies the initialization and preparation state */ 957c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project enum AndroidObjectState mAndroidObjState; 967c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project /** identifies which group of effects ("session") this player belongs to */ 977c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project int mSessionId; 987c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project /** identifies the Android stream type playback will occur on */ 997c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project audio_stream_type_t mStreamType; 1007c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // FIXME consolidate the next several variables into one class to avoid placement new 1017c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project /** plays the PCM data for this player */ 1027c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project android::sp<android::AudioTrack> mAudioTrack; 1037c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project android::sp<android::CallbackProtector> mCallbackProtector; 1047c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project android::sp<android::GenericPlayer> mAPlayer; 1057c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project /** aux effect the AudioTrack will be attached to if aux send enabled */ 1067c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project android::sp<android::AudioEffect> mAuxEffect; 1077c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // FIXME all levels below need to be encapsulated in a field of type AndroidAudioLevels 1087c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project /** send level to aux effect, there's a single aux bus, so there's a single level */ 1097c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLmillibel mAuxSendLevel; 1107c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project /** 1117c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project * Attenuation factor derived from direct level 1127c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project */ 1137c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project float mAmplFromDirectLevel; 1147c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project /** FIXME whether to call AudioTrack::start() at the next safe opportunity */ 1157c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project bool mDeferredStart; 1167c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 1177c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project} /*CAudioPlayer*/; 1187c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 1197c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 1207c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project/*typedef*/ struct CAudioRecorder_struct { 1217c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // mandated interfaces 1227c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IObject mObject; 1237c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 1247c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_AudioRecorder 14 // see MPH_to_AudioRecorder in MPH_to.c for list of interfaces 1257c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#else 1267c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_AudioRecorder 9 // see MPH_to_AudioRecorder in MPH_to.c for list of interfaces 1277c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 1287c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mInterfaceStates2[INTERFACES_AudioRecorder - INTERFACES_Default]; 1297c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicInterfaceManagement mDynamicInterfaceManagement; 1307c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IRecord mRecord; 1317c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAudioEncoder mAudioEncoder; 1327c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // optional interfaces 1337c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IBassBoost mBassBoost; 1347c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicSource mDynamicSource; 1357c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IEqualizer mEqualizer; 1367c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVisualization mVisualization; 1377c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVolume mVolume; 1387c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 1397c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IBufferQueue mBufferQueue; 1407c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAndroidConfiguration mAndroidConfiguration; 1417c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAndroidAcousticEchoCancellation mAcousticEchoCancellation; 1427c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAndroidAutomaticGainControl mAutomaticGainControl; 1437c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAndroidNoiseSuppression mNoiseSuppression; 1447c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 1457c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // remaining are per-instance private fields not associated with an interface 1467c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project DataLocatorFormat mDataSource; 1477c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project DataLocatorFormat mDataSink; 1487c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // cached data for this instance 1497c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mNumChannels; // initially UNKNOWN_NUMCHANNELS, then const once it is known, 1507c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // range 1 <= x <= FCC_8 1517c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint32 mSampleRateMilliHz;// initially UNKNOWN_SAMPLERATE, then const once it is known 1527c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // implementation-specific data for this instance 1537c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 1547c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // FIXME consolidate the next several variables into ARecorder class to avoid placement new 1557c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project enum AndroidObjectType mAndroidObjType; 1567c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project android::sp<android::AudioRecord> mAudioRecord; 1577c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project android::sp<android::CallbackProtector> mCallbackProtector; 1587c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project audio_source_t mRecordSource; 1597c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 1607c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project} /*CAudioRecorder*/; 1617c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 1627c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 1637c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project/*typedef*/ struct CEngine_struct { 1647c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // mandated implicit interfaces 1657c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IObject mObject; 1667c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 1677c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_Engine 13 // see MPH_to_Engine in MPH_to.c for list of interfaces 1687c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#else 1697c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_Engine 12 // see MPH_to_Engine in MPH_to.c for list of interfaces 1707c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 1717c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mInterfaceStates2[INTERFACES_Engine - INTERFACES_Default]; 1727c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicInterfaceManagement mDynamicInterfaceManagement; 1737c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IEngine mEngine; 1747c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IEngineCapabilities mEngineCapabilities; 1757c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IThreadSync mThreadSync; 1767c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // mandated explicit interfaces 1777c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAudioIODeviceCapabilities mAudioIODeviceCapabilities; 1787c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAudioDecoderCapabilities mAudioDecoderCapabilities; 1797c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAudioEncoderCapabilities mAudioEncoderCapabilities; 1807c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project I3DCommit m3DCommit; 1817c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // optional interfaces 1827c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDeviceVolume mDeviceVolume; 1837c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // OpenMAX AL mandated implicit interfaces 1847c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IXAEngine mXAEngine; 1857c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 1867c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAndroidEffectCapabilities mAndroidEffectCapabilities; 1877c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 1887c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // OpenMAX AL explicit interfaces 1897c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVideoDecoderCapabilities mVideoDecoderCapabilities; 1907c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // remaining are per-instance private fields not associated with an interface 1917c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project ThreadPool mThreadPool; // for asynchronous operations 1927c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project pthread_t mSyncThread; 1937c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#if defined(ANDROID) 1947c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // FIXME number of presets will only be saved in IEqualizer, preset names will not be stored 1957c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint32 mEqNumPresets; 1967c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project char** mEqPresetNames; 1977c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 1987c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project} /*CEngine*/; 1997c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 2007c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Projecttypedef struct { 2017c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // mandated interfaces 2027c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IObject mObject; 2037c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_LEDDevice 3 // see MPH_to_LEDDevice in MPH_to.c for list of interfaces 2047c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mInterfaceStates2[INTERFACES_LEDDevice - INTERFACES_Default]; 2057c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicInterfaceManagement mDynamicInterfaceManagement; 2067c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project ILEDArray mLEDArray; 2077c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // remaining are per-instance private fields not associated with an interface 2087c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint32 mDeviceID; 2097c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project} CLEDDevice; 2107c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 2117c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Projecttypedef struct { 2127c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // mandated interfaces 2137c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IObject mObject; 2147c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_Listener 4 // see MPH_to_Listener in MPH_to.c for list of interfaces 2157c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mInterfaceStates2[INTERFACES_Listener - INTERFACES_Default]; 2167c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicInterfaceManagement mDynamicInterfaceManagement; 2177c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project I3DDoppler m3DDoppler; 2187c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project I3DLocation m3DLocation; 2197c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // remaining are per-instance private fields not associated with an interface 2207c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project} CListener; 2217c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 2227c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Projecttypedef struct { 2237c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // mandated interfaces 2247c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IObject mObject; 2257c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_MetadataExtractor 5 // see MPH_to_MetadataExtractor in MPH_to.c for list of 2267c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // interfaces 2277c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mInterfaceStates2[INTERFACES_MetadataExtractor - INTERFACES_Default]; 2287c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicInterfaceManagement mDynamicInterfaceManagement; 2297c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicSource mDynamicSource; 2307c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IMetadataExtraction mMetadataExtraction; 2317c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IMetadataTraversal mMetadataTraversal; 2327c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // remaining are per-instance private fields not associated with an interface 2337c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project} CMetadataExtractor; 2347c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 2357c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Projecttypedef struct { 2367c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // mandated interfaces 2377c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IObject mObject; 2387c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 2397c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_MidiPlayer 29 // see MPH_to_MidiPlayer in MPH_to.c for list of interfaces 2407c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mInterfaceStates2[INTERFACES_MidiPlayer - INTERFACES_Default]; 2417c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicInterfaceManagement mDynamicInterfaceManagement; 2427c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPlay mPlay; 2437c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project I3DDoppler m3DDoppler; 2447c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project I3DGrouping m3DGrouping; 2457c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project I3DLocation m3DLocation; 2467c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project I3DSource m3DSource; 2477c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IBufferQueue mBufferQueue; 2487c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IEffectSend mEffectSend; 2497c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IMetadataExtraction mMetadataExtraction; 2507c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IMetadataTraversal mMetadataTraversal; 2517c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IMIDIMessage mMIDIMessage; 2527c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IMIDITime mMIDITime; 2537c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IMIDITempo mMIDITempo; 2547c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IMIDIMuteSolo mMIDIMuteSolo; 2557c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPrefetchStatus mPrefetchStatus; 2567c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project ISeek mSeek; 2577c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVolume mVolume; 2587c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IMuteSolo mMuteSolo; 2597c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // optional interfaces 2607c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project I3DMacroscopic m3DMacroscopic; 2617c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IBassBoost mBassBoost; 2627c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicSource mDynamicSource; 2637c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IEnvironmentalReverb mEnvironmentalReverb; 2647c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IEqualizer mEqualizer; 2657c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPitch mPitch; 2667c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPresetReverb mPresetReverb; 2677c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPlaybackRate mPlaybackRate; 2687c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVirtualizer mVirtualizer; 2697c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVisualization mVisualization; 2707c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // remaining are per-instance private fields not associated with an interface 2717c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project} CMidiPlayer; 2727c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 2737c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project/*typedef*/ struct COutputMix_struct { 2747c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // mandated interfaces 2757c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IObject mObject; 2767c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 2777c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_OutputMix 12 // see MPH_to_OutputMix in MPH_to.c for list of interfaces 2787c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#else 2797c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_OutputMix 11 // see MPH_to_OutputMix in MPH_to.c for list of interfaces 2807c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 2817c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mInterfaceStates2[INTERFACES_OutputMix - INTERFACES_Default]; 2827c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicInterfaceManagement mDynamicInterfaceManagement; 2837c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IOutputMix mOutputMix; 2847c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef USE_OUTPUTMIXEXT 2857c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IOutputMixExt mOutputMixExt; 2867c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 2877c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IEnvironmentalReverb mEnvironmentalReverb; 2887c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IEqualizer mEqualizer; 2897c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPresetReverb mPresetReverb; 2907c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVirtualizer mVirtualizer; 2917c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVolume mVolume; 2927c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // optional interfaces 2937c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IBassBoost mBassBoost; 2947c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVisualization mVisualization; 2957c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 2967c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAndroidEffect mAndroidEffect; 2977c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 2987c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // remaining are per-instance private fields not associated with an interface 2997c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project} /*COutputMix*/; 3007c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 3017c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Projecttypedef struct { 3027c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // mandated interfaces 3037c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IObject mObject; 3047c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_VibraDevice 3 // see MPH_to_VibraDevice in MPH_to.c for list of interfaces 3057c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mInterfaceStates2[INTERFACES_VibraDevice - INTERFACES_Default]; 3067c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicInterfaceManagement mDynamicInterfaceManagement; 3077c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVibra mVibra; 3087c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // remaining are per-instance private fields not associated with an interface 3097c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint32 mDeviceID; 3107c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project} CVibraDevice; 3117c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 3127c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project 3137c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Projecttypedef struct CMediaPlayer_struct { 3147c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IObject mObject; 3157c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 3167c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_MediaPlayer 8 3177c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#else 3187c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#define INTERFACES_MediaPlayer 7 3197c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 3207c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project XAuint8 mInterfaceStates2[INTERFACES_MediaPlayer - INTERFACES_Default]; 3217c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicInterfaceManagement mDynamicInterfaceManagement; 3227c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IDynamicSource mDynamicSource; 3237c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPlay mPlay; 3247c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IStreamInformation mStreamInfo; 3257c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IVolume mVolume; 3267c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project ISeek mSeek; 3277c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IPrefetchStatus mPrefetchStatus; 3287c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 3297c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project IAndroidBufferQueue mAndroidBufferQueue; 3307c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 3317c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // fields below are per-instance private fields not associated with an interface 3327c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project DataLocatorFormat mDataSource; 3337c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project DataLocatorFormat mBankSource; 3347c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project DataLocatorFormat mAudioSink; 3357c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project DataLocatorFormat mImageVideoSink; 3367c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project DataLocatorFormat mVibraSink; 3377c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project DataLocatorFormat mLEDArraySink; 3387c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project SLuint8 mNumChannels; // initially UNKNOWN_NUMCHANNELS, then const once it is known, 3397c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project // range 1 <= x <= 8 FIXME FCC_8 3407c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#ifdef ANDROID 3417c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project android::sp<android::GenericPlayer> mAVPlayer; 3427c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project android::sp<android::CallbackProtector> mCallbackProtector; 3437c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project enum AndroidObjectType mAndroidObjType; 3447c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project /** identifies the initialization and preparation state */ 3457c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project enum AndroidObjectState mAndroidObjState; 34697e2bcd76021b31c5064fd3f669bc3f450b4c952Dianne Hackborn /** identifies which group of effects ("session") this player belongs to */ 3477c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project int mSessionId; 3487c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project /** identifies the Android stream type playback will occur on */ 3497c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project audio_stream_type_t mStreamType; 3507c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project#endif 3517c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project} CMediaPlayer; 3527c1b96a165f970a09ed239bb4fb3f1b0d8f2a40The Android Open Source Project