| /* | |
| * Copyright (C) 2010 The Android Open Source Project | |
| * | |
| * Licensed under the Apache License, Version 2.0 (the "License"); | |
| * you may not use this file except in compliance with the License. | |
| * You may obtain a copy of the License at | |
| * | |
| * http://www.apache.org/licenses/LICENSE-2.0 | |
| * | |
| * Unless required by applicable law or agreed to in writing, software | |
| * distributed under the License is distributed on an "AS IS" BASIS, | |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| * See the License for the specific language governing permissions and | |
| * limitations under the License. | |
| */ | |
| #ifndef WILHELM_SRC_DATA_H | |
| #define WILHELM_SRC_DATA_H | |
| /* Our own merged version of SLDataSource and SLDataSink */ | |
| typedef union { | |
| SLuint32 mLocatorType; | |
| SLDataLocator_Address mAddress; | |
| SLDataLocator_BufferQueue mBufferQueue; | |
| SLDataLocator_IODevice mIODevice; | |
| SLDataLocator_MIDIBufferQueue mMIDIBufferQueue; | |
| SLDataLocator_OutputMix mOutputMix; | |
| SLDataLocator_URI mURI; | |
| XADataLocator_NativeDisplay mNativeDisplay; | |
| #ifdef ANDROID | |
| SLDataLocator_AndroidFD mFD; | |
| SLDataLocator_AndroidBufferQueue mABQ; | |
| #endif | |
| } DataLocator; | |
| typedef union { | |
| SLuint32 mFormatType; | |
| SLDataFormat_PCM mPCM; | |
| SLAndroidDataFormat_PCM_EX mPCMEx; | |
| SLDataFormat_MIME mMIME; | |
| XADataFormat_RawImage mRawImage; | |
| } DataFormat; | |
| typedef struct { | |
| union { | |
| SLDataSource mSource; | |
| SLDataSink mSink; | |
| struct { | |
| DataLocator *pLocator; | |
| DataFormat *pFormat; | |
| } mNeutral; | |
| } u; | |
| DataLocator mLocator; | |
| DataFormat mFormat; | |
| } DataLocatorFormat; | |
| #define SL_DATALOCATOR_NULL 0 // application specified a NULL value for pLocator | |
| // (not a valid value for mLocatorType) | |
| #define XA_DATALOCATOR_NULL SL_DATALOCATOR_NULL | |
| #define SL_DATAFORMAT_NULL 0 // application specified a NULL value for pFormat | |
| // (not a valid value for mLocatorType) | |
| #define XA_DATAFORMAT_NULL SL_DATAFORMAT_NULL | |
| // bit masks used to configure the allowed data locators for a given data source or data sink | |
| #define DATALOCATOR_MASK_NONE 0L | |
| #define DATALOCATOR_MASK_NULL (1L << SL_DATALOCATOR_NULL) | |
| #define DATALOCATOR_MASK_URI (1L << SL_DATALOCATOR_URI) | |
| #define DATALOCATOR_MASK_ADDRESS (1L << SL_DATALOCATOR_ADDRESS) | |
| #define DATALOCATOR_MASK_IODEVICE (1L << SL_DATALOCATOR_IODEVICE) | |
| #define DATALOCATOR_MASK_OUTPUTMIX (1L << SL_DATALOCATOR_OUTPUTMIX) | |
| #define DATALOCATOR_MASK_NATIVEDISPLAY (1L << XA_DATALOCATOR_NATIVEDISPLAY) | |
| #define DATALOCATOR_MASK_BUFFERQUEUE (1L << SL_DATALOCATOR_BUFFERQUEUE) | |
| #define DATALOCATOR_MASK_MIDIBUFFERQUEUE (1L << SL_DATALOCATOR_MIDIBUFFERQUEUE) | |
| #define DATALOCATOR_MASK_ANDROIDFD \ | |
| (0x100L << (SL_DATALOCATOR_ANDROIDFD - SL_DATALOCATOR_ANDROIDFD)) | |
| #define DATALOCATOR_MASK_ANDROIDSIMPLEBUFFERQUEUE \ | |
| (0x100L << (SL_DATALOCATOR_ANDROIDSIMPLEBUFFERQUEUE - SL_DATALOCATOR_ANDROIDFD)) | |
| #define DATALOCATOR_MASK_ANDROIDBUFFERQUEUE \ | |
| (0x100L << (SL_DATALOCATOR_ANDROIDBUFFERQUEUE - SL_DATALOCATOR_ANDROIDFD)) | |
| #define DATALOCATOR_MASK_ALL 0x7FFL | |
| // bit masks used to configure the allowed data formats for a given data source or data sink | |
| #define DATAFORMAT_MASK_NONE 0L | |
| #define DATAFORMAT_MASK_NULL (1L << SL_DATAFORMAT_NULL) | |
| #define DATAFORMAT_MASK_MIME (1L << SL_DATAFORMAT_MIME) | |
| #define DATAFORMAT_MASK_PCM (1L << SL_DATAFORMAT_PCM) | |
| #define DATAFORMAT_MASK_PCM_EX (1L << SL_ANDROID_DATAFORMAT_PCM_EX) | |
| #define DATAFORMAT_MASK_RAWIMAGE (1L << XA_DATAFORMAT_RAWIMAGE) | |
| #define DATAFORMAT_MASK_ALL 0xFL | |
| extern SLresult checkDataSource(const char *name, const SLDataSource *pDataSrc, | |
| DataLocatorFormat *myDataSourceLocator, SLuint32 allowedDataLocatorMask, | |
| SLuint32 allowedDataFormatMask); | |
| extern SLresult checkDataSink(const char *name, const SLDataSink *pDataSink, | |
| DataLocatorFormat *myDataSinkLocator, SLuint32 allowedDataLocatorMask, | |
| SLuint32 allowedDataFormatMask); | |
| extern SLresult checkSourceSinkVsInterfacesCompatibility( | |
| const DataLocatorFormat *pSrcDataLocatorFormat, | |
| const DataLocatorFormat *pSinkDataLocatorFormat, | |
| const ClassTable *clazz, unsigned requiredMask); | |
| extern void freeDataLocatorFormat(DataLocatorFormat *dlf); | |
| /* For stream information storage */ | |
| typedef struct { | |
| XAuint32 domain; | |
| union { | |
| XAMediaContainerInformation containerInfo; | |
| XAVideoStreamInformation videoInfo; | |
| XAAudioStreamInformation audioInfo; | |
| XAImageStreamInformation imageInfo; | |
| XATimedTextStreamInformation textInfo; | |
| XAMIDIStreamInformation midiInfo; | |
| XAVendorStreamInformation vendorInfo; | |
| }; | |
| } StreamInfo; | |
| // FIXME a terrible hack until OpenMAX AL spec is updated | |
| #define XA_DOMAINTYPE_CONTAINER 0 | |
| #endif // WILHELM_SRC_DATA_H |