OpenMAXAL_Android.h revision 37dc2fccf3f122b79ebd554de209d0a3c94ae161
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 */ 5237dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi void *pCallbackContext, /* input */ 5337dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi void *pBufferContext, /* input */ 5437dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi void *pBufferData, /* input */ 55d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 dataSize, /* input */ 56d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 dataUsed, /* input */ 57d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi const XAAndroidBufferItem *pItems,/* input */ 58d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 itemsLength /* input */ 59eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi); 60eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 61d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct XAAndroidBufferQueueState_ { 62d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 count; 63d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 index; 64d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} XAAndroidBufferQueueState; 65d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi 66eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivistruct XAAndroidBufferQueueItf_ { 67eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAresult (*RegisterCallback) ( 68eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAAndroidBufferQueueItf self, 69eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi xaAndroidBufferQueueCallback callback, 7037dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi void* pCallbackContext 71eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi ); 72eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 73eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAresult (*Clear) ( 74eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAAndroidBufferQueueItf self 75eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi ); 76eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 77eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAresult (*Enqueue) ( 78eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAAndroidBufferQueueItf self, 7937dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi void *pBufferContext, 8037dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi void *pData, 81d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 dataLength, 82d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi const XAAndroidBufferItem *pItems, 83d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 itemsLength 84eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi ); 85e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi 86e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi XAresult (*GetState) ( 87e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi XAAndroidBufferQueueItf self, 88e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi XAAndroidBufferQueueState *pState 89e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi ); 90eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi}; 91eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 92eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 93eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 94eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/* Android Buffer Queue Data Locator */ 95eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 96eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 97eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/** Addendum to Data locator macros */ 98eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#define XA_DATALOCATOR_ANDROIDBUFFERQUEUE ((XAuint32) 0x800007BE) 99eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 100eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/** Android Buffer Queue-based data locator definition, 101eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi * locatorType must be XA_DATALOCATOR_ANDROIDBUFFERQUEUE */ 102eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivitypedef struct XADataLocator_AndroidBufferQueue_ { 103eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAuint32 locatorType; 104d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 numBuffers; 105eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi} XADataLocator_AndroidBufferQueue; 106eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 10797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi 10897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 10997876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/* Android File Descriptor Data Locator */ 11097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 11197876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi 11297876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/** Addendum to Data locator macros */ 113ad1ab1d13a9b043202b9d5cdc1d8c4ef66cbbca8Glenn Kasten#define XA_DATALOCATOR_ANDROIDFD ((XAuint32) 0x800007BC) 11497876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi 115ad1ab1d13a9b043202b9d5cdc1d8c4ef66cbbca8Glenn Kasten#define XA_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((XAAint64) 0xFFFFFFFFFFFFFFFFll) 11697876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi 11797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/** File Descriptor-based data locator definition, locatorType must be XA_DATALOCATOR_ANDROIDFD */ 11897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivitypedef struct XADataLocator_AndroidFD_ { 11997876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi XAuint32 locatorType; 12097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi XAint32 fd; 12197876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi XAAint64 offset; 12297876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi XAAint64 length; 12397876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi} XADataLocator_AndroidFD; 12497876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi 125eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#ifdef __cplusplus 126eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi} 127eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#endif /* __cplusplus */ 128eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 129eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#endif /* OPENMAX_AL_ANDROID_H_ */ 130