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