data.h revision 7965455f86c21d6e1f788b284f5fc829e82ff2b5
1/* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17/* Our own merged version of SLDataSource and SLDataSink */ 18 19typedef union { 20 SLuint32 mLocatorType; 21 SLDataLocator_Address mAddress; 22 SLDataLocator_BufferQueue mBufferQueue; 23 SLDataLocator_IODevice mIODevice; 24 SLDataLocator_MIDIBufferQueue mMIDIBufferQueue; 25 SLDataLocator_OutputMix mOutputMix; 26 SLDataLocator_URI mURI; 27 XADataLocator_NativeDisplay mNativeDisplay; 28#ifdef ANDROID 29 SLDataLocator_AndroidFD mFD; 30 SLDataLocator_AndroidBufferQueue mABQ; 31#endif 32} DataLocator; 33 34typedef union { 35 SLuint32 mFormatType; 36 SLDataFormat_PCM mPCM; 37 SLDataFormat_MIME mMIME; 38 XADataFormat_RawImage mRawImage; 39} DataFormat; 40 41typedef struct { 42 union { 43 SLDataSource mSource; 44 SLDataSink mSink; 45 struct { 46 DataLocator *pLocator; 47 DataFormat *pFormat; 48 } mNeutral; 49 } u; 50 DataLocator mLocator; 51 DataFormat mFormat; 52} DataLocatorFormat; 53 54#define SL_DATALOCATOR_NULL 0 // application specified a NULL value for pLocator 55 // (not a valid value for mLocatorType) 56#define XA_DATALOCATOR_NULL SL_DATALOCATOR_NULL 57#define SL_DATAFORMAT_NULL 0 // application specified a NULL value for pFormat 58 // (not a valid value for mLocatorType) 59#define XA_DATAFORMAT_NULL SL_DATAFORMAT_NULL 60 61// bit masks used to configure the allowed data locators for a given data source or data sink 62#define DATALOCATOR_MASK_NONE 0L 63#define DATALOCATOR_MASK_NULL (1L << SL_DATALOCATOR_NULL) 64#define DATALOCATOR_MASK_URI (1L << SL_DATALOCATOR_URI) 65#define DATALOCATOR_MASK_ADDRESS (1L << SL_DATALOCATOR_ADDRESS) 66#define DATALOCATOR_MASK_IODEVICE (1L << SL_DATALOCATOR_IODEVICE) 67#define DATALOCATOR_MASK_OUTPUTMIX (1L << SL_DATALOCATOR_OUTPUTMIX) 68#define DATALOCATOR_MASK_NATIVEDISPLAY (1L << XA_DATALOCATOR_NATIVEDISPLAY) 69#define DATALOCATOR_MASK_BUFFERQUEUE (1L << SL_DATALOCATOR_BUFFERQUEUE) 70#define DATALOCATOR_MASK_MIDIBUFFERQUEUE (1L << SL_DATALOCATOR_MIDIBUFFERQUEUE) 71#define DATALOCATOR_MASK_ANDROIDFD \ 72 (0x100L << (SL_DATALOCATOR_ANDROIDFD - SL_DATALOCATOR_ANDROIDFD)) 73#define DATALOCATOR_MASK_ANDROIDSIMPLEBUFFERQUEUE \ 74 (0x100L << (SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE - SL_DATALOCATOR_ANDROIDFD)) 75#define DATALOCATOR_MASK_ANDROIDBUFFERQUEUE \ 76 (0x100L << (SL_DATALOCATOR_ANDROIDBUFFERQUEUE - SL_DATALOCATOR_ANDROIDFD)) 77#define DATALOCATOR_MASK_ALL 0x7FFL 78 79// bit masks used to configure the allowed data formats for a given data source or data sink 80#define DATAFORMAT_MASK_NONE 0L 81#define DATAFORMAT_MASK_NULL (1L << SL_DATAFORMAT_NULL) 82#define DATAFORMAT_MASK_MIME (1L << SL_DATAFORMAT_MIME) 83#define DATAFORMAT_MASK_PCM (1L << SL_DATAFORMAT_PCM) 84#define DATAFORMAT_MASK_RAWIMAGE (1L << XA_DATAFORMAT_RAWIMAGE) 85#define DATAFORMAT_MASK_ALL 0xFL 86 87extern SLresult checkDataSource(const char *name, const SLDataSource *pDataSrc, 88 DataLocatorFormat *myDataSourceLocator, SLuint32 allowedDataLocatorMask, 89 SLuint32 allowedDataFormatMask); 90extern SLresult checkDataSink(const char *name, const SLDataSink *pDataSink, 91 DataLocatorFormat *myDataSinkLocator, SLuint32 allowedDataLocatorMask, 92 SLuint32 allowedDataFormatMask); 93extern SLresult checkSourceSinkVsInterfacesCompatibility( 94 const DataLocatorFormat *pSrcDataLocatorFormat, 95 const DataLocatorFormat *pSinkDataLocatorFormat, 96 const ClassTable *clazz, unsigned exposedMask); 97extern void freeDataLocatorFormat(DataLocatorFormat *dlf); 98 99 100/* For stream information storage */ 101typedef struct { 102 XAuint32 domain; 103 union { 104 XAMediaContainerInformation containerInfo; 105 XAVideoStreamInformation videoInfo; 106 XAAudioStreamInformation audioInfo; 107 XAImageStreamInformation imageInfo; 108 XATimedTextStreamInformation textInfo; 109 XAMIDIStreamInformation midiInfo; 110 XAVendorStreamInformation vendorInfo; 111 }; 112} StreamInfo; 113 114// FIXME a terrible hack until OpenMAX AL spec is updated 115#define XA_DOMAINTYPE_CONTAINER 0 116