xref: /aosp_15_r20/frameworks/wilhelm/src/android/android_defs.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 
18*bebae9c0SAndroid Build Coastguard Worker /**
19*bebae9c0SAndroid Build Coastguard Worker  * Used to define the mapping from an OpenSL ES or OpenMAX AL object to an Android
20*bebae9c0SAndroid Build Coastguard Worker  * media framework object
21*bebae9c0SAndroid Build Coastguard Worker  */
22*bebae9c0SAndroid Build Coastguard Worker enum AndroidObjectType {
23*bebae9c0SAndroid Build Coastguard Worker     INVALID_TYPE                                =-1,
24*bebae9c0SAndroid Build Coastguard Worker     // audio player, playing from a URI or FD data source
25*bebae9c0SAndroid Build Coastguard Worker     AUDIOPLAYER_FROM_URIFD                      = 0,
26*bebae9c0SAndroid Build Coastguard Worker     // audio player, playing PCM buffers in a buffer queue data source
27*bebae9c0SAndroid Build Coastguard Worker     AUDIOPLAYER_FROM_PCM_BUFFERQUEUE            = 1,
28*bebae9c0SAndroid Build Coastguard Worker     // audio player, playing transport stream packets in an Android buffer queue data source
29*bebae9c0SAndroid Build Coastguard Worker     AUDIOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE      = 2,
30*bebae9c0SAndroid Build Coastguard Worker     // audio player, decoding from a URI or FD data source to a buffer queue data sink in PCM format
31*bebae9c0SAndroid Build Coastguard Worker     AUDIOPLAYER_FROM_URIFD_TO_PCM_BUFFERQUEUE   = 3,
32*bebae9c0SAndroid Build Coastguard Worker     // audio video player, playing transport stream packets in an Android buffer queue data source
33*bebae9c0SAndroid Build Coastguard Worker     AUDIOVIDEOPLAYER_FROM_TS_ANDROIDBUFFERQUEUE = 4,
34*bebae9c0SAndroid Build Coastguard Worker     // audio video player, playing from a URI or FD data source
35*bebae9c0SAndroid Build Coastguard Worker     AUDIOVIDEOPLAYER_FROM_URIFD                 = 5,
36*bebae9c0SAndroid Build Coastguard Worker     // audio recorder, recording from an input device data source, streamed into a
37*bebae9c0SAndroid Build Coastguard Worker     //   PCM buffer queue data sink
38*bebae9c0SAndroid Build Coastguard Worker     AUDIORECORDER_FROM_MIC_TO_PCM_BUFFERQUEUE   = 6,
39*bebae9c0SAndroid Build Coastguard Worker     // audio player, decoding from an Android buffer queue with ADTS data,
40*bebae9c0SAndroid Build Coastguard Worker     //   to a buffer queue data sink in PCM format
41*bebae9c0SAndroid Build Coastguard Worker     AUDIOPLAYER_FROM_ADTS_ABQ_TO_PCM_BUFFERQUEUE = 7,
42*bebae9c0SAndroid Build Coastguard Worker     NUM_AUDIOPLAYER_MAP_TYPES
43*bebae9c0SAndroid Build Coastguard Worker };
44*bebae9c0SAndroid Build Coastguard Worker 
45*bebae9c0SAndroid Build Coastguard Worker 
46*bebae9c0SAndroid Build Coastguard Worker /**
47*bebae9c0SAndroid Build Coastguard Worker  * Used to define the states of the OpenSL ES / OpenMAX AL object initialization and preparation
48*bebae9c0SAndroid Build Coastguard Worker  * with regards to the Android-side of the data, in particular as affected by the play state.
49*bebae9c0SAndroid Build Coastguard Worker  */
50*bebae9c0SAndroid Build Coastguard Worker enum AndroidObjectState {
51*bebae9c0SAndroid Build Coastguard Worker     ANDROID_UNINITIALIZED = -1, // never called SetPlayState(PAUSED or PLAYING)
52*bebae9c0SAndroid Build Coastguard Worker     ANDROID_PREPARING,          // currently preparing due to first SetPlayState(PAUSED or PLAYING)
53*bebae9c0SAndroid Build Coastguard Worker     ANDROID_READY,              // preparation has completed, and will not be attempted again
54*bebae9c0SAndroid Build Coastguard Worker     // NUM_ANDROID_STATES       // unused
55*bebae9c0SAndroid Build Coastguard Worker };
56*bebae9c0SAndroid Build Coastguard Worker 
57*bebae9c0SAndroid Build Coastguard Worker /**
58*bebae9c0SAndroid Build Coastguard Worker  * Must be one of the supported stream types that can be set through SLAndroidConfigurationItf
59*bebae9c0SAndroid Build Coastguard Worker  */
60*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_DEFAULT_OUTPUT_STREAM_TYPE AUDIO_STREAM_MUSIC
61*bebae9c0SAndroid Build Coastguard Worker 
62*bebae9c0SAndroid Build Coastguard Worker #define PLAYER_FAILURE ((int32_t) android::UNKNOWN_ERROR)
63*bebae9c0SAndroid Build Coastguard Worker #define PLAYER_SUCCESS ((int32_t) android::NO_ERROR)
64*bebae9c0SAndroid Build Coastguard Worker 
65*bebae9c0SAndroid Build Coastguard Worker #define PLAYER_FD_FIND_FILE_SIZE ((int64_t)0xFFFFFFFFFFFFFFFFll)
66*bebae9c0SAndroid Build Coastguard Worker 
67*bebae9c0SAndroid Build Coastguard Worker #define MPEG2_TS_PACKET_SIZE 188
68*bebae9c0SAndroid Build Coastguard Worker #define MPEG2_TS_PACKET_SYNC 0x47
69*bebae9c0SAndroid Build Coastguard Worker 
70*bebae9c0SAndroid Build Coastguard Worker struct AudioPlayback_Parameters {
71*bebae9c0SAndroid Build Coastguard Worker     audio_stream_type_t streamType;
72*bebae9c0SAndroid Build Coastguard Worker     audio_session_t sessionId;
73*bebae9c0SAndroid Build Coastguard Worker };
74*bebae9c0SAndroid Build Coastguard Worker 
75*bebae9c0SAndroid Build Coastguard Worker /**
76*bebae9c0SAndroid Build Coastguard Worker  * Structure to maintain the set of audio levels about a player
77*bebae9c0SAndroid Build Coastguard Worker  */
78*bebae9c0SAndroid Build Coastguard Worker struct AndroidAudioLevels {
79*bebae9c0SAndroid Build Coastguard Worker     /**
80*bebae9c0SAndroid Build Coastguard Worker      * Send level to aux effect, there's a single aux bus, so there's a single level
81*bebae9c0SAndroid Build Coastguard Worker      */
82*bebae9c0SAndroid Build Coastguard Worker     // FIXME not used yet, will be used when supporting effects in OpenMAX AL
83*bebae9c0SAndroid Build Coastguard Worker     //SLmillibel mAuxSendLevel;
84*bebae9c0SAndroid Build Coastguard Worker     /**
85*bebae9c0SAndroid Build Coastguard Worker      * Attenuation factor derived from direct level
86*bebae9c0SAndroid Build Coastguard Worker      */
87*bebae9c0SAndroid Build Coastguard Worker     // FIXME not used yet, will be used when supporting effects in OpenMAX AL
88*bebae9c0SAndroid Build Coastguard Worker     //float mAmplFromDirectLevel;
89*bebae9c0SAndroid Build Coastguard Worker     /**
90*bebae9c0SAndroid Build Coastguard Worker      * Android Left/Right volume
91*bebae9c0SAndroid Build Coastguard Worker      * The final volume of an Android AudioTrack or MediaPlayer is a stereo amplification
92*bebae9c0SAndroid Build Coastguard Worker      * (or attenuation) represented as a float from 0.0f to 1.0f
93*bebae9c0SAndroid Build Coastguard Worker      */
94*bebae9c0SAndroid Build Coastguard Worker     float mFinalVolume[STEREO_CHANNELS];
95*bebae9c0SAndroid Build Coastguard Worker };
96*bebae9c0SAndroid Build Coastguard Worker 
97*bebae9c0SAndroid Build Coastguard Worker 
98*bebae9c0SAndroid Build Coastguard Worker /**
99*bebae9c0SAndroid Build Coastguard Worker  * Event notification callback from Android to SL ES framework
100*bebae9c0SAndroid Build Coastguard Worker  */
101*bebae9c0SAndroid Build Coastguard Worker typedef void (*notif_cbf_t)(int event, int data1, int data2, void* notifUser);
102*bebae9c0SAndroid Build Coastguard Worker 
103*bebae9c0SAndroid Build Coastguard Worker /**
104*bebae9c0SAndroid Build Coastguard Worker  * Audio data push callback from Android objects to SL ES framework
105*bebae9c0SAndroid Build Coastguard Worker  */
106*bebae9c0SAndroid Build Coastguard Worker typedef size_t (*data_push_cbf_t)(const uint8_t *data, size_t size, CAudioPlayer* ap);
107*bebae9c0SAndroid Build Coastguard Worker 
108*bebae9c0SAndroid Build Coastguard Worker 
109*bebae9c0SAndroid Build Coastguard Worker /**
110*bebae9c0SAndroid Build Coastguard Worker  * Events sent to mNotifyClient during prepare, prefetch, and playback
111*bebae9c0SAndroid Build Coastguard Worker  * used in APlayer::notify() and AMessage::findxxx()
112*bebae9c0SAndroid Build Coastguard Worker  */
113*bebae9c0SAndroid Build Coastguard Worker #define PLAYEREVENT_PREPARED                "prep"
114*bebae9c0SAndroid Build Coastguard Worker #define PLAYEREVENT_PREFETCHSTATUSCHANGE    "prsc"
115*bebae9c0SAndroid Build Coastguard Worker #define PLAYEREVENT_PREFETCHFILLLEVELUPDATE "pflu"
116*bebae9c0SAndroid Build Coastguard Worker #define PLAYEREVENT_ENDOFSTREAM             "eos"
117*bebae9c0SAndroid Build Coastguard Worker #define PLAYEREVENT_VIDEO_SIZE_UPDATE       "vsiz"
118*bebae9c0SAndroid Build Coastguard Worker #define PLAYEREVENT_CHANNEL_COUNT           "ccnt"  // channel count is now known
119*bebae9c0SAndroid Build Coastguard Worker #define PLAYEREVENT_PLAY                    "play"  // SL_PLAYEVENT_*
120*bebae9c0SAndroid Build Coastguard Worker #define PLAYEREVENT_ERRORAFTERPREPARE       "easp"  // error after successful prepare
121*bebae9c0SAndroid Build Coastguard Worker 
122*bebae9c0SAndroid Build Coastguard Worker 
123*bebae9c0SAndroid Build Coastguard Worker /**
124*bebae9c0SAndroid Build Coastguard Worker  * Time value when time is unknown. Used for instance for duration or playback position
125*bebae9c0SAndroid Build Coastguard Worker  */
126*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_UNKNOWN_TIME (-1)
127*bebae9c0SAndroid Build Coastguard Worker 
128*bebae9c0SAndroid Build Coastguard Worker /**
129*bebae9c0SAndroid Build Coastguard Worker  * Event mask for MPEG-2 TS events associated with TS data
130*bebae9c0SAndroid Build Coastguard Worker  */
131*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_MP2TSEVENT_NONE          ((SLuint32) 0x0)
132*bebae9c0SAndroid Build Coastguard Worker // buffer is at End Of Stream
133*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_MP2TSEVENT_EOS           ((SLuint32) 0x1)
134*bebae9c0SAndroid Build Coastguard Worker // buffer marks a discontinuity with previous TS data, resume display as soon as possible
135*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_MP2TSEVENT_DISCONTINUITY ((SLuint32) 0x1 << 1)
136*bebae9c0SAndroid Build Coastguard Worker // buffer marks a discontinuity with previous TS data, resume display upon reaching the
137*bebae9c0SAndroid Build Coastguard Worker // associated presentation time stamp
138*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_MP2TSEVENT_DISCON_NEWPTS ((SLuint32) 0x1 << 2)
139*bebae9c0SAndroid Build Coastguard Worker // buffer marks a format change with previous TS data, resume display as soon as possible
140*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_MP2TSEVENT_FORMAT_CHANGE_FULL  ((SLuint32) 0x1 << 3)
141*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_MP2TSEVENT_FORMAT_CHANGE_VIDEO ((SLuint32) 0x1 << 4)
142*bebae9c0SAndroid Build Coastguard Worker 
143*bebae9c0SAndroid Build Coastguard Worker /**
144*bebae9c0SAndroid Build Coastguard Worker  * Event mask for AAC ADTS events associated with ADTS data
145*bebae9c0SAndroid Build Coastguard Worker  */
146*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_ADTSEVENT_NONE           ANDROID_MP2TSEVENT_NONE
147*bebae9c0SAndroid Build Coastguard Worker // buffer is at End Of Stream
148*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_ADTSEVENT_EOS            ANDROID_MP2TSEVENT_EOS
149*bebae9c0SAndroid Build Coastguard Worker 
150*bebae9c0SAndroid Build Coastguard Worker /**
151*bebae9c0SAndroid Build Coastguard Worker  * Types of buffers stored in Android Buffer Queues, see IAndroidBufferQueue.mBufferType
152*bebae9c0SAndroid Build Coastguard Worker  */
153*bebae9c0SAndroid Build Coastguard Worker enum AndroidBufferType_type {
154*bebae9c0SAndroid Build Coastguard Worker     kAndroidBufferTypeInvalid = ((SLuint16) 0x0),
155*bebae9c0SAndroid Build Coastguard Worker     kAndroidBufferTypeMpeg2Ts = ((SLuint16) 0x1),
156*bebae9c0SAndroid Build Coastguard Worker     kAndroidBufferTypeAacadts = ((SLuint16) 0x2),
157*bebae9c0SAndroid Build Coastguard Worker };
158*bebae9c0SAndroid Build Coastguard Worker 
159*bebae9c0SAndroid Build Coastguard Worker /**
160*bebae9c0SAndroid Build Coastguard Worker  * MIME types required for data in Android Buffer Queues
161*bebae9c0SAndroid Build Coastguard Worker  */
162*bebae9c0SAndroid Build Coastguard Worker // The preferred MIME types for new applications are in ../../include/*/OpenMAXAL_Android.h
163*bebae9c0SAndroid Build Coastguard Worker // The legacy MIME type used elsewhere in the Android framework for AAC ADTS is below:
164*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_MIME_AACADTS_ANDROID_FRAMEWORK "audio/aac-adts"
165*bebae9c0SAndroid Build Coastguard Worker 
166*bebae9c0SAndroid Build Coastguard Worker /**
167*bebae9c0SAndroid Build Coastguard Worker  * Notification thresholds relative to content duration in the cache
168*bebae9c0SAndroid Build Coastguard Worker  */
169*bebae9c0SAndroid Build Coastguard Worker #define DURATION_CACHED_HIGH_MS  30000 // 30s
170*bebae9c0SAndroid Build Coastguard Worker #define DURATION_CACHED_MED_MS   10000 // 10s
171*bebae9c0SAndroid Build Coastguard Worker #define DURATION_CACHED_LOW_MS    2000 //  2s
172*bebae9c0SAndroid Build Coastguard Worker 
173*bebae9c0SAndroid Build Coastguard Worker 
174*bebae9c0SAndroid Build Coastguard Worker namespace android {
175*bebae9c0SAndroid Build Coastguard Worker 
176*bebae9c0SAndroid Build Coastguard Worker /**
177*bebae9c0SAndroid Build Coastguard Worker  * Prefetch cache status
178*bebae9c0SAndroid Build Coastguard Worker  */
179*bebae9c0SAndroid Build Coastguard Worker enum CacheStatus_t {
180*bebae9c0SAndroid Build Coastguard Worker         kStatusUnknown = -1,
181*bebae9c0SAndroid Build Coastguard Worker         kStatusEmpty   = 0,
182*bebae9c0SAndroid Build Coastguard Worker         kStatusLow,
183*bebae9c0SAndroid Build Coastguard Worker         kStatusIntermediate,
184*bebae9c0SAndroid Build Coastguard Worker         kStatusEnough,
185*bebae9c0SAndroid Build Coastguard Worker         kStatusHigh
186*bebae9c0SAndroid Build Coastguard Worker };
187*bebae9c0SAndroid Build Coastguard Worker 
188*bebae9c0SAndroid Build Coastguard Worker enum {
189*bebae9c0SAndroid Build Coastguard Worker     kDataLocatorNone = 0,
190*bebae9c0SAndroid Build Coastguard Worker     kDataLocatorUri  = 1,
191*bebae9c0SAndroid Build Coastguard Worker     kDataLocatorFd   = 2,
192*bebae9c0SAndroid Build Coastguard Worker };
193*bebae9c0SAndroid Build Coastguard Worker 
194*bebae9c0SAndroid Build Coastguard Worker struct FdInfo {
195*bebae9c0SAndroid Build Coastguard Worker     int fd;
196*bebae9c0SAndroid Build Coastguard Worker     int64_t offset;
197*bebae9c0SAndroid Build Coastguard Worker     int64_t length;
198*bebae9c0SAndroid Build Coastguard Worker     bool mCloseAfterUse;    // whether to close fd after last reference to fd
199*bebae9c0SAndroid Build Coastguard Worker };
200*bebae9c0SAndroid Build Coastguard Worker 
201*bebae9c0SAndroid Build Coastguard Worker // TODO currently used by SfPlayer, to replace by DataLocator2
202*bebae9c0SAndroid Build Coastguard Worker union DataLocator {
203*bebae9c0SAndroid Build Coastguard Worker     char* uri;
204*bebae9c0SAndroid Build Coastguard Worker     FdInfo fdi;
205*bebae9c0SAndroid Build Coastguard Worker };
206*bebae9c0SAndroid Build Coastguard Worker 
207*bebae9c0SAndroid Build Coastguard Worker union DataLocator2 {
208*bebae9c0SAndroid Build Coastguard Worker     const char* uriRef;
209*bebae9c0SAndroid Build Coastguard Worker     FdInfo fdi;
210*bebae9c0SAndroid Build Coastguard Worker };
211*bebae9c0SAndroid Build Coastguard Worker 
212*bebae9c0SAndroid Build Coastguard Worker 
213*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_PERFORMANCE_MODE_NONE            ((SLuint32) 0x1 << 0)
214*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_PERFORMANCE_MODE_LATENCY         ((SLuint32) 0x1 << 1)
215*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_PERFORMANCE_MODE_LATENCY_EFFECTS ((SLuint32) 0x1 << 2)
216*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_PERFORMANCE_MODE_POWER_SAVING    ((SLuint32) 0x1 << 3)
217*bebae9c0SAndroid Build Coastguard Worker 
218*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_PERFORMANCE_MODE_DEFAULT ANDROID_PERFORMANCE_MODE_LATENCY
219*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_PERFORMANCE_MODE_ALL (ANDROID_PERFORMANCE_MODE_LATENCY | \
220*bebae9c0SAndroid Build Coastguard Worker                                       ANDROID_PERFORMANCE_MODE_LATENCY_EFFECTS | \
221*bebae9c0SAndroid Build Coastguard Worker                                       ANDROID_PERFORMANCE_MODE_NONE | \
222*bebae9c0SAndroid Build Coastguard Worker                                       ANDROID_PERFORMANCE_MODE_POWER_SAVING)
223*bebae9c0SAndroid Build Coastguard Worker 
224*bebae9c0SAndroid Build Coastguard Worker // This is used for exact matching by MediaMetrics. So do not change it.
225*bebae9c0SAndroid Build Coastguard Worker #define ANDROID_OPENSLES_CALLER_NAME       "opensles"
226*bebae9c0SAndroid Build Coastguard Worker 
227*bebae9c0SAndroid Build Coastguard Worker } // namespace android
228