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