OpenMAXAL_Android.h revision c3b82a293ed06001ba6d50f111608160c6065ef2
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
28e9236d046fdb5cac0696c42e03443a2439188146Jean-Michel Trivitypedef xa_int64_t             XAAint64;          /* 64 bit signed integer   */
2997876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
30e9236d046fdb5cac0696c42e03443a2439188146Jean-Michel Trivitypedef xa_uint64_t            XAAuint64;         /* 64 bit unsigned integer */
31eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
32eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/
336e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi/* Android common types                                                      */
346e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi/*---------------------------------------------------------------------------*/
356e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi
366e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi#define XA_ANDROID_VIDEOCODEC_VP8            ((XAuint32) 0x00000006)
376e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi
386e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi#define XA_ANDROID_VIDEOPROFILE_VP8_MAIN     ((XAuint32) 0x00000001)
396e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi
406e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi#define XA_ANDROID_VIDEOLEVEL_VP8_VERSION0   ((XAuint32) 0x00000001)
416e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi#define XA_ANDROID_VIDEOLEVEL_VP8_VERSION1   ((XAuint32) 0x00000002)
426e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi#define XA_ANDROID_VIDEOLEVEL_VP8_VERSION2   ((XAuint32) 0x00000003)
436e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi#define XA_ANDROID_VIDEOLEVEL_VP8_VERSION3   ((XAuint32) 0x00000004)
446e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi
456e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi/*---------------------------------------------------------------------------*/
46d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi/* Android Buffer Queue Interface                                            */
47eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/
48eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
4960ca9f9ef02f6e486c3338cb811f603dd7825c05Glenn Kastenextern XA_API const XAInterfaceID XA_IID_ANDROIDBUFFERQUEUESOURCE;
50eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
51eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivistruct XAAndroidBufferQueueItf_;
52eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivitypedef const struct XAAndroidBufferQueueItf_ * const * XAAndroidBufferQueueItf;
53eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
541c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROID_ITEMKEY_NONE             ((XAuint32) 0x00000000)
551c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROID_ITEMKEY_EOS              ((XAuint32) 0x00000001)
561c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROID_ITEMKEY_DISCONTINUITY    ((XAuint32) 0x00000002)
571c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((XAuint32) 0x00000003)
586f0f5640d190b0187c356eb53bd96d9f9e49da60Jean-Michel Trivi#define XA_ANDROID_ITEMKEY_FORMAT_CHANGE    ((XAuint32) 0x00000004)
591c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
6023fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_NONE        ((XAuint32) 0x00000000)
6123fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_PROCESSED   ((XAuint32) 0x00000001)
62c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#if 0   // reserved for future use
6323fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_UNREALIZED  ((XAuint32) 0x00000002)
6423fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_CLEARED     ((XAuint32) 0x00000004)
6523fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_STOPPED     ((XAuint32) 0x00000008)
6623fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_ERROR       ((XAuint32) 0x00000010)
6723fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((XAuint32) 0x00000020)
68c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#endif
69d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
70d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct XAAndroidBufferItem_ {
71d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 itemKey;  // identifies the item
72d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 itemSize;
73d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint8  itemData[0];
74d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} XAAndroidBufferItem;
75eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
76ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef XAresult (XAAPIENTRY *xaAndroidBufferQueueCallback)(
77eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAAndroidBufferQueueItf caller,/* input */
7837dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pCallbackContext,        /* input */
7937dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pBufferContext,          /* input */
8037dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi    void *pBufferData,             /* input */
81d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 dataSize,             /* input */
82d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 dataUsed,             /* input */
83d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    const XAAndroidBufferItem *pItems,/* input */
84d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 itemsLength           /* input */
85eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi);
86eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
87d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct XAAndroidBufferQueueState_ {
88d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32    count;
89d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32    index;
90d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} XAAndroidBufferQueueState;
91d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
92eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivistruct XAAndroidBufferQueueItf_ {
93eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAresult (*RegisterCallback) (
94eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        XAAndroidBufferQueueItf self,
95eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        xaAndroidBufferQueueCallback callback,
9637dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void* pCallbackContext
97eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    );
98eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
99eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAresult (*Clear) (
100eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        XAAndroidBufferQueueItf self
101eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    );
102eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
103eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAresult (*Enqueue) (
104eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        XAAndroidBufferQueueItf self,
10537dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void *pBufferContext,
10637dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi        void *pData,
107d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        XAuint32 dataLength,
108d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        const XAAndroidBufferItem *pItems,
109d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        XAuint32 itemsLength
110eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    );
111e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi
112e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi    XAresult (*GetState) (
113e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi        XAAndroidBufferQueueItf self,
114e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi        XAAndroidBufferQueueState *pState
115e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi    );
1161c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
1171c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
1181c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    XAresult (*SetCallbackEventsMask) (
1191c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            XAAndroidBufferQueueItf self,
1201c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            XAuint32 eventFlags
1211c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    );
1221c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi
1231c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    XAresult (*GetCallbackEventsMask) (
1241c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            XAAndroidBufferQueueItf self,
1251c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi            XAuint32 *pEventFlags
1261c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi    );
127eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi};
128eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
129eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
130eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/
131eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/* Android Buffer Queue Data Locator                                         */
132eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/
133eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
134eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/** Addendum to Data locator macros  */
135eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#define XA_DATALOCATOR_ANDROIDBUFFERQUEUE       ((XAuint32) 0x800007BE)
136eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
137eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/** Android Buffer Queue-based data locator definition,
138eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi *  locatorType must be XA_DATALOCATOR_ANDROIDBUFFERQUEUE */
139eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivitypedef struct XADataLocator_AndroidBufferQueue_ {
140eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAuint32    locatorType;
141d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32    numBuffers;
142eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi} XADataLocator_AndroidBufferQueue;
143eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
14497876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
14597876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/*---------------------------------------------------------------------------*/
14697876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/* Android File Descriptor Data Locator                                      */
14797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/*---------------------------------------------------------------------------*/
14897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
14997876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/** Addendum to Data locator macros  */
150ad1ab1d13a9b043202b9d5cdc1d8c4ef66cbbca8Glenn Kasten#define XA_DATALOCATOR_ANDROIDFD                ((XAuint32) 0x800007BC)
15197876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
152ad1ab1d13a9b043202b9d5cdc1d8c4ef66cbbca8Glenn Kasten#define XA_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((XAAint64) 0xFFFFFFFFFFFFFFFFll)
15397876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
15497876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/** File Descriptor-based data locator definition, locatorType must be XA_DATALOCATOR_ANDROIDFD */
15597876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivitypedef struct XADataLocator_AndroidFD_ {
15697876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    XAuint32        locatorType;
15797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    XAint32         fd;
15897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    XAAint64        offset;
15997876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    XAAint64        length;
16097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi} XADataLocator_AndroidFD;
16197876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
162c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten/**
163c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten * MIME types required for data in Android Buffer Queues
164c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten */
165c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#define XA_ANDROID_MIME_MP2TS              ((XAchar *) "video/mp2ts")
166c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten
167eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#ifdef __cplusplus
168eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi}
169eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#endif /* __cplusplus */
170eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
171eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#endif /* OPENMAX_AL_ANDROID_H_ */
172