1*bebae9c0SAndroid Build Coastguard Worker /* 2*bebae9c0SAndroid Build Coastguard Worker * Copyright (C) 2010 The Android Open Source Project 3*bebae9c0SAndroid Build Coastguard Worker * 4*bebae9c0SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*bebae9c0SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*bebae9c0SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*bebae9c0SAndroid Build Coastguard Worker * 8*bebae9c0SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*bebae9c0SAndroid Build Coastguard Worker * 10*bebae9c0SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*bebae9c0SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*bebae9c0SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*bebae9c0SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*bebae9c0SAndroid Build Coastguard Worker * limitations under the License. 15*bebae9c0SAndroid Build Coastguard Worker */ 16*bebae9c0SAndroid Build Coastguard Worker 17*bebae9c0SAndroid Build Coastguard Worker #ifndef OPENMAX_AL_ANDROID_H_ 18*bebae9c0SAndroid Build Coastguard Worker #define OPENMAX_AL_ANDROID_H_ 19*bebae9c0SAndroid Build Coastguard Worker 20*bebae9c0SAndroid Build Coastguard Worker #include "OpenMAXAL.h" 21*bebae9c0SAndroid Build Coastguard Worker 22*bebae9c0SAndroid Build Coastguard Worker #ifdef __cplusplus 23*bebae9c0SAndroid Build Coastguard Worker extern "C" { 24*bebae9c0SAndroid Build Coastguard Worker #endif 25*bebae9c0SAndroid Build Coastguard Worker 26*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 27*bebae9c0SAndroid Build Coastguard Worker /* Android common types */ 28*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 29*bebae9c0SAndroid Build Coastguard Worker 30*bebae9c0SAndroid Build Coastguard Worker typedef xa_int64_t XAAint64; /* 64 bit signed integer */ 31*bebae9c0SAndroid Build Coastguard Worker 32*bebae9c0SAndroid Build Coastguard Worker typedef xa_uint64_t XAAuint64; /* 64 bit unsigned integer */ 33*bebae9c0SAndroid Build Coastguard Worker 34*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 35*bebae9c0SAndroid Build Coastguard Worker /* Android common types */ 36*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 37*bebae9c0SAndroid Build Coastguard Worker 38*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_VIDEOCODEC_VP8 ((XAuint32) 0x00000006) 39*bebae9c0SAndroid Build Coastguard Worker 40*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_VIDEOPROFILE_VP8_MAIN ((XAuint32) 0x00000001) 41*bebae9c0SAndroid Build Coastguard Worker 42*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_VIDEOLEVEL_VP8_VERSION0 ((XAuint32) 0x00000001) 43*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_VIDEOLEVEL_VP8_VERSION1 ((XAuint32) 0x00000002) 44*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_VIDEOLEVEL_VP8_VERSION2 ((XAuint32) 0x00000003) 45*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_VIDEOLEVEL_VP8_VERSION3 ((XAuint32) 0x00000004) 46*bebae9c0SAndroid Build Coastguard Worker 47*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 48*bebae9c0SAndroid Build Coastguard Worker /* Android Buffer Queue Interface */ 49*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 50*bebae9c0SAndroid Build Coastguard Worker 51*bebae9c0SAndroid Build Coastguard Worker extern XA_API const XAInterfaceID XA_IID_ANDROIDBUFFERQUEUESOURCE; 52*bebae9c0SAndroid Build Coastguard Worker 53*bebae9c0SAndroid Build Coastguard Worker struct XAAndroidBufferQueueItf_; 54*bebae9c0SAndroid Build Coastguard Worker typedef const struct XAAndroidBufferQueueItf_ * const * XAAndroidBufferQueueItf; 55*bebae9c0SAndroid Build Coastguard Worker 56*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_ITEMKEY_NONE ((XAuint32) 0x00000000) 57*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_ITEMKEY_EOS ((XAuint32) 0x00000001) 58*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_ITEMKEY_DISCONTINUITY ((XAuint32) 0x00000002) 59*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_ITEMKEY_BUFFERQUEUEEVENT ((XAuint32) 0x00000003) 60*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_ITEMKEY_FORMAT_CHANGE ((XAuint32) 0x00000004) 61*bebae9c0SAndroid Build Coastguard Worker 62*bebae9c0SAndroid Build Coastguard Worker // optional data for XA_ANDROID_ITEMKEY_FORMAT_CHANGE, used when only one stream changes format, 63*bebae9c0SAndroid Build Coastguard Worker // and the others remain continuous (i.e. no temporal discontinuity is introduced for them) 64*bebae9c0SAndroid Build Coastguard Worker // candidate for being exposed in NDK 65*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_FORMATCHANGE_ITEMDATA_VIDEO ((XAuint32) 0x00000001) 66*bebae9c0SAndroid Build Coastguard Worker // not supported at this stage, for illustration purposes only 67*bebae9c0SAndroid Build Coastguard Worker //#define XA_ANDROID_FORMATCHANGE_ITEMDATA_AUDIO ((XAuint32) 0x00000002) 68*bebae9c0SAndroid Build Coastguard Worker 69*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_NONE ((XAuint32) 0x00000000) 70*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_PROCESSED ((XAuint32) 0x00000001) 71*bebae9c0SAndroid Build Coastguard Worker #if 0 // reserved for future use 72*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_UNREALIZED ((XAuint32) 0x00000002) 73*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_CLEARED ((XAuint32) 0x00000004) 74*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_STOPPED ((XAuint32) 0x00000008) 75*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_ERROR ((XAuint32) 0x00000010) 76*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROIDBUFFERQUEUEEVENT_CONTENT_END ((XAuint32) 0x00000020) 77*bebae9c0SAndroid Build Coastguard Worker #endif 78*bebae9c0SAndroid Build Coastguard Worker 79*bebae9c0SAndroid Build Coastguard Worker typedef struct XAAndroidBufferItem_ { 80*bebae9c0SAndroid Build Coastguard Worker XAuint32 itemKey; // identifies the item 81*bebae9c0SAndroid Build Coastguard Worker XAuint32 itemSize; 82*bebae9c0SAndroid Build Coastguard Worker XAuint8 itemData[0]; 83*bebae9c0SAndroid Build Coastguard Worker } XAAndroidBufferItem; 84*bebae9c0SAndroid Build Coastguard Worker 85*bebae9c0SAndroid Build Coastguard Worker typedef XAresult (XAAPIENTRY *xaAndroidBufferQueueCallback)( 86*bebae9c0SAndroid Build Coastguard Worker XAAndroidBufferQueueItf caller,/* input */ 87*bebae9c0SAndroid Build Coastguard Worker void *pCallbackContext, /* input */ 88*bebae9c0SAndroid Build Coastguard Worker void *pBufferContext, /* input */ 89*bebae9c0SAndroid Build Coastguard Worker void *pBufferData, /* input */ 90*bebae9c0SAndroid Build Coastguard Worker XAuint32 dataSize, /* input */ 91*bebae9c0SAndroid Build Coastguard Worker XAuint32 dataUsed, /* input */ 92*bebae9c0SAndroid Build Coastguard Worker const XAAndroidBufferItem *pItems,/* input */ 93*bebae9c0SAndroid Build Coastguard Worker XAuint32 itemsLength /* input */ 94*bebae9c0SAndroid Build Coastguard Worker ); 95*bebae9c0SAndroid Build Coastguard Worker 96*bebae9c0SAndroid Build Coastguard Worker typedef struct XAAndroidBufferQueueState_ { 97*bebae9c0SAndroid Build Coastguard Worker XAuint32 count; 98*bebae9c0SAndroid Build Coastguard Worker XAuint32 index; 99*bebae9c0SAndroid Build Coastguard Worker } XAAndroidBufferQueueState; 100*bebae9c0SAndroid Build Coastguard Worker 101*bebae9c0SAndroid Build Coastguard Worker struct XAAndroidBufferQueueItf_ { 102*bebae9c0SAndroid Build Coastguard Worker XAresult (*RegisterCallback) ( 103*bebae9c0SAndroid Build Coastguard Worker XAAndroidBufferQueueItf self, 104*bebae9c0SAndroid Build Coastguard Worker xaAndroidBufferQueueCallback callback, 105*bebae9c0SAndroid Build Coastguard Worker void* pCallbackContext 106*bebae9c0SAndroid Build Coastguard Worker ); 107*bebae9c0SAndroid Build Coastguard Worker 108*bebae9c0SAndroid Build Coastguard Worker XAresult (*Clear) ( 109*bebae9c0SAndroid Build Coastguard Worker XAAndroidBufferQueueItf self 110*bebae9c0SAndroid Build Coastguard Worker ); 111*bebae9c0SAndroid Build Coastguard Worker 112*bebae9c0SAndroid Build Coastguard Worker XAresult (*Enqueue) ( 113*bebae9c0SAndroid Build Coastguard Worker XAAndroidBufferQueueItf self, 114*bebae9c0SAndroid Build Coastguard Worker void *pBufferContext, 115*bebae9c0SAndroid Build Coastguard Worker void *pData, 116*bebae9c0SAndroid Build Coastguard Worker XAuint32 dataLength, 117*bebae9c0SAndroid Build Coastguard Worker const XAAndroidBufferItem *pItems, 118*bebae9c0SAndroid Build Coastguard Worker XAuint32 itemsLength 119*bebae9c0SAndroid Build Coastguard Worker ); 120*bebae9c0SAndroid Build Coastguard Worker 121*bebae9c0SAndroid Build Coastguard Worker XAresult (*GetState) ( 122*bebae9c0SAndroid Build Coastguard Worker XAAndroidBufferQueueItf self, 123*bebae9c0SAndroid Build Coastguard Worker XAAndroidBufferQueueState *pState 124*bebae9c0SAndroid Build Coastguard Worker ); 125*bebae9c0SAndroid Build Coastguard Worker 126*bebae9c0SAndroid Build Coastguard Worker 127*bebae9c0SAndroid Build Coastguard Worker XAresult (*SetCallbackEventsMask) ( 128*bebae9c0SAndroid Build Coastguard Worker XAAndroidBufferQueueItf self, 129*bebae9c0SAndroid Build Coastguard Worker XAuint32 eventFlags 130*bebae9c0SAndroid Build Coastguard Worker ); 131*bebae9c0SAndroid Build Coastguard Worker 132*bebae9c0SAndroid Build Coastguard Worker XAresult (*GetCallbackEventsMask) ( 133*bebae9c0SAndroid Build Coastguard Worker XAAndroidBufferQueueItf self, 134*bebae9c0SAndroid Build Coastguard Worker XAuint32 *pEventFlags 135*bebae9c0SAndroid Build Coastguard Worker ); 136*bebae9c0SAndroid Build Coastguard Worker }; 137*bebae9c0SAndroid Build Coastguard Worker 138*bebae9c0SAndroid Build Coastguard Worker 139*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 140*bebae9c0SAndroid Build Coastguard Worker /* Android Buffer Queue Data Locator */ 141*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 142*bebae9c0SAndroid Build Coastguard Worker 143*bebae9c0SAndroid Build Coastguard Worker /** Addendum to Data locator macros */ 144*bebae9c0SAndroid Build Coastguard Worker #define XA_DATALOCATOR_ANDROIDBUFFERQUEUE ((XAuint32) 0x800007BE) 145*bebae9c0SAndroid Build Coastguard Worker 146*bebae9c0SAndroid Build Coastguard Worker /** Android Buffer Queue-based data locator definition, 147*bebae9c0SAndroid Build Coastguard Worker * locatorType must be XA_DATALOCATOR_ANDROIDBUFFERQUEUE */ 148*bebae9c0SAndroid Build Coastguard Worker typedef struct XADataLocator_AndroidBufferQueue_ { 149*bebae9c0SAndroid Build Coastguard Worker XAuint32 locatorType; 150*bebae9c0SAndroid Build Coastguard Worker XAuint32 numBuffers; 151*bebae9c0SAndroid Build Coastguard Worker } XADataLocator_AndroidBufferQueue; 152*bebae9c0SAndroid Build Coastguard Worker 153*bebae9c0SAndroid Build Coastguard Worker 154*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 155*bebae9c0SAndroid Build Coastguard Worker /* Android File Descriptor Data Locator */ 156*bebae9c0SAndroid Build Coastguard Worker /*---------------------------------------------------------------------------*/ 157*bebae9c0SAndroid Build Coastguard Worker 158*bebae9c0SAndroid Build Coastguard Worker /** Addendum to Data locator macros */ 159*bebae9c0SAndroid Build Coastguard Worker #define XA_DATALOCATOR_ANDROIDFD ((XAuint32) 0x800007BC) 160*bebae9c0SAndroid Build Coastguard Worker 161*bebae9c0SAndroid Build Coastguard Worker #define XA_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((XAAint64) 0xFFFFFFFFFFFFFFFFll) 162*bebae9c0SAndroid Build Coastguard Worker 163*bebae9c0SAndroid Build Coastguard Worker /** File Descriptor-based data locator definition, locatorType must be XA_DATALOCATOR_ANDROIDFD */ 164*bebae9c0SAndroid Build Coastguard Worker typedef struct XADataLocator_AndroidFD_ { 165*bebae9c0SAndroid Build Coastguard Worker XAuint32 locatorType; 166*bebae9c0SAndroid Build Coastguard Worker XAint32 fd; 167*bebae9c0SAndroid Build Coastguard Worker XAAint64 offset; 168*bebae9c0SAndroid Build Coastguard Worker XAAint64 length; 169*bebae9c0SAndroid Build Coastguard Worker } XADataLocator_AndroidFD; 170*bebae9c0SAndroid Build Coastguard Worker 171*bebae9c0SAndroid Build Coastguard Worker /** 172*bebae9c0SAndroid Build Coastguard Worker * MIME types required for data in Android Buffer Queues 173*bebae9c0SAndroid Build Coastguard Worker */ 174*bebae9c0SAndroid Build Coastguard Worker #define XA_ANDROID_MIME_MP2TS ((XAchar *) "video/mp2ts") 175*bebae9c0SAndroid Build Coastguard Worker 176*bebae9c0SAndroid Build Coastguard Worker #ifdef __cplusplus 177*bebae9c0SAndroid Build Coastguard Worker } 178*bebae9c0SAndroid Build Coastguard Worker #endif /* __cplusplus */ 179*bebae9c0SAndroid Build Coastguard Worker 180*bebae9c0SAndroid Build Coastguard Worker #endif /* OPENMAX_AL_ANDROID_H_ */ 181