OpenMAXAL_Android.h revision 1c853a41d9d9886e60618a7c878ce3912f46bf3c
1eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*
2eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi * Copyright (C) 2010 The Android Open Source Project
3eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi *
4eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi * Licensed under the Apache License, Version 2.0 (the "License");
5eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi * you may not use this file except in compliance with the License.
6eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi * You may obtain a copy of the License at
7eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi *
8eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi *      http://www.apache.org/licenses/LICENSE-2.0
9eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi *
10eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi * Unless required by applicable law or agreed to in writing, software
11eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi * distributed under the License is distributed on an "AS IS" BASIS,
12eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi * See the License for the specific language governing permissions and
14eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi * limitations under the License.
15eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi */
16eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
17eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#ifndef OPENMAX_AL_ANDROID_H_
18eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#define OPENMAX_AL_ANDROID_H_
19eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
20eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#ifdef __cplusplus
21eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Triviextern "C" {
22eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#endif
23eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
24eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/
25eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/* Android common types                                                      */
26eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/
27eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
2897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivitypedef xa_int64_t             XAAint64;           /* 64 bit signed integer */
2997876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
30eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
31eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/
32d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi/* Android Buffer Queue Interface                                            */
33eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/
34eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
35ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastenextern XA_API const XAInterfaceID XA_IID_ANDROIDBUFFERQUEUE;
36eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
37eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivistruct XAAndroidBufferQueueItf_;
38eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivitypedef const struct XAAndroidBufferQueueItf_ * const * XAAndroidBufferQueueItf;
39eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
401c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROID_ITEMKEY_NONE             ((XAuint32) 0x00000000)
411c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROID_ITEMKEY_EOS              ((XAuint32) 0x00000001)
421c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROID_ITEMKEY_DISCONTINUITY    ((XAuint32) 0x00000002)
431c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((XAuint32) 0x00000003)
441c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
451c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROIDBUFFERQUEUEEVENT_NONE        ((SLuint32) 0x00000000)
461c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROIDBUFFERQUEUEEVENT_PROCESSED   ((SLuint32) 0x00000001)
471c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROIDBUFFERQUEUEEVENT_UNREALIZED  ((SLuint32) 0x00000002)
481c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROIDBUFFERQUEUEEVENT_CLEARED     ((SLuint32) 0x00000004)
491c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROIDBUFFERQUEUEEVENT_STOPPED     ((SLuint32) 0x00000008)
501c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROIDBUFFERQUEUEEVENT_ERROR       ((SLuint32) 0x00000010)
511c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((SLuint32) 0x00000020)
52d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
53d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct XAAndroidBufferItem_ {
54d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 itemKey;  // identifies the item
55d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 itemSize;
56d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint8  itemData[0];
57d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} XAAndroidBufferItem;
58eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
59ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef XAresult (XAAPIENTRY *xaAndroidBufferQueueCallback)(
60eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAAndroidBufferQueueItf caller,/* input */
6137dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pCallbackContext,        /* input */
6237dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pBufferContext,          /* input */
6337dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pBufferData,             /* input */
64d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 dataSize,             /* input */
65d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 dataUsed,             /* input */
66d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    const XAAndroidBufferItem *pItems,/* input */
67d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 itemsLength           /* input */
68eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi);
69eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
70d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct XAAndroidBufferQueueState_ {
71d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32    count;
72d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32    index;
73d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} XAAndroidBufferQueueState;
74d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
75eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivistruct XAAndroidBufferQueueItf_ {
76eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAresult (*RegisterCallback) (
77eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        XAAndroidBufferQueueItf self,
78eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        xaAndroidBufferQueueCallback callback,
7937dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void* pCallbackContext
80eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    );
81eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
82eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAresult (*Clear) (
83eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        XAAndroidBufferQueueItf self
84eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    );
85eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
86eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAresult (*Enqueue) (
87eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        XAAndroidBufferQueueItf self,
8837dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void *pBufferContext,
8937dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void *pData,
90d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        XAuint32 dataLength,
91d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        const XAAndroidBufferItem *pItems,
92d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        XAuint32 itemsLength
93eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    );
94e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi
95e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi    XAresult (*GetState) (
96e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi        XAAndroidBufferQueueItf self,
97e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi        XAAndroidBufferQueueState *pState
98e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi    );
991c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
1001c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
1011c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    XAresult (*SetCallbackEventsMask) (
1021c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            XAAndroidBufferQueueItf self,
1031c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            XAuint32 eventFlags
1041c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    );
1051c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
1061c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    XAresult (*GetCallbackEventsMask) (
1071c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            XAAndroidBufferQueueItf self,
1081c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            XAuint32 *pEventFlags
1091c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    );
110eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi};
111eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
112eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
113eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/
114eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/* Android Buffer Queue Data Locator                                         */
115eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/
116eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
117eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/** Addendum to Data locator macros  */
118eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#define XA_DATALOCATOR_ANDROIDBUFFERQUEUE       ((XAuint32) 0x800007BE)
119eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
120eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/** Android Buffer Queue-based data locator definition,
121eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi *  locatorType must be XA_DATALOCATOR_ANDROIDBUFFERQUEUE */
122eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivitypedef struct XADataLocator_AndroidBufferQueue_ {
123eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAuint32    locatorType;
124d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32    numBuffers;
125eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi} XADataLocator_AndroidBufferQueue;
126eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
12797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
12897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/*---------------------------------------------------------------------------*/
12997876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/* Android File Descriptor Data Locator                                      */
13097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/*---------------------------------------------------------------------------*/
13197876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
13297876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/** Addendum to Data locator macros  */
133ad1ab1d13a9b043202b9d5cdc1d8c4ef66cbbca8Glenn Kasten#define XA_DATALOCATOR_ANDROIDFD                ((XAuint32) 0x800007BC)
13497876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
135ad1ab1d13a9b043202b9d5cdc1d8c4ef66cbbca8Glenn Kasten#define XA_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((XAAint64) 0xFFFFFFFFFFFFFFFFll)
13697876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
13797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/** File Descriptor-based data locator definition, locatorType must be XA_DATALOCATOR_ANDROIDFD */
13897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivitypedef struct XADataLocator_AndroidFD_ {
13997876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    XAuint32        locatorType;
14097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    XAint32         fd;
14197876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    XAAint64        offset;
14297876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    XAAint64        length;
14397876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi} XADataLocator_AndroidFD;
14497876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
145eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#ifdef __cplusplus
146eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi}
147eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#endif /* __cplusplus */
148eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
149eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#endif /* OPENMAX_AL_ANDROID_H_ */
150