xref: /aosp_15_r20/frameworks/wilhelm/include/OMXAL/OpenMAXAL_Android.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 #ifndef OPENMAX_AL_ANDROID_H_
18*bebae9c0SAndroid Build Coastguard Worker #define OPENMAX_AL_ANDROID_H_
19*bebae9c0SAndroid Build Coastguard Worker 
20*bebae9c0SAndroid Build Coastguard Worker #include "OpenMAXAL.h"
21*bebae9c0SAndroid Build Coastguard Worker 
22*bebae9c0SAndroid Build Coastguard Worker #ifdef __cplusplus
23*bebae9c0SAndroid Build Coastguard Worker extern "C" {
24*bebae9c0SAndroid Build Coastguard Worker #endif
25*bebae9c0SAndroid Build Coastguard Worker 
26*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/
27*bebae9c0SAndroid Build Coastguard Worker /* Android common types                                                      */
28*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/
29*bebae9c0SAndroid Build Coastguard Worker 
30*bebae9c0SAndroid Build Coastguard Worker typedef xa_int64_t             XAAint64;          /* 64 bit signed integer   */
31*bebae9c0SAndroid Build Coastguard Worker 
32*bebae9c0SAndroid Build Coastguard Worker typedef xa_uint64_t            XAAuint64;         /* 64 bit unsigned integer */
33*bebae9c0SAndroid Build Coastguard Worker 
34*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/
35*bebae9c0SAndroid Build Coastguard Worker /* Android common types                                                      */
36*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/
37*bebae9c0SAndroid Build Coastguard Worker 
38*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_VIDEOCODEC_VP8            ((XAuint32) 0x00000006)
39*bebae9c0SAndroid Build Coastguard Worker 
40*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_VIDEOPROFILE_VP8_MAIN     ((XAuint32) 0x00000001)
41*bebae9c0SAndroid Build Coastguard Worker 
42*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_VIDEOLEVEL_VP8_VERSION0   ((XAuint32) 0x00000001)
43*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_VIDEOLEVEL_VP8_VERSION1   ((XAuint32) 0x00000002)
44*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_VIDEOLEVEL_VP8_VERSION2   ((XAuint32) 0x00000003)
45*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_VIDEOLEVEL_VP8_VERSION3   ((XAuint32) 0x00000004)
46*bebae9c0SAndroid Build Coastguard Worker 
47*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/
48*bebae9c0SAndroid Build Coastguard Worker /* Android Buffer Queue Interface                                            */
49*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/
50*bebae9c0SAndroid Build Coastguard Worker 
51*bebae9c0SAndroid Build Coastguard Worker extern XA_API const XAInterfaceID XA_IID_ANDROIDBUFFERQUEUESOURCE;
52*bebae9c0SAndroid Build Coastguard Worker 
53*bebae9c0SAndroid Build Coastguard Worker struct XAAndroidBufferQueueItf_;
54*bebae9c0SAndroid Build Coastguard Worker typedef const struct XAAndroidBufferQueueItf_ * const * XAAndroidBufferQueueItf;
55*bebae9c0SAndroid Build Coastguard Worker 
56*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_ITEMKEY_NONE             ((XAuint32) 0x00000000)
57*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_ITEMKEY_EOS              ((XAuint32) 0x00000001)
58*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_ITEMKEY_DISCONTINUITY    ((XAuint32) 0x00000002)
59*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((XAuint32) 0x00000003)
60*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_ITEMKEY_FORMAT_CHANGE    ((XAuint32) 0x00000004)
61*bebae9c0SAndroid Build Coastguard Worker 
62*bebae9c0SAndroid Build Coastguard Worker // optional data for XA_ANDROID_ITEMKEY_FORMAT_CHANGE, used when only one stream changes format,
63*bebae9c0SAndroid Build Coastguard Worker //   and the others remain continuous (i.e. no temporal discontinuity is introduced for them)
64*bebae9c0SAndroid Build Coastguard Worker //   candidate for being exposed in NDK
65*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_FORMATCHANGE_ITEMDATA_VIDEO  ((XAuint32) 0x00000001)
66*bebae9c0SAndroid Build Coastguard Worker //   not supported at this stage, for illustration purposes only
67*bebae9c0SAndroid Build Coastguard Worker //#define XA_ANDROID_FORMATCHANGE_ITEMDATA_AUDIO ((XAuint32) 0x00000002)
68*bebae9c0SAndroid Build Coastguard Worker 
69*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_NONE        ((XAuint32) 0x00000000)
70*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_PROCESSED   ((XAuint32) 0x00000001)
71*bebae9c0SAndroid Build Coastguard Worker #if 0   // reserved for future use
72*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_UNREALIZED  ((XAuint32) 0x00000002)
73*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_CLEARED     ((XAuint32) 0x00000004)
74*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_STOPPED     ((XAuint32) 0x00000008)
75*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_ERROR       ((XAuint32) 0x00000010)
76*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((XAuint32) 0x00000020)
77*bebae9c0SAndroid Build Coastguard Worker #endif
78*bebae9c0SAndroid Build Coastguard Worker 
79*bebae9c0SAndroid Build Coastguard Worker typedef struct XAAndroidBufferItem_ {
80*bebae9c0SAndroid Build Coastguard Worker     XAuint32 itemKey;  // identifies the item
81*bebae9c0SAndroid Build Coastguard Worker     XAuint32 itemSize;
82*bebae9c0SAndroid Build Coastguard Worker     XAuint8  itemData[0];
83*bebae9c0SAndroid Build Coastguard Worker } XAAndroidBufferItem;
84*bebae9c0SAndroid Build Coastguard Worker 
85*bebae9c0SAndroid Build Coastguard Worker typedef XAresult (XAAPIENTRY *xaAndroidBufferQueueCallback)(
86*bebae9c0SAndroid Build Coastguard Worker     XAAndroidBufferQueueItf caller,/* input */
87*bebae9c0SAndroid Build Coastguard Worker     void *pCallbackContext,        /* input */
88*bebae9c0SAndroid Build Coastguard Worker     void *pBufferContext,          /* input */
89*bebae9c0SAndroid Build Coastguard Worker     void *pBufferData,             /* input */
90*bebae9c0SAndroid Build Coastguard Worker     XAuint32 dataSize,             /* input */
91*bebae9c0SAndroid Build Coastguard Worker     XAuint32 dataUsed,             /* input */
92*bebae9c0SAndroid Build Coastguard Worker     const XAAndroidBufferItem *pItems,/* input */
93*bebae9c0SAndroid Build Coastguard Worker     XAuint32 itemsLength           /* input */
94*bebae9c0SAndroid Build Coastguard Worker );
95*bebae9c0SAndroid Build Coastguard Worker 
96*bebae9c0SAndroid Build Coastguard Worker typedef struct XAAndroidBufferQueueState_ {
97*bebae9c0SAndroid Build Coastguard Worker     XAuint32    count;
98*bebae9c0SAndroid Build Coastguard Worker     XAuint32    index;
99*bebae9c0SAndroid Build Coastguard Worker } XAAndroidBufferQueueState;
100*bebae9c0SAndroid Build Coastguard Worker 
101*bebae9c0SAndroid Build Coastguard Worker struct XAAndroidBufferQueueItf_ {
102*bebae9c0SAndroid Build Coastguard Worker     XAresult (*RegisterCallback) (
103*bebae9c0SAndroid Build Coastguard Worker         XAAndroidBufferQueueItf self,
104*bebae9c0SAndroid Build Coastguard Worker         xaAndroidBufferQueueCallback callback,
105*bebae9c0SAndroid Build Coastguard Worker         void* pCallbackContext
106*bebae9c0SAndroid Build Coastguard Worker     );
107*bebae9c0SAndroid Build Coastguard Worker 
108*bebae9c0SAndroid Build Coastguard Worker     XAresult (*Clear) (
109*bebae9c0SAndroid Build Coastguard Worker         XAAndroidBufferQueueItf self
110*bebae9c0SAndroid Build Coastguard Worker     );
111*bebae9c0SAndroid Build Coastguard Worker 
112*bebae9c0SAndroid Build Coastguard Worker     XAresult (*Enqueue) (
113*bebae9c0SAndroid Build Coastguard Worker         XAAndroidBufferQueueItf self,
114*bebae9c0SAndroid Build Coastguard Worker         void *pBufferContext,
115*bebae9c0SAndroid Build Coastguard Worker         void *pData,
116*bebae9c0SAndroid Build Coastguard Worker         XAuint32 dataLength,
117*bebae9c0SAndroid Build Coastguard Worker         const XAAndroidBufferItem *pItems,
118*bebae9c0SAndroid Build Coastguard Worker         XAuint32 itemsLength
119*bebae9c0SAndroid Build Coastguard Worker     );
120*bebae9c0SAndroid Build Coastguard Worker 
121*bebae9c0SAndroid Build Coastguard Worker     XAresult (*GetState) (
122*bebae9c0SAndroid Build Coastguard Worker         XAAndroidBufferQueueItf self,
123*bebae9c0SAndroid Build Coastguard Worker         XAAndroidBufferQueueState *pState
124*bebae9c0SAndroid Build Coastguard Worker     );
125*bebae9c0SAndroid Build Coastguard Worker 
126*bebae9c0SAndroid Build Coastguard Worker 
127*bebae9c0SAndroid Build Coastguard Worker     XAresult (*SetCallbackEventsMask) (
128*bebae9c0SAndroid Build Coastguard Worker             XAAndroidBufferQueueItf self,
129*bebae9c0SAndroid Build Coastguard Worker             XAuint32 eventFlags
130*bebae9c0SAndroid Build Coastguard Worker     );
131*bebae9c0SAndroid Build Coastguard Worker 
132*bebae9c0SAndroid Build Coastguard Worker     XAresult (*GetCallbackEventsMask) (
133*bebae9c0SAndroid Build Coastguard Worker             XAAndroidBufferQueueItf self,
134*bebae9c0SAndroid Build Coastguard Worker             XAuint32 *pEventFlags
135*bebae9c0SAndroid Build Coastguard Worker     );
136*bebae9c0SAndroid Build Coastguard Worker };
137*bebae9c0SAndroid Build Coastguard Worker 
138*bebae9c0SAndroid Build Coastguard Worker 
139*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/
140*bebae9c0SAndroid Build Coastguard Worker /* Android Buffer Queue Data Locator                                         */
141*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/
142*bebae9c0SAndroid Build Coastguard Worker 
143*bebae9c0SAndroid Build Coastguard Worker /** Addendum to Data locator macros  */
144*bebae9c0SAndroid Build Coastguard Worker #define XA_DATALOCATOR_ANDROIDBUFFERQUEUE       ((XAuint32) 0x800007BE)
145*bebae9c0SAndroid Build Coastguard Worker 
146*bebae9c0SAndroid Build Coastguard Worker /** Android Buffer Queue-based data locator definition,
147*bebae9c0SAndroid Build Coastguard Worker  *  locatorType must be XA_DATALOCATOR_ANDROIDBUFFERQUEUE */
148*bebae9c0SAndroid Build Coastguard Worker typedef struct XADataLocator_AndroidBufferQueue_ {
149*bebae9c0SAndroid Build Coastguard Worker     XAuint32    locatorType;
150*bebae9c0SAndroid Build Coastguard Worker     XAuint32    numBuffers;
151*bebae9c0SAndroid Build Coastguard Worker } XADataLocator_AndroidBufferQueue;
152*bebae9c0SAndroid Build Coastguard Worker 
153*bebae9c0SAndroid Build Coastguard Worker 
154*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/
155*bebae9c0SAndroid Build Coastguard Worker /* Android File Descriptor Data Locator                                      */
156*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/
157*bebae9c0SAndroid Build Coastguard Worker 
158*bebae9c0SAndroid Build Coastguard Worker /** Addendum to Data locator macros  */
159*bebae9c0SAndroid Build Coastguard Worker #define XA_DATALOCATOR_ANDROIDFD                ((XAuint32) 0x800007BC)
160*bebae9c0SAndroid Build Coastguard Worker 
161*bebae9c0SAndroid Build Coastguard Worker #define XA_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((XAAint64) 0xFFFFFFFFFFFFFFFFll)
162*bebae9c0SAndroid Build Coastguard Worker 
163*bebae9c0SAndroid Build Coastguard Worker /** File Descriptor-based data locator definition, locatorType must be XA_DATALOCATOR_ANDROIDFD */
164*bebae9c0SAndroid Build Coastguard Worker typedef struct XADataLocator_AndroidFD_ {
165*bebae9c0SAndroid Build Coastguard Worker     XAuint32        locatorType;
166*bebae9c0SAndroid Build Coastguard Worker     XAint32         fd;
167*bebae9c0SAndroid Build Coastguard Worker     XAAint64        offset;
168*bebae9c0SAndroid Build Coastguard Worker     XAAint64        length;
169*bebae9c0SAndroid Build Coastguard Worker } XADataLocator_AndroidFD;
170*bebae9c0SAndroid Build Coastguard Worker 
171*bebae9c0SAndroid Build Coastguard Worker /**
172*bebae9c0SAndroid Build Coastguard Worker  * MIME types required for data in Android Buffer Queues
173*bebae9c0SAndroid Build Coastguard Worker  */
174*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_MIME_MP2TS              ((XAchar *) "video/mp2ts")
175*bebae9c0SAndroid Build Coastguard Worker 
176*bebae9c0SAndroid Build Coastguard Worker #ifdef __cplusplus
177*bebae9c0SAndroid Build Coastguard Worker }
178*bebae9c0SAndroid Build Coastguard Worker #endif /* __cplusplus */
179*bebae9c0SAndroid Build Coastguard Worker 
180*bebae9c0SAndroid Build Coastguard Worker #endif /* OPENMAX_AL_ANDROID_H_ */
181