OpenMAXAL_Android.h revision e7bfcdc183454ec959ff51342f0973cabba219b2
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
40d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi#define XA_ANDROID_ITEMKEY_NONE          ((XAuint32) 0x00000000)
41d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi#define XA_ANDROID_ITEMKEY_EOS           ((XAuint32) 0x00000001)
42d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi#define XA_ANDROID_ITEMKEY_DISCONTINUITY ((XAuint32) 0x00000002)
43d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
44d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct XAAndroidBufferItem_ {
45d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 itemKey;  // identifies the item
46d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 itemSize;
47d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint8  itemData[0];
48d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} XAAndroidBufferItem;
49eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
50ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef XAresult (XAAPIENTRY *xaAndroidBufferQueueCallback)(
51eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAAndroidBufferQueueItf caller,/* input */
52eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    void *pContext,                /* input */
53d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    const void *pBufferData,       /* input */
54d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 dataSize,             /* input */
55d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 dataUsed,             /* input */
56d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    const XAAndroidBufferItem *pItems,/* input */
57d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32 itemsLength           /* input */
58eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi);
59eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
60d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct XAAndroidBufferQueueState_ {
61d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32    count;
62d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32    index;
63d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} XAAndroidBufferQueueState;
64d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi
65eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivistruct XAAndroidBufferQueueItf_ {
66eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAresult (*RegisterCallback) (
67eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        XAAndroidBufferQueueItf self,
68eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        xaAndroidBufferQueueCallback callback,
69eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        void* pContext
70eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    );
71eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
72eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAresult (*Clear) (
73eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        XAAndroidBufferQueueItf self
74eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    );
75eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
76eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAresult (*Enqueue) (
77eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi        XAAndroidBufferQueueItf self,
78d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        const void *pData,
79d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        XAuint32 dataLength,
80d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        const XAAndroidBufferItem *pItems,
81d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi        XAuint32 itemsLength
82eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    );
83e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi
84e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi    XAresult (*GetState) (
85e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi        XAAndroidBufferQueueItf self,
86e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi        XAAndroidBufferQueueState *pState
87e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi    );
88eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi};
89eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
90eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
91eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/
92eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/* Android Buffer Queue Data Locator                                         */
93eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/
94eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
95eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/** Addendum to Data locator macros  */
96eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#define XA_DATALOCATOR_ANDROIDBUFFERQUEUE       ((XAuint32) 0x800007BE)
97eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
98eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/** Android Buffer Queue-based data locator definition,
99eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi *  locatorType must be XA_DATALOCATOR_ANDROIDBUFFERQUEUE */
100eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivitypedef struct XADataLocator_AndroidBufferQueue_ {
101eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi    XAuint32    locatorType;
102d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi    XAuint32    numBuffers;
103eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi} XADataLocator_AndroidBufferQueue;
104eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
10597876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
10697876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/*---------------------------------------------------------------------------*/
10797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/* Android File Descriptor Data Locator                                      */
10897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/*---------------------------------------------------------------------------*/
10997876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
11097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/** Addendum to Data locator macros  */
111ad1ab1d13a9b043202b9d5cdc1d8c4ef66cbbca8Glenn Kasten#define XA_DATALOCATOR_ANDROIDFD                ((XAuint32) 0x800007BC)
11297876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
113ad1ab1d13a9b043202b9d5cdc1d8c4ef66cbbca8Glenn Kasten#define XA_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((XAAint64) 0xFFFFFFFFFFFFFFFFll)
11497876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
11597876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/** File Descriptor-based data locator definition, locatorType must be XA_DATALOCATOR_ANDROIDFD */
11697876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivitypedef struct XADataLocator_AndroidFD_ {
11797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    XAuint32        locatorType;
11897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    XAint32         fd;
11997876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    XAAint64        offset;
12097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi    XAAint64        length;
12197876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi} XADataLocator_AndroidFD;
12297876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi
123eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#ifdef __cplusplus
124eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi}
125eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#endif /* __cplusplus */
126eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi
127eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#endif /* OPENMAX_AL_ANDROID_H_ */
128