xref: /aosp_15_r20/frameworks/wilhelm/src/classes.h (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 #include "Configuration.h"
18*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
19*bebae9c0SAndroid Build Coastguard Worker #include "android/CallbackProtector.h"
20*bebae9c0SAndroid Build Coastguard Worker #include "android/android_Effect.h"
21*bebae9c0SAndroid Build Coastguard Worker #include "android/android_GenericPlayer.h"
22*bebae9c0SAndroid Build Coastguard Worker #include <media/TrackPlayerBase.h>
23*bebae9c0SAndroid Build Coastguard Worker #include <audiomanager/IAudioManager.h>
24*bebae9c0SAndroid Build Coastguard Worker namespace android { class AudioRecordCallback; };
25*bebae9c0SAndroid Build Coastguard Worker #endif
26*bebae9c0SAndroid Build Coastguard Worker 
27*bebae9c0SAndroid Build Coastguard Worker // Class structures
28*bebae9c0SAndroid Build Coastguard Worker 
29*bebae9c0SAndroid Build Coastguard Worker 
30*bebae9c0SAndroid Build Coastguard Worker /*typedef*/ struct CAudioPlayer_struct {
31*bebae9c0SAndroid Build Coastguard Worker     IObject mObject;
32*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
33*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_AudioPlayer 30 // see MPH_to_AudioPlayer in MPH_to.c for list of interfaces
34*bebae9c0SAndroid Build Coastguard Worker #else
35*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_AudioPlayer 26 // see MPH_to_AudioPlayer in MPH_to.c for list of interfaces
36*bebae9c0SAndroid Build Coastguard Worker #endif
37*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mInterfaceStates2[INTERFACES_AudioPlayer - INTERFACES_Default];
38*bebae9c0SAndroid Build Coastguard Worker     IDynamicInterfaceManagement mDynamicInterfaceManagement;
39*bebae9c0SAndroid Build Coastguard Worker     IPlay mPlay;
40*bebae9c0SAndroid Build Coastguard Worker     I3DDoppler m3DDoppler;
41*bebae9c0SAndroid Build Coastguard Worker     I3DGrouping m3DGrouping;
42*bebae9c0SAndroid Build Coastguard Worker     I3DLocation m3DLocation;
43*bebae9c0SAndroid Build Coastguard Worker     I3DSource m3DSource;
44*bebae9c0SAndroid Build Coastguard Worker     IBufferQueue mBufferQueue;
45*bebae9c0SAndroid Build Coastguard Worker     IEffectSend mEffectSend;
46*bebae9c0SAndroid Build Coastguard Worker     IMetadataExtraction mMetadataExtraction;
47*bebae9c0SAndroid Build Coastguard Worker     IMetadataTraversal mMetadataTraversal;
48*bebae9c0SAndroid Build Coastguard Worker     IPrefetchStatus mPrefetchStatus;
49*bebae9c0SAndroid Build Coastguard Worker     IRatePitch mRatePitch;
50*bebae9c0SAndroid Build Coastguard Worker     ISeek mSeek;
51*bebae9c0SAndroid Build Coastguard Worker     IVolume mVolume;
52*bebae9c0SAndroid Build Coastguard Worker     IMuteSolo mMuteSolo;
53*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
54*bebae9c0SAndroid Build Coastguard Worker     IAndroidEffect mAndroidEffect;
55*bebae9c0SAndroid Build Coastguard Worker     IAndroidEffectSend mAndroidEffectSend;
56*bebae9c0SAndroid Build Coastguard Worker     IAndroidConfiguration mAndroidConfiguration;
57*bebae9c0SAndroid Build Coastguard Worker     IAndroidBufferQueue mAndroidBufferQueue;
58*bebae9c0SAndroid Build Coastguard Worker #endif
59*bebae9c0SAndroid Build Coastguard Worker     // optional interfaces
60*bebae9c0SAndroid Build Coastguard Worker     I3DMacroscopic m3DMacroscopic;
61*bebae9c0SAndroid Build Coastguard Worker     IBassBoost mBassBoost;
62*bebae9c0SAndroid Build Coastguard Worker     IDynamicSource mDynamicSource;
63*bebae9c0SAndroid Build Coastguard Worker     IEnvironmentalReverb mEnvironmentalReverb;
64*bebae9c0SAndroid Build Coastguard Worker     IEqualizer mEqualizer;
65*bebae9c0SAndroid Build Coastguard Worker     IPitch mPitch;
66*bebae9c0SAndroid Build Coastguard Worker     IPresetReverb mPresetReverb;
67*bebae9c0SAndroid Build Coastguard Worker     IPlaybackRate mPlaybackRate;
68*bebae9c0SAndroid Build Coastguard Worker     IVirtualizer mVirtualizer;
69*bebae9c0SAndroid Build Coastguard Worker     IVisualization mVisualization;
70*bebae9c0SAndroid Build Coastguard Worker     // fields below are per-instance private fields not associated with an interface
71*bebae9c0SAndroid Build Coastguard Worker     DataLocatorFormat mDataSource;
72*bebae9c0SAndroid Build Coastguard Worker     DataLocatorFormat mDataSink;
73*bebae9c0SAndroid Build Coastguard Worker     // cached data for this instance
74*bebae9c0SAndroid Build Coastguard Worker     // Formerly at IMuteSolo
75*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mMuteMask;      // Mask for which channels are muted: bit 0=left, 1=right
76*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mSoloMask;      // Mask for which channels are soloed: bit 0=left, 1=right
77*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mNumChannels;   // initially UNKNOWN_NUMCHANNELS, then const once it is known,
78*bebae9c0SAndroid Build Coastguard Worker                             // range 1 <= x <= FCC_8
79*bebae9c0SAndroid Build Coastguard Worker     // End of former IMuteSolo fields
80*bebae9c0SAndroid Build Coastguard Worker     SLuint32 mSampleRateMilliHz;// initially UNKNOWN_SAMPLERATE, then const once it is known
81*bebae9c0SAndroid Build Coastguard Worker     // Formerly at IEffectSend
82*bebae9c0SAndroid Build Coastguard Worker     /**
83*bebae9c0SAndroid Build Coastguard Worker      * Dry volume modified by effect send interfaces: SLEffectSendItf and SLAndroidEffectSendItf
84*bebae9c0SAndroid Build Coastguard Worker      */
85*bebae9c0SAndroid Build Coastguard Worker     SLmillibel mDirectLevel;
86*bebae9c0SAndroid Build Coastguard Worker     // implementation-specific data for this instance
87*bebae9c0SAndroid Build Coastguard Worker #ifdef USE_OUTPUTMIXEXT
88*bebae9c0SAndroid Build Coastguard Worker     Track *mTrack;
89*bebae9c0SAndroid Build Coastguard Worker     float mGains[STEREO_CHANNELS];  ///< Computed gain based on volume, mute, solo, stereo position
90*bebae9c0SAndroid Build Coastguard Worker     SLboolean mDestroyRequested;    ///< Mixer to acknowledge application's call to Object::Destroy
91*bebae9c0SAndroid Build Coastguard Worker #endif
92*bebae9c0SAndroid Build Coastguard Worker #ifdef USE_SNDFILE
93*bebae9c0SAndroid Build Coastguard Worker     struct SndFile mSndFile;
94*bebae9c0SAndroid Build Coastguard Worker #endif // USE_SNDFILE
95*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
96*bebae9c0SAndroid Build Coastguard Worker     enum AndroidObjectType mAndroidObjType;
97*bebae9c0SAndroid Build Coastguard Worker     /** identifies the initialization and preparation state */
98*bebae9c0SAndroid Build Coastguard Worker     enum AndroidObjectState mAndroidObjState;
99*bebae9c0SAndroid Build Coastguard Worker     /** identifies which group of effects ("session") this player belongs to */
100*bebae9c0SAndroid Build Coastguard Worker     audio_session_t mSessionId;
101*bebae9c0SAndroid Build Coastguard Worker     /** identifies the Android stream type playback will occur on */
102*bebae9c0SAndroid Build Coastguard Worker     audio_stream_type_t mStreamType;
103*bebae9c0SAndroid Build Coastguard Worker     /** player interface ID, uniquely identifies the player in the system */
104*bebae9c0SAndroid Build Coastguard Worker     audio_unique_id_t mPIId;
105*bebae9c0SAndroid Build Coastguard Worker     // FIXME consolidate the next several variables into one class to avoid placement new
106*bebae9c0SAndroid Build Coastguard Worker     /** plays the PCM data for this player and reflects its state in AudioManager,
107*bebae9c0SAndroid Build Coastguard Worker      *  always non-null once the AudioPlayer is created (i.e. before realize step) */
108*bebae9c0SAndroid Build Coastguard Worker     android::sp<android::TrackPlayerBase> mTrackPlayer;
109*bebae9c0SAndroid Build Coastguard Worker     android::sp<android::CallbackProtector> mCallbackProtector;
110*bebae9c0SAndroid Build Coastguard Worker     android::sp<android::GenericPlayer> mAPlayer;
111*bebae9c0SAndroid Build Coastguard Worker     /** aux effect the AudioTrack will be attached to if aux send enabled */
112*bebae9c0SAndroid Build Coastguard Worker     android::sp<android::AudioEffect> mAuxEffect;
113*bebae9c0SAndroid Build Coastguard Worker     // FIXME all levels below need to be encapsulated in a field of type AndroidAudioLevels
114*bebae9c0SAndroid Build Coastguard Worker     /** send level to aux effect, there's a single aux bus, so there's a single level */
115*bebae9c0SAndroid Build Coastguard Worker     SLmillibel mAuxSendLevel;
116*bebae9c0SAndroid Build Coastguard Worker     /**
117*bebae9c0SAndroid Build Coastguard Worker      * Attenuation factor derived from direct level
118*bebae9c0SAndroid Build Coastguard Worker      */
119*bebae9c0SAndroid Build Coastguard Worker     float mAmplFromDirectLevel;
120*bebae9c0SAndroid Build Coastguard Worker     /** FIXME whether to call AudioTrack::start() at the next safe opportunity */
121*bebae9c0SAndroid Build Coastguard Worker     bool mDeferredStart;
122*bebae9c0SAndroid Build Coastguard Worker     SLuint32 mPerformanceMode;
123*bebae9c0SAndroid Build Coastguard Worker #endif
124*bebae9c0SAndroid Build Coastguard Worker } /*CAudioPlayer*/;
125*bebae9c0SAndroid Build Coastguard Worker 
126*bebae9c0SAndroid Build Coastguard Worker 
127*bebae9c0SAndroid Build Coastguard Worker /*typedef*/ struct CAudioRecorder_struct {
128*bebae9c0SAndroid Build Coastguard Worker     // mandated interfaces
129*bebae9c0SAndroid Build Coastguard Worker     IObject mObject;
130*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
131*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_AudioRecorder 14 // see MPH_to_AudioRecorder in MPH_to.c for list of interfaces
132*bebae9c0SAndroid Build Coastguard Worker #else
133*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_AudioRecorder 9  // see MPH_to_AudioRecorder in MPH_to.c for list of interfaces
134*bebae9c0SAndroid Build Coastguard Worker #endif
135*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mInterfaceStates2[INTERFACES_AudioRecorder - INTERFACES_Default];
136*bebae9c0SAndroid Build Coastguard Worker     IDynamicInterfaceManagement mDynamicInterfaceManagement;
137*bebae9c0SAndroid Build Coastguard Worker     IRecord mRecord;
138*bebae9c0SAndroid Build Coastguard Worker     IAudioEncoder mAudioEncoder;
139*bebae9c0SAndroid Build Coastguard Worker     // optional interfaces
140*bebae9c0SAndroid Build Coastguard Worker     IBassBoost mBassBoost;
141*bebae9c0SAndroid Build Coastguard Worker     IDynamicSource mDynamicSource;
142*bebae9c0SAndroid Build Coastguard Worker     IEqualizer mEqualizer;
143*bebae9c0SAndroid Build Coastguard Worker     IVisualization mVisualization;
144*bebae9c0SAndroid Build Coastguard Worker     IVolume mVolume;
145*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
146*bebae9c0SAndroid Build Coastguard Worker     IBufferQueue mBufferQueue;
147*bebae9c0SAndroid Build Coastguard Worker     IAndroidConfiguration mAndroidConfiguration;
148*bebae9c0SAndroid Build Coastguard Worker     IAndroidAcousticEchoCancellation  mAcousticEchoCancellation;
149*bebae9c0SAndroid Build Coastguard Worker     IAndroidAutomaticGainControl mAutomaticGainControl;
150*bebae9c0SAndroid Build Coastguard Worker     IAndroidNoiseSuppression mNoiseSuppression;
151*bebae9c0SAndroid Build Coastguard Worker #endif
152*bebae9c0SAndroid Build Coastguard Worker     // remaining are per-instance private fields not associated with an interface
153*bebae9c0SAndroid Build Coastguard Worker     DataLocatorFormat mDataSource;
154*bebae9c0SAndroid Build Coastguard Worker     DataLocatorFormat mDataSink;
155*bebae9c0SAndroid Build Coastguard Worker     // cached data for this instance
156*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mNumChannels;   // initially UNKNOWN_NUMCHANNELS, then const once it is known,
157*bebae9c0SAndroid Build Coastguard Worker                             // range 1 <= x <= FCC_8
158*bebae9c0SAndroid Build Coastguard Worker     SLuint32 mSampleRateMilliHz;// initially UNKNOWN_SAMPLERATE, then const once it is known
159*bebae9c0SAndroid Build Coastguard Worker     // implementation-specific data for this instance
160*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
161*bebae9c0SAndroid Build Coastguard Worker     // FIXME consolidate the next several variables into ARecorder class to avoid placement new
162*bebae9c0SAndroid Build Coastguard Worker     enum AndroidObjectType mAndroidObjType;
163*bebae9c0SAndroid Build Coastguard Worker     android::sp<android::AudioRecord> mAudioRecord;
164*bebae9c0SAndroid Build Coastguard Worker     android::sp<android::CallbackProtector> mCallbackProtector;
165*bebae9c0SAndroid Build Coastguard Worker     android::sp<android::AudioRecordCallback> mCallbackHandle;
166*bebae9c0SAndroid Build Coastguard Worker     audio_source_t mRecordSource;
167*bebae9c0SAndroid Build Coastguard Worker     SLuint32 mPerformanceMode;
168*bebae9c0SAndroid Build Coastguard Worker #endif
169*bebae9c0SAndroid Build Coastguard Worker } /*CAudioRecorder*/;
170*bebae9c0SAndroid Build Coastguard Worker 
171*bebae9c0SAndroid Build Coastguard Worker 
172*bebae9c0SAndroid Build Coastguard Worker /*typedef*/ struct CEngine_struct {
173*bebae9c0SAndroid Build Coastguard Worker     // mandated implicit interfaces
174*bebae9c0SAndroid Build Coastguard Worker     IObject mObject;
175*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
176*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_Engine 13 // see MPH_to_Engine in MPH_to.c for list of interfaces
177*bebae9c0SAndroid Build Coastguard Worker #else
178*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_Engine 12 // see MPH_to_Engine in MPH_to.c for list of interfaces
179*bebae9c0SAndroid Build Coastguard Worker #endif
180*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mInterfaceStates2[INTERFACES_Engine - INTERFACES_Default];
181*bebae9c0SAndroid Build Coastguard Worker     IDynamicInterfaceManagement mDynamicInterfaceManagement;
182*bebae9c0SAndroid Build Coastguard Worker     IEngine mEngine;
183*bebae9c0SAndroid Build Coastguard Worker     IEngineCapabilities mEngineCapabilities;
184*bebae9c0SAndroid Build Coastguard Worker     IThreadSync mThreadSync;
185*bebae9c0SAndroid Build Coastguard Worker     // mandated explicit interfaces
186*bebae9c0SAndroid Build Coastguard Worker     IAudioIODeviceCapabilities mAudioIODeviceCapabilities;
187*bebae9c0SAndroid Build Coastguard Worker     IAudioDecoderCapabilities mAudioDecoderCapabilities;
188*bebae9c0SAndroid Build Coastguard Worker     IAudioEncoderCapabilities mAudioEncoderCapabilities;
189*bebae9c0SAndroid Build Coastguard Worker     I3DCommit m3DCommit;
190*bebae9c0SAndroid Build Coastguard Worker     // optional interfaces
191*bebae9c0SAndroid Build Coastguard Worker     IDeviceVolume mDeviceVolume;
192*bebae9c0SAndroid Build Coastguard Worker     // OpenMAX AL mandated implicit interfaces
193*bebae9c0SAndroid Build Coastguard Worker     IXAEngine mXAEngine;
194*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
195*bebae9c0SAndroid Build Coastguard Worker     IAndroidEffectCapabilities mAndroidEffectCapabilities;
196*bebae9c0SAndroid Build Coastguard Worker #endif
197*bebae9c0SAndroid Build Coastguard Worker     // OpenMAX AL explicit interfaces
198*bebae9c0SAndroid Build Coastguard Worker     IVideoDecoderCapabilities mVideoDecoderCapabilities;
199*bebae9c0SAndroid Build Coastguard Worker     // remaining are per-instance private fields not associated with an interface
200*bebae9c0SAndroid Build Coastguard Worker     ThreadPool mThreadPool; // for asynchronous operations
201*bebae9c0SAndroid Build Coastguard Worker     pthread_t mSyncThread;
202*bebae9c0SAndroid Build Coastguard Worker #if defined(ANDROID)
203*bebae9c0SAndroid Build Coastguard Worker     // FIXME number of presets will only be saved in IEqualizer, preset names will not be stored
204*bebae9c0SAndroid Build Coastguard Worker     SLuint32 mEqNumPresets;
205*bebae9c0SAndroid Build Coastguard Worker     char** mEqPresetNames;
206*bebae9c0SAndroid Build Coastguard Worker     android::sp<android::IAudioManager> mAudioManager;
207*bebae9c0SAndroid Build Coastguard Worker #endif
208*bebae9c0SAndroid Build Coastguard Worker } /*CEngine*/;
209*bebae9c0SAndroid Build Coastguard Worker 
210*bebae9c0SAndroid Build Coastguard Worker typedef struct {
211*bebae9c0SAndroid Build Coastguard Worker     // mandated interfaces
212*bebae9c0SAndroid Build Coastguard Worker     IObject mObject;
213*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_LEDDevice 3 // see MPH_to_LEDDevice in MPH_to.c for list of interfaces
214*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mInterfaceStates2[INTERFACES_LEDDevice - INTERFACES_Default];
215*bebae9c0SAndroid Build Coastguard Worker     IDynamicInterfaceManagement mDynamicInterfaceManagement;
216*bebae9c0SAndroid Build Coastguard Worker     ILEDArray mLEDArray;
217*bebae9c0SAndroid Build Coastguard Worker     // remaining are per-instance private fields not associated with an interface
218*bebae9c0SAndroid Build Coastguard Worker     SLuint32 mDeviceID;
219*bebae9c0SAndroid Build Coastguard Worker } CLEDDevice;
220*bebae9c0SAndroid Build Coastguard Worker 
221*bebae9c0SAndroid Build Coastguard Worker typedef struct {
222*bebae9c0SAndroid Build Coastguard Worker     // mandated interfaces
223*bebae9c0SAndroid Build Coastguard Worker     IObject mObject;
224*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_Listener 4 // see MPH_to_Listener in MPH_to.c for list of interfaces
225*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mInterfaceStates2[INTERFACES_Listener - INTERFACES_Default];
226*bebae9c0SAndroid Build Coastguard Worker     IDynamicInterfaceManagement mDynamicInterfaceManagement;
227*bebae9c0SAndroid Build Coastguard Worker     I3DDoppler m3DDoppler;
228*bebae9c0SAndroid Build Coastguard Worker     I3DLocation m3DLocation;
229*bebae9c0SAndroid Build Coastguard Worker     // remaining are per-instance private fields not associated with an interface
230*bebae9c0SAndroid Build Coastguard Worker } CListener;
231*bebae9c0SAndroid Build Coastguard Worker 
232*bebae9c0SAndroid Build Coastguard Worker typedef struct {
233*bebae9c0SAndroid Build Coastguard Worker     // mandated interfaces
234*bebae9c0SAndroid Build Coastguard Worker     IObject mObject;
235*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_MetadataExtractor 5 // see MPH_to_MetadataExtractor in MPH_to.c for list of
236*bebae9c0SAndroid Build Coastguard Worker                                        // interfaces
237*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mInterfaceStates2[INTERFACES_MetadataExtractor - INTERFACES_Default];
238*bebae9c0SAndroid Build Coastguard Worker     IDynamicInterfaceManagement mDynamicInterfaceManagement;
239*bebae9c0SAndroid Build Coastguard Worker     IDynamicSource mDynamicSource;
240*bebae9c0SAndroid Build Coastguard Worker     IMetadataExtraction mMetadataExtraction;
241*bebae9c0SAndroid Build Coastguard Worker     IMetadataTraversal mMetadataTraversal;
242*bebae9c0SAndroid Build Coastguard Worker     // remaining are per-instance private fields not associated with an interface
243*bebae9c0SAndroid Build Coastguard Worker } CMetadataExtractor;
244*bebae9c0SAndroid Build Coastguard Worker 
245*bebae9c0SAndroid Build Coastguard Worker typedef struct {
246*bebae9c0SAndroid Build Coastguard Worker     // mandated interfaces
247*bebae9c0SAndroid Build Coastguard Worker     IObject mObject;
248*bebae9c0SAndroid Build Coastguard Worker 
249*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_MidiPlayer 29 // see MPH_to_MidiPlayer in MPH_to.c for list of interfaces
250*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mInterfaceStates2[INTERFACES_MidiPlayer - INTERFACES_Default];
251*bebae9c0SAndroid Build Coastguard Worker     IDynamicInterfaceManagement mDynamicInterfaceManagement;
252*bebae9c0SAndroid Build Coastguard Worker     IPlay mPlay;
253*bebae9c0SAndroid Build Coastguard Worker     I3DDoppler m3DDoppler;
254*bebae9c0SAndroid Build Coastguard Worker     I3DGrouping m3DGrouping;
255*bebae9c0SAndroid Build Coastguard Worker     I3DLocation m3DLocation;
256*bebae9c0SAndroid Build Coastguard Worker     I3DSource m3DSource;
257*bebae9c0SAndroid Build Coastguard Worker     IBufferQueue mBufferQueue;
258*bebae9c0SAndroid Build Coastguard Worker     IEffectSend mEffectSend;
259*bebae9c0SAndroid Build Coastguard Worker     IMetadataExtraction mMetadataExtraction;
260*bebae9c0SAndroid Build Coastguard Worker     IMetadataTraversal mMetadataTraversal;
261*bebae9c0SAndroid Build Coastguard Worker     IMIDIMessage mMIDIMessage;
262*bebae9c0SAndroid Build Coastguard Worker     IMIDITime mMIDITime;
263*bebae9c0SAndroid Build Coastguard Worker     IMIDITempo mMIDITempo;
264*bebae9c0SAndroid Build Coastguard Worker     IMIDIMuteSolo mMIDIMuteSolo;
265*bebae9c0SAndroid Build Coastguard Worker     IPrefetchStatus mPrefetchStatus;
266*bebae9c0SAndroid Build Coastguard Worker     ISeek mSeek;
267*bebae9c0SAndroid Build Coastguard Worker     IVolume mVolume;
268*bebae9c0SAndroid Build Coastguard Worker     IMuteSolo mMuteSolo;
269*bebae9c0SAndroid Build Coastguard Worker     // optional interfaces
270*bebae9c0SAndroid Build Coastguard Worker     I3DMacroscopic m3DMacroscopic;
271*bebae9c0SAndroid Build Coastguard Worker     IBassBoost mBassBoost;
272*bebae9c0SAndroid Build Coastguard Worker     IDynamicSource mDynamicSource;
273*bebae9c0SAndroid Build Coastguard Worker     IEnvironmentalReverb mEnvironmentalReverb;
274*bebae9c0SAndroid Build Coastguard Worker     IEqualizer mEqualizer;
275*bebae9c0SAndroid Build Coastguard Worker     IPitch mPitch;
276*bebae9c0SAndroid Build Coastguard Worker     IPresetReverb mPresetReverb;
277*bebae9c0SAndroid Build Coastguard Worker     IPlaybackRate mPlaybackRate;
278*bebae9c0SAndroid Build Coastguard Worker     IVirtualizer mVirtualizer;
279*bebae9c0SAndroid Build Coastguard Worker     IVisualization mVisualization;
280*bebae9c0SAndroid Build Coastguard Worker     // remaining are per-instance private fields not associated with an interface
281*bebae9c0SAndroid Build Coastguard Worker } CMidiPlayer;
282*bebae9c0SAndroid Build Coastguard Worker 
283*bebae9c0SAndroid Build Coastguard Worker /*typedef*/ struct COutputMix_struct {
284*bebae9c0SAndroid Build Coastguard Worker     // mandated interfaces
285*bebae9c0SAndroid Build Coastguard Worker     IObject mObject;
286*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
287*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_OutputMix 12 // see MPH_to_OutputMix in MPH_to.c for list of interfaces
288*bebae9c0SAndroid Build Coastguard Worker #else
289*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_OutputMix 11 // see MPH_to_OutputMix in MPH_to.c for list of interfaces
290*bebae9c0SAndroid Build Coastguard Worker #endif
291*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mInterfaceStates2[INTERFACES_OutputMix - INTERFACES_Default];
292*bebae9c0SAndroid Build Coastguard Worker     IDynamicInterfaceManagement mDynamicInterfaceManagement;
293*bebae9c0SAndroid Build Coastguard Worker     IOutputMix mOutputMix;
294*bebae9c0SAndroid Build Coastguard Worker #ifdef USE_OUTPUTMIXEXT
295*bebae9c0SAndroid Build Coastguard Worker     IOutputMixExt mOutputMixExt;
296*bebae9c0SAndroid Build Coastguard Worker #endif
297*bebae9c0SAndroid Build Coastguard Worker     IEnvironmentalReverb mEnvironmentalReverb;
298*bebae9c0SAndroid Build Coastguard Worker     IEqualizer mEqualizer;
299*bebae9c0SAndroid Build Coastguard Worker     IPresetReverb mPresetReverb;
300*bebae9c0SAndroid Build Coastguard Worker     IVirtualizer mVirtualizer;
301*bebae9c0SAndroid Build Coastguard Worker     IVolume mVolume;
302*bebae9c0SAndroid Build Coastguard Worker     // optional interfaces
303*bebae9c0SAndroid Build Coastguard Worker     IBassBoost mBassBoost;
304*bebae9c0SAndroid Build Coastguard Worker     IVisualization mVisualization;
305*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
306*bebae9c0SAndroid Build Coastguard Worker     IAndroidEffect mAndroidEffect;
307*bebae9c0SAndroid Build Coastguard Worker #endif
308*bebae9c0SAndroid Build Coastguard Worker     // remaining are per-instance private fields not associated with an interface
309*bebae9c0SAndroid Build Coastguard Worker } /*COutputMix*/;
310*bebae9c0SAndroid Build Coastguard Worker 
311*bebae9c0SAndroid Build Coastguard Worker typedef struct {
312*bebae9c0SAndroid Build Coastguard Worker     // mandated interfaces
313*bebae9c0SAndroid Build Coastguard Worker     IObject mObject;
314*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_VibraDevice 3 // see MPH_to_VibraDevice in MPH_to.c for list of interfaces
315*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mInterfaceStates2[INTERFACES_VibraDevice - INTERFACES_Default];
316*bebae9c0SAndroid Build Coastguard Worker     IDynamicInterfaceManagement mDynamicInterfaceManagement;
317*bebae9c0SAndroid Build Coastguard Worker     IVibra mVibra;
318*bebae9c0SAndroid Build Coastguard Worker     // remaining are per-instance private fields not associated with an interface
319*bebae9c0SAndroid Build Coastguard Worker     SLuint32 mDeviceID;
320*bebae9c0SAndroid Build Coastguard Worker } CVibraDevice;
321*bebae9c0SAndroid Build Coastguard Worker 
322*bebae9c0SAndroid Build Coastguard Worker 
323*bebae9c0SAndroid Build Coastguard Worker typedef struct CMediaPlayer_struct {
324*bebae9c0SAndroid Build Coastguard Worker     IObject mObject;
325*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
326*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_MediaPlayer 8
327*bebae9c0SAndroid Build Coastguard Worker #else
328*bebae9c0SAndroid Build Coastguard Worker #define INTERFACES_MediaPlayer 7
329*bebae9c0SAndroid Build Coastguard Worker #endif
330*bebae9c0SAndroid Build Coastguard Worker     XAuint8 mInterfaceStates2[INTERFACES_MediaPlayer - INTERFACES_Default];
331*bebae9c0SAndroid Build Coastguard Worker     IDynamicInterfaceManagement mDynamicInterfaceManagement;
332*bebae9c0SAndroid Build Coastguard Worker     IDynamicSource mDynamicSource;
333*bebae9c0SAndroid Build Coastguard Worker     IPlay mPlay;
334*bebae9c0SAndroid Build Coastguard Worker     IStreamInformation mStreamInfo;
335*bebae9c0SAndroid Build Coastguard Worker     IVolume mVolume;
336*bebae9c0SAndroid Build Coastguard Worker     ISeek mSeek;
337*bebae9c0SAndroid Build Coastguard Worker     IPrefetchStatus mPrefetchStatus;
338*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
339*bebae9c0SAndroid Build Coastguard Worker     IAndroidBufferQueue mAndroidBufferQueue;
340*bebae9c0SAndroid Build Coastguard Worker #endif
341*bebae9c0SAndroid Build Coastguard Worker     // fields below are per-instance private fields not associated with an interface
342*bebae9c0SAndroid Build Coastguard Worker     DataLocatorFormat mDataSource;
343*bebae9c0SAndroid Build Coastguard Worker     DataLocatorFormat mBankSource;
344*bebae9c0SAndroid Build Coastguard Worker     DataLocatorFormat mAudioSink;
345*bebae9c0SAndroid Build Coastguard Worker     DataLocatorFormat mImageVideoSink;
346*bebae9c0SAndroid Build Coastguard Worker     DataLocatorFormat mVibraSink;
347*bebae9c0SAndroid Build Coastguard Worker     DataLocatorFormat mLEDArraySink;
348*bebae9c0SAndroid Build Coastguard Worker     SLuint8 mNumChannels;   // initially UNKNOWN_NUMCHANNELS, then const once it is known,
349*bebae9c0SAndroid Build Coastguard Worker                             // range 1 <= x <= 8 FIXME FCC_8
350*bebae9c0SAndroid Build Coastguard Worker #ifdef ANDROID
351*bebae9c0SAndroid Build Coastguard Worker     android::sp<android::GenericPlayer> mAVPlayer;
352*bebae9c0SAndroid Build Coastguard Worker     android::sp<android::CallbackProtector> mCallbackProtector;
353*bebae9c0SAndroid Build Coastguard Worker     enum AndroidObjectType mAndroidObjType;
354*bebae9c0SAndroid Build Coastguard Worker     /** identifies the initialization and preparation state */
355*bebae9c0SAndroid Build Coastguard Worker     enum AndroidObjectState mAndroidObjState;
356*bebae9c0SAndroid Build Coastguard Worker     /** identifies which group of effects ("session") this player belongs to */
357*bebae9c0SAndroid Build Coastguard Worker     audio_session_t mSessionId;
358*bebae9c0SAndroid Build Coastguard Worker     /** identifies the Android stream type playback will occur on */
359*bebae9c0SAndroid Build Coastguard Worker     audio_stream_type_t mStreamType;
360*bebae9c0SAndroid Build Coastguard Worker #endif
361*bebae9c0SAndroid Build Coastguard Worker } CMediaPlayer;
362