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 20cd3da3cf0b505da414569700d9c0c292a72a582cGlenn Kasten#include "OpenMAXAL.h" 21cd3da3cf0b505da414569700d9c0c292a72a582cGlenn Kasten 22eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#ifdef __cplusplus 23eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Triviextern "C" { 24eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#endif 25eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 26eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 27eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/* Android common types */ 28eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 29eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 30e9236d046fdb5cac0696c42e03443a2439188146Jean-Michel Trivitypedef xa_int64_t XAAint64; /* 64 bit signed integer */ 3197876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi 32e9236d046fdb5cac0696c42e03443a2439188146Jean-Michel Trivitypedef xa_uint64_t XAAuint64; /* 64 bit unsigned integer */ 33eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 34eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 356e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi/* Android common types */ 366e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 376e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi 386e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi#define XA_ANDROID_VIDEOCODEC_VP8 ((XAuint32) 0x00000006) 396e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi 406e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi#define XA_ANDROID_VIDEOPROFILE_VP8_MAIN ((XAuint32) 0x00000001) 416e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi 426e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi#define XA_ANDROID_VIDEOLEVEL_VP8_VERSION0 ((XAuint32) 0x00000001) 436e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi#define XA_ANDROID_VIDEOLEVEL_VP8_VERSION1 ((XAuint32) 0x00000002) 446e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi#define XA_ANDROID_VIDEOLEVEL_VP8_VERSION2 ((XAuint32) 0x00000003) 456e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi#define XA_ANDROID_VIDEOLEVEL_VP8_VERSION3 ((XAuint32) 0x00000004) 466e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi 476e7e174807fc639c49125ced8962aa369370fbf0Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 48d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi/* Android Buffer Queue Interface */ 49eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 50eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 5160ca9f9ef02f6e486c3338cb811f603dd7825c05Glenn Kastenextern XA_API const XAInterfaceID XA_IID_ANDROIDBUFFERQUEUESOURCE; 52eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 53eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivistruct XAAndroidBufferQueueItf_; 54eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivitypedef const struct XAAndroidBufferQueueItf_ * const * XAAndroidBufferQueueItf; 55eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 561c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROID_ITEMKEY_NONE ((XAuint32) 0x00000000) 571c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROID_ITEMKEY_EOS ((XAuint32) 0x00000001) 581c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROID_ITEMKEY_DISCONTINUITY ((XAuint32) 0x00000002) 591c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi#define XA_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((XAuint32) 0x00000003) 606f0f5640d190b0187c356eb53bd96d9f9e49da60Jean-Michel Trivi#define XA_ANDROID_ITEMKEY_FORMAT_CHANGE ((XAuint32) 0x00000004) 611c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi 62af9b87de97356722370d11d2c5797d75cb43969eJean-Michel Trivi// optional data for XA_ANDROID_ITEMKEY_FORMAT_CHANGE, used when only one stream changes format, 63af9b87de97356722370d11d2c5797d75cb43969eJean-Michel Trivi// and the others remain continuous (i.e. no temporal discontinuity is introduced for them) 64af9b87de97356722370d11d2c5797d75cb43969eJean-Michel Trivi// candidate for being exposed in NDK 65af9b87de97356722370d11d2c5797d75cb43969eJean-Michel Trivi#define XA_ANDROID_FORMATCHANGE_ITEMDATA_VIDEO ((XAuint32) 0x00000001) 66af9b87de97356722370d11d2c5797d75cb43969eJean-Michel Trivi// not supported at this stage, for illustration purposes only 67af9b87de97356722370d11d2c5797d75cb43969eJean-Michel Trivi//#define XA_ANDROID_FORMATCHANGE_ITEMDATA_AUDIO ((XAuint32) 0x00000002) 68af9b87de97356722370d11d2c5797d75cb43969eJean-Michel Trivi 6923fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_NONE ((XAuint32) 0x00000000) 7023fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_PROCESSED ((XAuint32) 0x00000001) 71c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#if 0 // reserved for future use 7223fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_UNREALIZED ((XAuint32) 0x00000002) 7323fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_CLEARED ((XAuint32) 0x00000004) 7423fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_STOPPED ((XAuint32) 0x00000008) 7523fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_ERROR ((XAuint32) 0x00000010) 7623fc68ef3d6b7c5e6ceaf530fc9522c109f3a43eGlenn Kasten#define XA_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((XAuint32) 0x00000020) 77c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#endif 78d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi 79d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct XAAndroidBufferItem_ { 80d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 itemKey; // identifies the item 81d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 itemSize; 82d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint8 itemData[0]; 83d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} XAAndroidBufferItem; 84eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 85ebc8fd365b402e498d499fa8737a7591c290347cGlenn Kastentypedef XAresult (XAAPIENTRY *xaAndroidBufferQueueCallback)( 86eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAAndroidBufferQueueItf caller,/* input */ 8737dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi void *pCallbackContext, /* input */ 8837dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi void *pBufferContext, /* input */ 8937dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi void *pBufferData, /* input */ 90d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 dataSize, /* input */ 91d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 dataUsed, /* input */ 92d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi const XAAndroidBufferItem *pItems,/* input */ 93d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 itemsLength /* input */ 94eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi); 95eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 96d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivitypedef struct XAAndroidBufferQueueState_ { 97d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 count; 98d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 index; 99d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi} XAAndroidBufferQueueState; 100d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi 101eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivistruct XAAndroidBufferQueueItf_ { 102eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAresult (*RegisterCallback) ( 103eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAAndroidBufferQueueItf self, 104eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi xaAndroidBufferQueueCallback callback, 10537dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi void* pCallbackContext 106eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi ); 107eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 108eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAresult (*Clear) ( 109eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAAndroidBufferQueueItf self 110eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi ); 111eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 112eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAresult (*Enqueue) ( 113eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAAndroidBufferQueueItf self, 11437dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi void *pBufferContext, 11537dc2fccf3f122b79ebd554de209d0a3c94ae161Jean-Michel Trivi void *pData, 116d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 dataLength, 117d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi const XAAndroidBufferItem *pItems, 118d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 itemsLength 119eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi ); 120e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi 121e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi XAresult (*GetState) ( 122e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi XAAndroidBufferQueueItf self, 123e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi XAAndroidBufferQueueState *pState 124e7bfcdc183454ec959ff51342f0973cabba219b2Jean-Michel Trivi ); 1251c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi 1261c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi 1271c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi XAresult (*SetCallbackEventsMask) ( 1281c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi XAAndroidBufferQueueItf self, 1291c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi XAuint32 eventFlags 1301c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi ); 1311c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi 1321c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi XAresult (*GetCallbackEventsMask) ( 1331c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi XAAndroidBufferQueueItf self, 1341c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi XAuint32 *pEventFlags 1351c853a41d9d9886e60618a7c878ce3912f46bf3cJean-Michel Trivi ); 136eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi}; 137eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 138eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 139eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 140eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/* Android Buffer Queue Data Locator */ 141eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 142eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 143eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/** Addendum to Data locator macros */ 144eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#define XA_DATALOCATOR_ANDROIDBUFFERQUEUE ((XAuint32) 0x800007BE) 145eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 146eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi/** Android Buffer Queue-based data locator definition, 147eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi * locatorType must be XA_DATALOCATOR_ANDROIDBUFFERQUEUE */ 148eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivitypedef struct XADataLocator_AndroidBufferQueue_ { 149eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi XAuint32 locatorType; 150d158d31a6bbb06426b71c3d097b7768bc3fb79a3Jean-Michel Trivi XAuint32 numBuffers; 151eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi} XADataLocator_AndroidBufferQueue; 152eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 15397876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi 15497876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 15597876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/* Android File Descriptor Data Locator */ 15697876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/*---------------------------------------------------------------------------*/ 15797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi 15897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/** Addendum to Data locator macros */ 159ad1ab1d13a9b043202b9d5cdc1d8c4ef66cbbca8Glenn Kasten#define XA_DATALOCATOR_ANDROIDFD ((XAuint32) 0x800007BC) 16097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi 161ad1ab1d13a9b043202b9d5cdc1d8c4ef66cbbca8Glenn Kasten#define XA_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((XAAint64) 0xFFFFFFFFFFFFFFFFll) 16297876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi 16397876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi/** File Descriptor-based data locator definition, locatorType must be XA_DATALOCATOR_ANDROIDFD */ 16497876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivitypedef struct XADataLocator_AndroidFD_ { 16597876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi XAuint32 locatorType; 16697876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi XAint32 fd; 16797876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi XAAint64 offset; 16897876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi XAAint64 length; 16997876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi} XADataLocator_AndroidFD; 17097876858aa17c7f24c6a1d60be09a57bc1824ba3Jean-Michel Trivi 171c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten/** 172c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten * MIME types required for data in Android Buffer Queues 173c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten */ 174c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten#define XA_ANDROID_MIME_MP2TS ((XAchar *) "video/mp2ts") 175c3b82a293ed06001ba6d50f111608160c6065ef2Glenn Kasten 176eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#ifdef __cplusplus 177eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi} 178eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#endif /* __cplusplus */ 179eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi 180eae4df541ba1d46f65d37e959baf2127aa632c93Jean-Michel Trivi#endif /* OPENMAX_AL_ANDROID_H_ */ 181