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