/* * Copyright (c) 2007-2010 The Khronos Group Inc. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and/or associated documentation files (the * "Materials "), to deal in the Materials without restriction, including * without limitation the rights to use, copy, modify, merge, publish, * distribute, sublicense, and/or sell copies of the Materials, and to * permit persons to whom the Materials are furnished to do so, subject to * the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Materials. * * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. * * OpenMAXAL.h - OpenMAX AL version 1.0.1 * */ /****************************************************************************/ /* NOTE: This file is a standard OpenMAX AL header file and should not be */ /* modified in any way. */ /****************************************************************************/ #ifndef _OPENMAXAL_H_ #define _OPENMAXAL_H_ #ifdef __cplusplus extern "C" { #endif #include "OpenMAXAL_Platform.h" /*****************************************************************/ /* TYPES */ /*****************************************************************/ /* remap common types to XA types for clarity */ typedef xa_int8_t XAint8; /* 8 bit signed integer */ typedef xa_uint8_t XAuint8; /* 8 bit unsigned integer */ typedef xa_int16_t XAint16; /* 16 bit signed integer */ typedef xa_uint16_t XAuint16; /* 16 bit unsigned integer */ typedef xa_int32_t XAint32; /* 32 bit signed integer */ typedef xa_uint32_t XAuint32; /* 32 bit unsigned integer */ typedef xa_uint64_t XAuint64; /* 64 bit unsigned integer */ typedef XAuint32 XAboolean; typedef XAuint8 XAchar; typedef XAint16 XAmillibel; typedef XAuint32 XAmillisecond; typedef XAuint32 XAmilliHertz; typedef XAint32 XAmillimeter; typedef XAint32 XAmillidegree; typedef XAint16 XApermille; typedef XAuint32 XAmicrosecond; typedef XAuint64 XAtime; typedef XAuint32 XAresult; #define XA_BOOLEAN_FALSE ((XAuint32) 0x00000000) #define XA_BOOLEAN_TRUE ((XAuint32) 0x00000001) #define XA_MILLIBEL_MAX ((XAmillibel) 0x7FFF) #define XA_MILLIBEL_MIN ((XAmillibel) (-XA_MILLIBEL_MAX-1)) #define XA_MILLIHERTZ_MAX ((XAmilliHertz) 0xFFFFFFFF) #define XA_MILLIMETER_MAX ((XAmillimeter) 0x7FFFFFFF) /*****************************************************************/ /* RESULT CODES */ /*****************************************************************/ #define XA_RESULT_SUCCESS ((XAuint32) 0x00000000) #define XA_RESULT_PRECONDITIONS_VIOLATED ((XAuint32) 0x00000001) #define XA_RESULT_PARAMETER_INVALID ((XAuint32) 0x00000002) #define XA_RESULT_MEMORY_FAILURE ((XAuint32) 0x00000003) #define XA_RESULT_RESOURCE_ERROR ((XAuint32) 0x00000004) #define XA_RESULT_RESOURCE_LOST ((XAuint32) 0x00000005) #define XA_RESULT_IO_ERROR ((XAuint32) 0x00000006) #define XA_RESULT_BUFFER_INSUFFICIENT ((XAuint32) 0x00000007) #define XA_RESULT_CONTENT_CORRUPTED ((XAuint32) 0x00000008) #define XA_RESULT_CONTENT_UNSUPPORTED ((XAuint32) 0x00000009) #define XA_RESULT_CONTENT_NOT_FOUND ((XAuint32) 0x0000000A) #define XA_RESULT_PERMISSION_DENIED ((XAuint32) 0x0000000B) #define XA_RESULT_FEATURE_UNSUPPORTED ((XAuint32) 0x0000000C) #define XA_RESULT_INTERNAL_ERROR ((XAuint32) 0x0000000D) #define XA_RESULT_UNKNOWN_ERROR ((XAuint32) 0x0000000E) #define XA_RESULT_OPERATION_ABORTED ((XAuint32) 0x0000000F) #define XA_RESULT_CONTROL_LOST ((XAuint32) 0x00000010) /*****************************************************************/ /* INTERFACE ID DEFINITION */ /*****************************************************************/ /* Interface ID defined as a UUID */ typedef const struct XAInterfaceID_ { XAuint32 time_low; XAuint16 time_mid; XAuint16 time_hi_and_version; XAuint16 clock_seq; XAuint8 node[6]; } * XAInterfaceID; /* NULL Interface */ XA_API extern const XAInterfaceID XA_IID_NULL; /*****************************************************************/ /* GENERAL INTERFACES, STRUCTS AND DEFINES */ /*****************************************************************/ /* OBJECT */ #define XA_PRIORITY_LOWEST ((XAint32) (-0x7FFFFFFF-1)) #define XA_PRIORITY_VERYLOW ((XAint32) -0x60000000) #define XA_PRIORITY_LOW ((XAint32) -0x40000000) #define XA_PRIORITY_BELOWNORMAL ((XAint32) -0x20000000) #define XA_PRIORITY_NORMAL ((XAint32) 0x00000000) #define XA_PRIORITY_ABOVENORMAL ((XAint32) 0x20000000) #define XA_PRIORITY_HIGH ((XAint32) 0x40000000) #define XA_PRIORITY_VERYHIGH ((XAint32) 0x60000000) #define XA_PRIORITY_HIGHEST ((XAint32) 0x7FFFFFFF) #define XA_OBJECT_EVENT_RUNTIME_ERROR ((XAuint32) 0x00000001) #define XA_OBJECT_EVENT_ASYNC_TERMINATION ((XAuint32) 0x00000002) #define XA_OBJECT_EVENT_RESOURCES_LOST ((XAuint32) 0x00000003) #define XA_OBJECT_EVENT_RESOURCES_AVAILABLE ((XAuint32) 0x00000004) #define XA_OBJECT_EVENT_ITF_CONTROL_TAKEN ((XAuint32) 0x00000005) #define XA_OBJECT_EVENT_ITF_CONTROL_RETURNED ((XAuint32) 0x00000006) #define XA_OBJECT_EVENT_ITF_PARAMETERS_CHANGED ((XAuint32) 0x00000007) #define XA_OBJECT_STATE_UNREALIZED ((XAuint32) 0x00000001) #define XA_OBJECT_STATE_REALIZED ((XAuint32) 0x00000002) #define XA_OBJECT_STATE_SUSPENDED ((XAuint32) 0x00000003) XA_API extern const XAInterfaceID XA_IID_OBJECT; struct XAObjectItf_; typedef const struct XAObjectItf_ * const * XAObjectItf; typedef void (XAAPIENTRY * xaObjectCallback) ( XAObjectItf caller, const void * pContext, XAuint32 event, XAresult result, XAuint32 param, void * pInterface ); struct XAObjectItf_ { XAresult (*Realize) ( XAObjectItf self, XAboolean async ); XAresult (*Resume) ( XAObjectItf self, XAboolean async ); XAresult (*GetState) ( XAObjectItf self, XAuint32 * pState ); XAresult (*GetInterface) ( XAObjectItf self, const XAInterfaceID iid, void * pInterface ); XAresult (*RegisterCallback) ( XAObjectItf self, xaObjectCallback callback, void * pContext ); void (*AbortAsyncOperation) ( XAObjectItf self ); void (*Destroy) ( XAObjectItf self ); XAresult (*SetPriority) ( XAObjectItf self, XAint32 priority, XAboolean preemptable ); XAresult (*GetPriority) ( XAObjectItf self, XAint32 * pPriority, XAboolean * pPreemptable ); XAresult (*SetLossOfControlInterfaces) ( XAObjectItf self, XAint16 numInterfaces, XAInterfaceID * pInterfaceIDs, XAboolean enabled ); }; /* CONFIG EXTENSION */ XA_API extern const XAInterfaceID XA_IID_CONFIGEXTENSION; struct XAConfigExtensionsItf_; typedef const struct XAConfigExtensionsItf_ * const * XAConfigExtensionsItf; struct XAConfigExtensionsItf_ { XAresult (*SetConfiguration) ( XAConfigExtensionsItf self, const XAchar * configKey, XAuint32 valueSize, const void * pConfigValue ); XAresult (*GetConfiguration) ( XAConfigExtensionsItf self, const XAchar * configKey, XAuint32 * pValueSize, void * pConfigValue ); }; /* DYNAMIC INTERFACE MANAGEMENT */ #define XA_DYNAMIC_ITF_EVENT_RUNTIME_ERROR ((XAuint32) 0x00000001) #define XA_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION ((XAuint32) 0x00000002) #define XA_DYNAMIC_ITF_EVENT_RESOURCES_LOST ((XAuint32) 0x00000003) #define XA_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY ((XAuint32) 0x00000004) #define XA_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE ((XAuint32) 0x00000005) XA_API extern const XAInterfaceID XA_IID_DYNAMICINTERFACEMANAGEMENT; struct XADynamicInterfaceManagementItf_; typedef const struct XADynamicInterfaceManagementItf_ * const * XADynamicInterfaceManagementItf; typedef void (XAAPIENTRY * xaDynamicInterfaceManagementCallback) ( XADynamicInterfaceManagementItf caller, void * pContext, XAuint32 event, XAresult result, const XAInterfaceID iid ); struct XADynamicInterfaceManagementItf_ { XAresult (*AddInterface) ( XADynamicInterfaceManagementItf self, const XAInterfaceID iid, XAboolean aysnc ); XAresult (*RemoveInterface) ( XADynamicInterfaceManagementItf self, const XAInterfaceID iid ); XAresult (*ResumeInterface) ( XADynamicInterfaceManagementItf self, const XAInterfaceID iid, XAboolean aysnc ); XAresult (*RegisterCallback) ( XADynamicInterfaceManagementItf self, xaDynamicInterfaceManagementCallback callback, void * pContext ); }; /* DATA SOURCES/SINKS */ #define XA_DATAFORMAT_MIME ((XAuint32) 0x00000001) #define XA_DATAFORMAT_PCM ((XAuint32) 0x00000002) #define XA_DATAFORMAT_RAWIMAGE ((XAuint32) 0x00000003) #define XA_DATALOCATOR_URI ((XAuint32) 0x00000001) #define XA_DATALOCATOR_ADDRESS ((XAuint32) 0x00000002) #define XA_DATALOCATOR_IODEVICE ((XAuint32) 0x00000003) #define XA_DATALOCATOR_OUTPUTMIX ((XAuint32) 0x00000004) #define XA_DATALOCATOR_NATIVEDISPLAY ((XAuint32) 0x00000005) #define XA_DATALOCATOR_RESERVED6 ((XAuint32) 0x00000006) #define XA_DATALOCATOR_RESERVED7 ((XAuint32) 0x00000007) typedef struct XADataSink_ { void * pLocator; void * pFormat; } XADataSink; typedef struct XADataSource_ { void * pLocator; void * pFormat; } XADataSource; #define XA_CONTAINERTYPE_UNSPECIFIED ((XAuint32) 0x00000001) #define XA_CONTAINERTYPE_RAW ((XAuint32) 0x00000002) #define XA_CONTAINERTYPE_ASF ((XAuint32) 0x00000003) #define XA_CONTAINERTYPE_AVI ((XAuint32) 0x00000004) #define XA_CONTAINERTYPE_BMP ((XAuint32) 0x00000005) #define XA_CONTAINERTYPE_JPG ((XAuint32) 0x00000006) #define XA_CONTAINERTYPE_JPG2000 ((XAuint32) 0x00000007) #define XA_CONTAINERTYPE_M4A ((XAuint32) 0x00000008) #define XA_CONTAINERTYPE_MP3 ((XAuint32) 0x00000009) #define XA_CONTAINERTYPE_MP4 ((XAuint32) 0x0000000A) #define XA_CONTAINERTYPE_MPEG_ES ((XAuint32) 0x0000000B) #define XA_CONTAINERTYPE_MPEG_PS ((XAuint32) 0x0000000C) #define XA_CONTAINERTYPE_MPEG_TS ((XAuint32) 0x0000000D) #define XA_CONTAINERTYPE_QT ((XAuint32) 0x0000000E) #define XA_CONTAINERTYPE_WAV ((XAuint32) 0x0000000F) #define XA_CONTAINERTYPE_XMF_0 ((XAuint32) 0x00000010) #define XA_CONTAINERTYPE_XMF_1 ((XAuint32) 0x00000011) #define XA_CONTAINERTYPE_XMF_2 ((XAuint32) 0x00000012) #define XA_CONTAINERTYPE_XMF_3 ((XAuint32) 0x00000013) #define XA_CONTAINERTYPE_XMF_GENERIC ((XAuint32) 0x00000014) #define XA_CONTAINERTYPE_AMR ((XAuint32) 0x00000015) #define XA_CONTAINERTYPE_AAC ((XAuint32) 0x00000016) #define XA_CONTAINERTYPE_3GPP ((XAuint32) 0x00000017) #define XA_CONTAINERTYPE_3GA ((XAuint32) 0x00000018) #define XA_CONTAINERTYPE_RM ((XAuint32) 0x00000019) #define XA_CONTAINERTYPE_DMF ((XAuint32) 0x0000001A) #define XA_CONTAINERTYPE_SMF ((XAuint32) 0x0000001B) #define XA_CONTAINERTYPE_MOBILE_DLS ((XAuint32) 0x0000001C) #define XA_CONTAINERTYPE_OGG ((XAuint32) 0x0000001D) typedef struct XADataFormat_MIME_ { XAuint32 formatType; XAchar * mimeType; XAuint32 containerType; } XADataFormat_MIME; #define XA_BYTEORDER_BIGENDIAN ((XAuint32) 0x00000001) #define XA_BYTEORDER_LITTLEENDIAN ((XAuint32) 0x00000002) #define XA_SAMPLINGRATE_8 ((XAuint32) 8000000) #define XA_SAMPLINGRATE_11_025 ((XAuint32) 11025000) #define XA_SAMPLINGRATE_12 ((XAuint32) 12000000) #define XA_SAMPLINGRATE_16 ((XAuint32) 16000000) #define XA_SAMPLINGRATE_22_05 ((XAuint32) 22050000) #define XA_SAMPLINGRATE_24 ((XAuint32) 24000000) #define XA_SAMPLINGRATE_32 ((XAuint32) 32000000) #define XA_SAMPLINGRATE_44_1 ((XAuint32) 44100000) #define XA_SAMPLINGRATE_48 ((XAuint32) 48000000) #define XA_SAMPLINGRATE_64 ((XAuint32) 64000000) #define XA_SAMPLINGRATE_88_2 ((XAuint32) 88200000) #define XA_SAMPLINGRATE_96 ((XAuint32) 96000000) #define XA_SAMPLINGRATE_192 ((XAuint32) 192000000) #define XA_SPEAKER_FRONT_LEFT ((XAuint32) 0x00000001) #define XA_SPEAKER_FRONT_RIGHT ((XAuint32) 0x00000002) #define XA_SPEAKER_FRONT_CENTER ((XAuint32) 0x00000004) #define XA_SPEAKER_LOW_FREQUENCY ((XAuint32) 0x00000008) #define XA_SPEAKER_BACK_LEFT ((XAuint32) 0x00000010) #define XA_SPEAKER_BACK_RIGHT ((XAuint32) 0x00000020) #define XA_SPEAKER_FRONT_LEFT_OF_CENTER ((XAuint32) 0x00000040) #define XA_SPEAKER_FRONT_RIGHT_OF_CENTER ((XAuint32) 0x00000080) #define XA_SPEAKER_BACK_CENTER ((XAuint32) 0x00000100) #define XA_SPEAKER_SIDE_LEFT ((XAuint32) 0x00000200) #define XA_SPEAKER_SIDE_RIGHT ((XAuint32) 0x00000400) #define XA_SPEAKER_TOP_CENTER ((XAuint32) 0x00000800) #define XA_SPEAKER_TOP_FRONT_LEFT ((XAuint32) 0x00001000) #define XA_SPEAKER_TOP_FRONT_CENTER ((XAuint32) 0x00002000) #define XA_SPEAKER_TOP_FRONT_RIGHT ((XAuint32) 0x00004000) #define XA_SPEAKER_TOP_BACK_LEFT ((XAuint32) 0x00008000) #define XA_SPEAKER_TOP_BACK_CENTER ((XAuint32) 0x00010000) #define XA_SPEAKER_TOP_BACK_RIGHT ((XAuint32) 0x00020000) #define XA_PCMSAMPLEFORMAT_FIXED_8 ((XAuint16) 0x0008) #define XA_PCMSAMPLEFORMAT_FIXED_16 ((XAuint16) 0x0010) #define XA_PCMSAMPLEFORMAT_FIXED_20 ((XAuint16) 0x0014) #define XA_PCMSAMPLEFORMAT_FIXED_24 ((XAuint16) 0x0018) #define XA_PCMSAMPLEFORMAT_FIXED_28 ((XAuint16) 0x001C) #define XA_PCMSAMPLEFORMAT_FIXED_32 ((XAuint16) 0x0020) typedef struct XADataFormat_PCM_ { XAuint32 formatType; XAuint32 numChannels; XAuint32 samplesPerSec; XAuint32 bitsPerSample; XAuint32 containerSize; XAuint32 channelMask; XAuint32 endianness; } XADataFormat_PCM; #define XA_COLORFORMAT_UNUSED ((XAuint32) 0x00000000) #define XA_COLORFORMAT_MONOCHROME ((XAuint32) 0x00000001) #define XA_COLORFORMAT_8BITRGB332 ((XAuint32) 0x00000002) #define XA_COLORFORMAT_12BITRGB444 ((XAuint32) 0x00000003) #define XA_COLORFORMAT_16BITARGB4444 ((XAuint32) 0x00000004) #define XA_COLORFORMAT_16BITARGB1555 ((XAuint32) 0x00000005) #define XA_COLORFORMAT_16BITRGB565 ((XAuint32) 0x00000006) #define XA_COLORFORMAT_16BITBGR565 ((XAuint32) 0x00000007) #define XA_COLORFORMAT_18BITRGB666 ((XAuint32) 0x00000008) #define XA_COLORFORMAT_18BITARGB1665 ((XAuint32) 0x00000009) #define XA_COLORFORMAT_19BITARGB1666 ((XAuint32) 0x0000000A) #define XA_COLORFORMAT_24BITRGB888 ((XAuint32) 0x0000000B) #define XA_COLORFORMAT_24BITBGR888 ((XAuint32) 0x0000000C) #define XA_COLORFORMAT_24BITARGB1887 ((XAuint32) 0x0000000D) #define XA_COLORFORMAT_25BITARGB1888 ((XAuint32) 0x0000000E) #define XA_COLORFORMAT_32BITBGRA8888 ((XAuint32) 0x0000000F) #define XA_COLORFORMAT_32BITARGB8888 ((XAuint32) 0x00000010) #define XA_COLORFORMAT_YUV411PLANAR ((XAuint32) 0x00000011) #define XA_COLORFORMAT_YUV420PLANAR ((XAuint32) 0x00000013) #define XA_COLORFORMAT_YUV420SEMIPLANAR ((XAuint32) 0x00000015) #define XA_COLORFORMAT_YUV422PLANAR ((XAuint32) 0x00000016) #define XA_COLORFORMAT_YUV422SEMIPLANAR ((XAuint32) 0x00000018) #define XA_COLORFORMAT_YCBYCR ((XAuint32) 0x00000019) #define XA_COLORFORMAT_YCRYCB ((XAuint32) 0x0000001A) #define XA_COLORFORMAT_CBYCRY ((XAuint32) 0x0000001B) #define XA_COLORFORMAT_CRYCBY ((XAuint32) 0x0000001C) #define XA_COLORFORMAT_YUV444INTERLEAVED ((XAuint32) 0x0000001D) #define XA_COLORFORMAT_RAWBAYER8BIT ((XAuint32) 0x0000001E) #define XA_COLORFORMAT_RAWBAYER10BIT ((XAuint32) 0x0000001F) #define XA_COLORFORMAT_RAWBAYER8BITCOMPRESSED ((XAuint32) 0x00000020) #define XA_COLORFORMAT_L2 ((XAuint32) 0x00000021) #define XA_COLORFORMAT_L4 ((XAuint32) 0x00000022) #define XA_COLORFORMAT_L8 ((XAuint32) 0x00000023) #define XA_COLORFORMAT_L16 ((XAuint32) 0x00000024) #define XA_COLORFORMAT_L24 ((XAuint32) 0x00000025) #define XA_COLORFORMAT_L32 ((XAuint32) 0x00000026) #define XA_COLORFORMAT_18BITBGR666 ((XAuint32) 0x00000029) #define XA_COLORFORMAT_24BITARGB6666 ((XAuint32) 0x0000002A) #define XA_COLORFORMAT_24BITABGR6666 ((XAuint32) 0x0000002B) typedef struct XADataFormat_RawImage_ { XAuint32 formatType; XAuint32 colorFormat; XAuint32 height; XAuint32 width; XAuint32 stride; } XADataFormat_RawImage; typedef struct XADataLocator_Address_ { XAuint32 locatorType; void * pAddress; XAuint32 length; } XADataLocator_Address; #define XA_IODEVICE_AUDIOINPUT ((XAuint32) 0x00000001) #define XA_IODEVICE_LEDARRAY ((XAuint32) 0x00000002) #define XA_IODEVICE_VIBRA ((XAuint32) 0x00000003) #define XA_IODEVICE_CAMERA ((XAuint32) 0x00000004) #define XA_IODEVICE_RADIO ((XAuint32) 0x00000005) typedef struct XADataLocator_IODevice_ { XAuint32 locatorType; XAuint32 deviceType; XAuint32 deviceID; XAObjectItf device; } XADataLocator_IODevice; typedef void * XANativeHandle; typedef struct XADataLocator_NativeDisplay_{ XAuint32 locatorType; XANativeHandle hWindow; XANativeHandle hDisplay; } XADataLocator_NativeDisplay; typedef struct XADataLocator_OutputMix { XAuint32 locatorType; XAObjectItf outputMix; } XADataLocator_OutputMix; typedef struct XADataLocator_URI_ { XAuint32 locatorType; XAchar * URI; } XADataLocator_URI; /* ENGINE */ #define XA_DEFAULTDEVICEID_AUDIOINPUT ((XAuint32) 0xFFFFFFFF) #define XA_DEFAULTDEVICEID_AUDIOOUTPUT ((XAuint32) 0xFFFFFFFE) #define XA_DEFAULTDEVICEID_LED ((XAuint32) 0xFFFFFFFD) #define XA_DEFAULTDEVICEID_VIBRA ((XAuint32) 0xFFFFFFFC) #define XA_DEFAULTDEVICEID_CAMERA ((XAuint32) 0xFFFFFFFB) #define XA_ENGINEOPTION_THREADSAFE ((XAuint32) 0x00000001) #define XA_ENGINEOPTION_LOSSOFCONTROL ((XAuint32) 0x00000002) #define XA_OBJECTID_ENGINE ((XAuint32) 0x00000001) #define XA_OBJECTID_LEDDEVICE ((XAuint32) 0x00000002) #define XA_OBJECTID_VIBRADEVICE ((XAuint32) 0x00000003) #define XA_OBJECTID_MEDIAPLAYER ((XAuint32) 0x00000004) #define XA_OBJECTID_MEDIARECORDER ((XAuint32) 0x00000005) #define XA_OBJECTID_RADIODEVICE ((XAuint32) 0x00000006) #define XA_OBJECTID_OUTPUTMIX ((XAuint32) 0x00000007) #define XA_OBJECTID_METADATAEXTRACTOR ((XAuint32) 0x00000008) #define XA_OBJECTID_CAMERADEVICE ((XAuint32) 0x00000009) #define XA_PROFILES_MEDIA_PLAYER ((XAint16) 0x0001) #define XA_PROFILES_MEDIA_PLAYER_RECORDER ((XAint16) 0x0002) #define XA_PROFILES_PLUS_MIDI ((XAint16) 0x0004) typedef struct XAEngineOption_ { XAuint32 feature; XAuint32 data; } XAEngineOption; XA_API XAresult XAAPIENTRY xaCreateEngine( XAObjectItf * pEngine, XAuint32 numOptions, const XAEngineOption * pEngineOptions, XAuint32 numInterfaces, const XAInterfaceID * pInterfaceIds, const XAboolean * pInterfaceRequired ); XA_API XAresult XAAPIENTRY xaQueryNumSupportedEngineInterfaces( XAuint32 * pNumSupportedInterfaces ); XA_API XAresult XAAPIENTRY xaQuerySupportedEngineInterfaces( XAuint32 index, XAInterfaceID * pInterfaceId ); typedef struct XALEDDescriptor_ { XAuint8 ledCount; XAuint8 primaryLED; XAuint32 colorMask; } XALEDDescriptor; typedef struct XAVibraDescriptor_ { XAboolean supportsFrequency; XAboolean supportsIntensity; XAmilliHertz minFrequency; XAmilliHertz maxFrequency; } XAVibraDescriptor; XA_API extern const XAInterfaceID XA_IID_ENGINE; struct XAEngineItf_; typedef const struct XAEngineItf_ * const * XAEngineItf; struct XAEngineItf_ { XAresult (*CreateCameraDevice) ( XAEngineItf self, XAObjectItf * pDevice, XAuint32 deviceID, XAuint32 numInterfaces, const XAInterfaceID * pInterfaceIds, const XAboolean * pInterfaceRequired ); XAresult (*CreateRadioDevice) ( XAEngineItf self, XAObjectItf * pDevice, XAuint32 numInterfaces, const XAInterfaceID * pInterfaceIds, const XAboolean * pInterfaceRequired ); XAresult (*CreateLEDDevice) ( XAEngineItf self, XAObjectItf * pDevice, XAuint32 deviceID, XAuint32 numInterfaces, const XAInterfaceID * pInterfaceIds, const XAboolean * pInterfaceRequired ); XAresult (*CreateVibraDevice) ( XAEngineItf self, XAObjectItf * pDevice, XAuint32 deviceID, XAuint32 numInterfaces, const XAInterfaceID * pInterfaceIds, const XAboolean * pInterfaceRequired ); XAresult (*CreateMediaPlayer) ( XAEngineItf self, XAObjectItf * pPlayer, XADataSource * pDataSrc, XADataSource * pBankSrc, XADataSink * pAudioSnk, XADataSink * pImageVideoSnk, XADataSink * pVibra, XADataSink * pLEDArray, XAuint32 numInterfaces, const XAInterfaceID * pInterfaceIds, const XAboolean * pInterfaceRequired ); XAresult (*CreateMediaRecorder) ( XAEngineItf self, XAObjectItf * pRecorder, XADataSource * pAudioSrc, XADataSource * pImageVideoSrc, XADataSink * pDataSnk, XAuint32 numInterfaces, const XAInterfaceID * pInterfaceIds, const XAboolean * pInterfaceRequired ); XAresult (*CreateOutputMix) ( XAEngineItf self, XAObjectItf * pMix, XAuint32 numInterfaces, const XAInterfaceID * pInterfaceIds, const XAboolean * pInterfaceRequired ); XAresult (*CreateMetadataExtractor) ( XAEngineItf self, XAObjectItf * pMetadataExtractor, XADataSource * pDataSource, XAuint32 numInterfaces, const XAInterfaceID * pInterfaceIds, const XAboolean * pInterfaceRequired ); XAresult (*CreateExtensionObject) ( XAEngineItf self, XAObjectItf * pObject, void * pParameters, XAuint32 objectID, XAuint32 numInterfaces, const XAInterfaceID * pInterfaceIds, const XAboolean * pInterfaceRequired ); XAresult (*GetImplementationInfo) ( XAEngineItf self, XAuint32 * pMajor, XAuint32 * pMinor, XAuint32 * pStep, const XAchar * pImplementationText ); XAresult (*QuerySupportedProfiles) ( XAEngineItf self, XAint16 * pProfilesSupported ); XAresult (*QueryNumSupportedInterfaces) ( XAEngineItf self, XAuint32 objectID, XAuint32 * pNumSupportedInterfaces ); XAresult (*QuerySupportedInterfaces) ( XAEngineItf self, XAuint32 objectID, XAuint32 index, XAInterfaceID * pInterfaceId ); XAresult (*QueryNumSupportedExtensions) ( XAEngineItf self, XAuint32 * pNumExtensions ); XAresult (*QuerySupportedExtension) ( XAEngineItf self, XAuint32 index, XAchar * pExtensionName, XAint16 * pNameLength ); XAresult (*IsExtensionSupported) ( XAEngineItf self, const XAchar * pExtensionName, XAboolean * pSupported ); XAresult (*QueryLEDCapabilities) ( XAEngineItf self, XAuint32 *pIndex, XAuint32 * pLEDDeviceID, XALEDDescriptor * pDescriptor ); XAresult (*QueryVibraCapabilities) ( XAEngineItf self, XAuint32 *pIndex, XAuint32 * pVibraDeviceID, XAVibraDescriptor * pDescriptor ); }; /* THREAD SYNC */ XA_API extern const XAInterfaceID XA_IID_THREADSYNC; struct XAThreadSyncItf_; typedef const struct XAThreadSyncItf_ * const * XAThreadSyncItf; struct XAThreadSyncItf_ { XAresult (*EnterCriticalSection) ( XAThreadSyncItf self ); XAresult (*ExitCriticalSection) ( XAThreadSyncItf self ); }; /*****************************************************************/ /* PLAYBACK RELATED INTERFACES, STRUCTS AND DEFINES */ /*****************************************************************/ /* PLAY */ #define XA_TIME_UNKNOWN ((XAuint32) 0xFFFFFFFF) #define XA_PLAYEVENT_HEADATEND ((XAuint32) 0x00000001) #define XA_PLAYEVENT_HEADATMARKER ((XAuint32) 0x00000002) #define XA_PLAYEVENT_HEADATNEWPOS ((XAuint32) 0x00000004) #define XA_PLAYEVENT_HEADMOVING ((XAuint32) 0x00000008) #define XA_PLAYEVENT_HEADSTALLED ((XAuint32) 0x00000010) #define XA_PLAYSTATE_STOPPED ((XAuint32) 0x00000001) #define XA_PLAYSTATE_PAUSED ((XAuint32) 0x00000002) #define XA_PLAYSTATE_PLAYING ((XAuint32) 0x00000003) #define XA_PREFETCHEVENT_STATUSCHANGE ((XAuint32) 0x00000001) #define XA_PREFETCHEVENT_FILLLEVELCHANGE ((XAuint32) 0x00000002) #define XA_PREFETCHSTATUS_UNDERFLOW ((XAuint32) 0x00000001) #define XA_PREFETCHSTATUS_SUFFICIENTDATA ((XAuint32) 0x00000002) #define XA_PREFETCHSTATUS_OVERFLOW ((XAuint32) 0x00000003) #define XA_SEEKMODE_FAST ((XAuint32) 0x0001) #define XA_SEEKMODE_ACCURATE ((XAuint32) 0x0002) XA_API extern const XAInterfaceID XA_IID_PLAY; struct XAPlayItf_; typedef const struct XAPlayItf_ * const * XAPlayItf; typedef void (XAAPIENTRY * xaPlayCallback) ( XAPlayItf caller, void * pContext, XAuint32 event ); struct XAPlayItf_ { XAresult (*SetPlayState) ( XAPlayItf self, XAuint32 state ); XAresult (*GetPlayState) ( XAPlayItf self, XAuint32 * pState ); XAresult (*GetDuration) ( XAPlayItf self, XAmillisecond * pMsec ); XAresult (*GetPosition) ( XAPlayItf self, XAmillisecond * pMsec ); XAresult (*RegisterCallback) ( XAPlayItf self, xaPlayCallback callback, void * pContext ); XAresult (*SetCallbackEventsMask) ( XAPlayItf self, XAuint32 eventFlags ); XAresult (*GetCallbackEventsMask) ( XAPlayItf self, XAuint32 * pEventFlags ); XAresult (*SetMarkerPosition) ( XAPlayItf self, XAmillisecond mSec ); XAresult (*ClearMarkerPosition) ( XAPlayItf self ); XAresult (*GetMarkerPosition) ( XAPlayItf self, XAmillisecond * pMsec ); XAresult (*SetPositionUpdatePeriod) ( XAPlayItf self, XAmillisecond mSec ); XAresult (*GetPositionUpdatePeriod) ( XAPlayItf self, XAmillisecond * pMsec ); }; /* PLAYBACK RATE */ #define XA_RATEPROP_STAGGEREDVIDEO ((XAuint32) 0x00000001) #define XA_RATEPROP_SMOOTHVIDEO ((XAuint32) 0x00000002) #define XA_RATEPROP_SILENTAUDIO ((XAuint32) 0x00000100) #define XA_RATEPROP_STAGGEREDAUDIO ((XAuint32) 0x00000200) #define XA_RATEPROP_NOPITCHCORAUDIO ((XAuint32) 0x00000400) #define XA_RATEPROP_PITCHCORAUDIO ((XAuint32) 0x00000800) XA_API extern const XAInterfaceID XA_IID_PLAYBACKRATE; struct XAPlaybackRateItf_; typedef const struct XAPlaybackRateItf_ * const * XAPlaybackRateItf; struct XAPlaybackRateItf_ { XAresult (*SetRate) ( XAPlaybackRateItf self, XApermille rate ); XAresult (*GetRate) ( XAPlaybackRateItf self, XApermille * pRate ); XAresult (*SetPropertyConstraints) ( XAPlaybackRateItf self, XAuint32 constraints ); XAresult (*GetProperties) ( XAPlaybackRateItf self, XAuint32 * pProperties ); XAresult (*GetCapabilitiesOfRate) ( XAPlaybackRateItf self, XApermille rate, XAuint32 * pCapabilities ); XAresult (*GetRateRange) ( XAPlaybackRateItf self, XAuint8 index, XApermille * pMinRate, XApermille * pMaxRate, XApermille * pStepSize, XAuint32 * pCapabilities ); }; /* PREFETCH STATUS */ XA_API extern const XAInterfaceID XA_IID_PREFETCHSTATUS; struct XAPrefetchStatusItf_; typedef const struct XAPrefetchStatusItf_ * const * XAPrefetchStatusItf; typedef void (XAAPIENTRY * xaPrefetchCallback) ( XAPrefetchStatusItf caller, void * pContext, XAuint32 event ); struct XAPrefetchStatusItf_ { XAresult (*GetPrefetchStatus) ( XAPrefetchStatusItf self, XAuint32 * pStatus ); XAresult (*GetFillLevel) ( XAPrefetchStatusItf self, XApermille * pLevel ); XAresult (*RegisterCallback) ( XAPrefetchStatusItf self, xaPrefetchCallback callback, void * pContext ); XAresult (*SetCallbackEventsMask) ( XAPrefetchStatusItf self, XAuint32 eventFlags ); XAresult (*GetCallbackEventsMask) ( XAPrefetchStatusItf self, XAuint32 * pEventFlags ); XAresult (*SetFillUpdatePeriod) ( XAPrefetchStatusItf self, XApermille period ); XAresult (*GetFillUpdatePeriod) ( XAPrefetchStatusItf self, XApermille * pPeriod ); }; /* SEEK */ XA_API extern const XAInterfaceID XA_IID_SEEK; struct XASeekItf_; typedef const struct XASeekItf_ * const * XASeekItf; struct XASeekItf_ { XAresult (*SetPosition) ( XASeekItf self, XAmillisecond pos, XAuint32 seekMode ); XAresult (*SetLoop) ( XASeekItf self, XAboolean loopEnable, XAmillisecond startPos, XAmillisecond endPos ); XAresult (*GetLoop) ( XASeekItf self, XAboolean * pLoopEnabled, XAmillisecond * pStartPos, XAmillisecond * pEndPos ); }; /* VOLUME */ XA_API extern const XAInterfaceID XA_IID_VOLUME; struct XAVolumeItf_; typedef const struct XAVolumeItf_ * const * XAVolumeItf; struct XAVolumeItf_ { XAresult (*SetVolumeLevel) ( XAVolumeItf self, XAmillibel level ); XAresult (*GetVolumeLevel) ( XAVolumeItf self, XAmillibel * pLevel ); XAresult (*GetMaxVolumeLevel) ( XAVolumeItf self, XAmillibel * pMaxLevel ); XAresult (*SetMute) ( XAVolumeItf self, XAboolean mute ); XAresult (*GetMute) ( XAVolumeItf self, XAboolean * pMute ); XAresult (*EnableStereoPosition) ( XAVolumeItf self, XAboolean enable ); XAresult (*IsEnabledStereoPosition) ( XAVolumeItf self, XAboolean * pEnable ); XAresult (*SetStereoPosition) ( XAVolumeItf self, XApermille stereoPosition ); XAresult (*GetStereoPosition) ( XAVolumeItf self, XApermille * pStereoPosition ); }; /* IMAGE CONTROL */ XA_API extern const XAInterfaceID XA_IID_IMAGECONTROLS; struct XAImageControlsItf_; typedef const struct XAImageControlsItf_ * const * XAImageControlsItf; struct XAImageControlsItf_ { XAresult (*SetBrightness) ( XAImageControlsItf self, XAuint32 brightness ); XAresult (*GetBrightness) ( XAImageControlsItf self, XAuint32 * pBrightness ); XAresult (*SetContrast) ( XAImageControlsItf self, XAint32 contrast ); XAresult (*GetContrast) ( XAImageControlsItf self, XAint32 * pContrast ); XAresult (*SetGamma) ( XAImageControlsItf self, XApermille gamma ); XAresult (*GetGamma) ( XAImageControlsItf self, XApermille * pGamma ); XAresult (*GetSupportedGammaSettings) ( XAImageControlsItf self, XApermille * pMinValue, XApermille * pMaxValue, XAuint32 * pNumSettings, XApermille ** ppSettings ); }; /* IMAGE EFFECT */ #define XA_IMAGEEFFECT_MONOCHROME ((XAuint32) 0x00000001) #define XA_IMAGEEFFECT_NEGATIVE ((XAuint32) 0x00000002) #define XA_IMAGEEFFECT_SEPIA ((XAuint32) 0x00000003) #define XA_IMAGEEFFECT_EMBOSS ((XAuint32) 0x00000004) #define XA_IMAGEEFFECT_PAINTBRUSH ((XAuint32) 0x00000005) #define XA_IMAGEEFFECT_SOLARIZE ((XAuint32) 0x00000006) #define XA_IMAGEEFFECT_CARTOON ((XAuint32) 0x00000007) XA_API extern const XAInterfaceID XA_IID_IMAGEEFFECTS; struct XAImageEffectsItf_; typedef const struct XAImageEffectsItf_ * const * XAImageEffectsItf; struct XAImageEffectsItf_ { XAresult (*QuerySupportedImageEffects) ( XAImageEffectsItf self, XAuint32 index, XAuint32 * pImageEffectId ); XAresult (*EnableImageEffect) ( XAImageEffectsItf self, XAuint32 imageEffectID ); XAresult (*DisableImageEffect) ( XAImageEffectsItf self, XAuint32 imageEffectID ); XAresult (*IsImageEffectEnabled) ( XAImageEffectsItf self, XAuint32 imageEffectID, XAboolean * pEnabled ); }; /* VIDEO POST PROCESSING */ #define XA_VIDEOMIRROR_NONE ((XAuint32) 0x00000001) #define XA_VIDEOMIRROR_VERTICAL ((XAuint32) 0x00000002) #define XA_VIDEOMIRROR_HORIZONTAL ((XAuint32) 0x00000003) #define XA_VIDEOMIRROR_BOTH ((XAuint32) 0x00000004) #define XA_VIDEOSCALE_STRETCH ((XAuint32) 0x00000001) #define XA_VIDEOSCALE_FIT ((XAuint32) 0x00000002) #define XA_VIDEOSCALE_CROP ((XAuint32) 0x00000003) #define XA_RENDERINGHINT_NONE ((XAuint32) 0x00000000) #define XA_RENDERINGHINT_ANTIALIASING ((XAuint32) 0x00000001) typedef struct XARectangle_ { XAuint32 left; XAuint32 top; XAuint32 width; XAuint32 height; } XARectangle; XA_API extern const XAInterfaceID XA_IID_VIDEOPOSTPROCESSING; struct XAVideoPostProcessingItf_; typedef const struct XAVideoPostProcessingItf_ * const * XAVideoPostProcessingItf; struct XAVideoPostProcessingItf_ { XAresult (*SetRotation) ( XAVideoPostProcessingItf self, XAmillidegree rotation ); XAresult (*IsArbitraryRotationSupported) ( XAVideoPostProcessingItf self, XAboolean *pSupported ); XAresult (*SetScaleOptions) ( XAVideoPostProcessingItf self, XAuint32 scaleOptions, XAuint32 backgroundColor, XAuint32 renderingHints ); XAresult (*SetSourceRectangle) ( XAVideoPostProcessingItf self, const XARectangle *pSrcRect ); XAresult (*SetDestinationRectangle) ( XAVideoPostProcessingItf self, const XARectangle *pDestRect ); XAresult (*SetMirror) ( XAVideoPostProcessingItf self, XAuint32 mirror ); XAresult (*Commit) ( XAVideoPostProcessingItf self ); }; /*****************************************************************/ /* CAPTURING INTERFACES, STRUCTS AND DEFINES */ /*****************************************************************/ /* RECORD */ #define XA_RECORDEVENT_HEADATLIMIT ((XAuint32) 0x00000001) #define XA_RECORDEVENT_HEADATMARKER ((XAuint32) 0x00000002) #define XA_RECORDEVENT_HEADATNEWPOS ((XAuint32) 0x00000004) #define XA_RECORDEVENT_HEADMOVING ((XAuint32) 0x00000008) #define XA_RECORDEVENT_HEADSTALLED ((XAuint32) 0x00000010) #define XA_RECORDEVENT_BUFFER_FULL ((XAuint32) 0x00000020) #define XA_RECORDSTATE_STOPPED ((XAuint32) 0x00000001) #define XA_RECORDSTATE_PAUSED ((XAuint32) 0x00000002) #define XA_RECORDSTATE_RECORDING ((XAuint32) 0x00000003) XA_API extern const XAInterfaceID XA_IID_RECORD; struct XARecordItf_; typedef const struct XARecordItf_ * const * XARecordItf; typedef void (XAAPIENTRY * xaRecordCallback) ( XARecordItf caller, void * pContext, XAuint32 event ); struct XARecordItf_ { XAresult (*SetRecordState) ( XARecordItf self, XAuint32 state ); XAresult (*GetRecordState) ( XARecordItf self, XAuint32 * pState ); XAresult (*SetDurationLimit) ( XARecordItf self, XAmillisecond msec ); XAresult (*GetPosition) ( XARecordItf self, XAmillisecond * pMsec ); XAresult (*RegisterCallback) ( XARecordItf self, xaRecordCallback callback, void * pContext ); XAresult (*SetCallbackEventsMask) ( XARecordItf self, XAuint32 eventFlags ); XAresult (*GetCallbackEventsMask) ( XARecordItf self, XAuint32 * pEventFlags ); XAresult (*SetMarkerPosition) ( XARecordItf self, XAmillisecond mSec ); XAresult (*ClearMarkerPosition) ( XARecordItf self ); XAresult (*GetMarkerPosition) ( XARecordItf self, XAmillisecond * pMsec ); XAresult (*SetPositionUpdatePeriod) ( XARecordItf self, XAmillisecond mSec ); XAresult (*GetPositionUpdatePeriod) ( XARecordItf self, XAmillisecond * pMsec ); }; /* SNAPSHOT */ XA_API extern const XAInterfaceID XA_IID_SNAPSHOT; struct XASnapshotItf_; typedef const struct XASnapshotItf_ * const * XASnapshotItf; typedef void (XAAPIENTRY * xaSnapshotInitiatedCallback) ( XASnapshotItf caller, void * context ); typedef void (XAAPIENTRY * xaSnapshotTakenCallback) ( XASnapshotItf caller, void * context, XAuint32 numberOfPicsTaken, const XADataSink * image ); struct XASnapshotItf_ { XAresult (*InitiateSnapshot) ( XASnapshotItf self, XAuint32 numberOfPictures, XAuint32 fps, XAboolean freezeViewFinder, XADataSink sink, xaSnapshotInitiatedCallback initiatedCallback, xaSnapshotTakenCallback takenCallback, void * pContext ); XAresult (*TakeSnapshot) ( XASnapshotItf self ); XAresult (*CancelSnapshot) ( XASnapshotItf self ); XAresult (*ReleaseBuffers) ( XASnapshotItf self, XADataSink * image ); XAresult (*GetMaxPicsPerBurst) ( XASnapshotItf self, XAuint32 * maxNumberOfPictures ); XAresult (*GetBurstFPSRange) ( XASnapshotItf self, XAuint32 * minFPS, XAuint32 * maxFPS ); XAresult (*SetShutterFeedback) ( XASnapshotItf self, XAboolean enabled ); XAresult (*GetShutterFeedback) ( XASnapshotItf self, XAboolean * enabled ); }; /*****************************************************************/ /* METADATA RELATED INTERFACES, STRUCTS AND DEFINES */ /*****************************************************************/ /* METADATA (EXTRACTION, INSERTION, TRAVERSAL) */ #define XA_NODE_PARENT ((XAuint32) 0xFFFFFFFF) #define XA_ROOT_NODE_ID ((XAint32) 0x7FFFFFFF) #define XA_NODETYPE_UNSPECIFIED ((XAuint32) 0x00000001) #define XA_NODETYPE_AUDIO ((XAuint32) 0x00000002) #define XA_NODETYPE_VIDEO ((XAuint32) 0x00000003) #define XA_NODETYPE_IMAGE ((XAuint32) 0x00000004) #define XA_CHARACTERENCODING_UNKNOWN ((XAuint32) 0x00000000) #define XA_CHARACTERENCODING_BINARY ((XAuint32) 0x00000001) #define XA_CHARACTERENCODING_ASCII ((XAuint32) 0x00000002) #define XA_CHARACTERENCODING_BIG5 ((XAuint32) 0x00000003) #define XA_CHARACTERENCODING_CODEPAGE1252 ((XAuint32) 0x00000004) #define XA_CHARACTERENCODING_GB2312 ((XAuint32) 0x00000005) #define XA_CHARACTERENCODING_HZGB2312 ((XAuint32) 0x00000006) #define XA_CHARACTERENCODING_GB12345 ((XAuint32) 0x00000007) #define XA_CHARACTERENCODING_GB18030 ((XAuint32) 0x00000008) #define XA_CHARACTERENCODING_GBK ((XAuint32) 0x00000009) #define XA_CHARACTERENCODING_IMAPUTF7 ((XAuint32) 0x0000000A) #define XA_CHARACTERENCODING_ISO2022JP ((XAuint32) 0x0000000B) #define XA_CHARACTERENCODING_ISO2022JP1 ((XAuint32) 0x0000000B) #define XA_CHARACTERENCODING_ISO88591 ((XAuint32) 0x0000000C) #define XA_CHARACTERENCODING_ISO885910 ((XAuint32) 0x0000000D) #define XA_CHARACTERENCODING_ISO885913 ((XAuint32) 0x0000000E) #define XA_CHARACTERENCODING_ISO885914 ((XAuint32) 0x0000000F) #define XA_CHARACTERENCODING_ISO885915 ((XAuint32) 0x00000010) #define XA_CHARACTERENCODING_ISO88592 ((XAuint32) 0x00000011) #define XA_CHARACTERENCODING_ISO88593 ((XAuint32) 0x00000012) #define XA_CHARACTERENCODING_ISO88594 ((XAuint32) 0x00000013) #define XA_CHARACTERENCODING_ISO88595 ((XAuint32) 0x00000014) #define XA_CHARACTERENCODING_ISO88596 ((XAuint32) 0x00000015) #define XA_CHARACTERENCODING_ISO88597 ((XAuint32) 0x00000016) #define XA_CHARACTERENCODING_ISO88598 ((XAuint32) 0x00000017) #define XA_CHARACTERENCODING_ISO88599 ((XAuint32) 0x00000018) #define XA_CHARACTERENCODING_ISOEUCJP ((XAuint32) 0x00000019) #define XA_CHARACTERENCODING_SHIFTJIS ((XAuint32) 0x0000001A) #define XA_CHARACTERENCODING_SMS7BIT ((XAuint32) 0x0000001B) #define XA_CHARACTERENCODING_UTF7 ((XAuint32) 0x0000001C) #define XA_CHARACTERENCODING_UTF8 ((XAuint32) 0x0000001D) #define XA_CHARACTERENCODING_JAVACONFORMANTUTF8 ((XAuint32) 0x0000001E) #define XA_CHARACTERENCODING_UTF16BE ((XAuint32) 0x0000001F) #define XA_CHARACTERENCODING_UTF16LE ((XAuint32) 0x00000020) #define XA_METADATA_FILTER_KEY ((XAuint8) 0x01) #define XA_METADATA_FILTER_LANG ((XAuint8) 0x02) #define XA_METADATA_FILTER_ENCODING ((XAuint8) 0x04) #define XA_METADATATRAVERSALMODE_ALL ((XAuint32) 0x00000001) #define XA_METADATATRAVERSALMODE_NODE ((XAuint32) 0x00000002) #ifndef _KHRONOS_KEYS_ #define _KHRONOS_KEYS_ #define KHRONOS_TITLE "KhronosTitle" #define KHRONOS_ALBUM "KhronosAlbum" #define KHRONOS_TRACK_NUMBER "KhronosTrackNumber" #define KHRONOS_ARTIST "KhronosArtist" #define KHRONOS_GENRE "KhronosGenre" #define KHRONOS_YEAR "KhronosYear" #define KHRONOS_COMMENT "KhronosComment" #define KHRONOS_ARTIST_URL "KhronosArtistURL" #define KHRONOS_CONTENT_URL "KhronosContentURL" #define KHRONOS_RATING "KhronosRating" #define KHRONOS_ALBUM_ART "KhronosAlbumArt" #define KHRONOS_COPYRIGHT "KhronosCopyright" #endif /* _KHRONOS_KEYS_ */ typedef struct XAMetadataInfo_ { XAuint32 size; XAuint32 encoding; const XAchar langCountry[16]; XAuint8 data[1]; } XAMetadataInfo; XA_API extern const XAInterfaceID XA_IID_METADATAEXTRACTION; struct XAMetadataExtractionItf_; typedef const struct XAMetadataExtractionItf_ * const * XAMetadataExtractionItf; struct XAMetadataExtractionItf_ { XAresult (*GetItemCount) ( XAMetadataExtractionItf self, XAuint32 * pItemCount ); XAresult (*GetKeySize) ( XAMetadataExtractionItf self, XAuint32 index, XAuint32 * pKeySize ); XAresult (*GetKey) ( XAMetadataExtractionItf self, XAuint32 index, XAuint32 keySize, XAMetadataInfo * pKey ); XAresult (*GetValueSize) ( XAMetadataExtractionItf self, XAuint32 index, XAuint32 * pValueSize ); XAresult (*GetValue) ( XAMetadataExtractionItf self, XAuint32 index, XAuint32 valueSize, XAMetadataInfo * pValue ); XAresult (*AddKeyFilter) ( XAMetadataExtractionItf self, XAuint32 keySize, const void * pKey, XAuint32 keyEncoding, const XAchar * pValueLangCountry, XAuint32 valueEncoding, XAuint8 filterMask ); XAresult (*ClearKeyFilter) ( XAMetadataExtractionItf self ); }; XA_API extern const XAInterfaceID XA_IID_METADATAINSERTION; struct XAMetadataInsertionItf_; typedef const struct XAMetadataInsertionItf_ * const * XAMetadataInsertionItf; typedef void (XAAPIENTRY * xaMetadataInsertionCallback) ( XAMetadataInsertionItf caller, void * pContext, XAMetadataInfo * pKey, XAMetadataInfo * pValue, XAint32 nodeID, XAboolean result ); struct XAMetadataInsertionItf_ { XAresult (*CreateChildNode) ( XAMetadataInsertionItf self, XAint32 parentNodeID, XAuint32 type, XAchar * mimeType, XAint32 * pChildNodeID ); XAresult (*GetSupportedKeysCount) ( XAMetadataInsertionItf self, XAint32 nodeID, XAboolean * pFreeKeys, XAuint32 * pKeyCount, XAuint32 * pEncodingCount ); XAresult (*GetKeySize) ( XAMetadataInsertionItf self, XAint32 nodeID, XAuint32 keyIndex, XAuint32 * pKeySize ); XAresult (*GetKey) ( XAMetadataInsertionItf self, XAint32 nodeID, XAuint32 keyIndex, XAuint32 keySize, XAMetadataInfo * pKey ); XAresult (*GetFreeKeysEncoding) ( XAMetadataInsertionItf self, XAint32 nodeID, XAuint32 encodingIndex, XAuint32 * pEncoding ); XAresult (*InsertMetadataItem) ( XAMetadataInsertionItf self, XAint32 nodeID, XAMetadataInfo * pKey, XAMetadataInfo * pValue, XAboolean overwrite ); XAresult (*RegisterCallback) ( XAMetadataInsertionItf self, xaMetadataInsertionCallback callback, void * pContext ); }; XA_API extern const XAInterfaceID XA_IID_METADATATRAVERSAL; struct XAMetadataTraversalItf_; typedef const struct XAMetadataTraversalItf_ * const * XAMetadataTraversalItf; struct XAMetadataTraversalItf_ { XAresult (*SetMode) ( XAMetadataTraversalItf self, XAuint32 mode ); XAresult (*GetChildCount) ( XAMetadataTraversalItf self, XAuint32 * pCount ); XAresult (*GetChildMIMETypeSize) ( XAMetadataTraversalItf self, XAuint32 index, XAuint32 * pSize ); XAresult (*GetChildInfo) ( XAMetadataTraversalItf self, XAuint32 index, XAint32 * pNodeID, XAuint32 * pType, XAuint32 size, XAchar * pMimeType ); XAresult (*SetActiveNode) ( XAMetadataTraversalItf self, XAuint32 index ); }; /* DYNAMIC SOURCE */ XA_API extern const XAInterfaceID XA_IID_DYNAMICSOURCE; struct XADynamicSourceItf_; typedef const struct XADynamicSourceItf_ * const * XADynamicSourceItf; struct XADynamicSourceItf_ { XAresult (*SetSource) ( XADynamicSourceItf self, XADataSource * pDataSource ); }; /*****************************************************************/ /* I/O DEVICES RELATED INTERFACES, STRUCTS AND DEFINES */ /*****************************************************************/ /* CAMERA AND CAMERA CAPABILITIES */ #define XA_CAMERA_APERTUREMODE_MANUAL ((XAuint32) 0x00000001) #define XA_CAMERA_APERTUREMODE_AUTO ((XAuint32) 0x00000002) #define XA_CAMERA_AUTOEXPOSURESTATUS_SUCCESS ((XAuint32) 0x00000001) #define XA_CAMERA_AUTOEXPOSURESTATUS_UNDEREXPOSURE ((XAuint32) 0x00000002) #define XA_CAMERA_AUTOEXPOSURESTATUS_OVEREXPOSURE ((XAuint32) 0x00000003) #define XA_CAMERACBEVENT_ROTATION ((XAuint32) 0x00000001) #define XA_CAMERACBEVENT_FLASHREADY ((XAuint32) 0x00000002) #define XA_CAMERACBEVENT_FOCUSSTATUS ((XAuint32) 0x00000003) #define XA_CAMERACBEVENT_EXPOSURESTATUS ((XAuint32) 0x00000004) #define XA_CAMERACBEVENT_WHITEBALANCELOCKED ((XAuint32) 0x00000005) #define XA_CAMERACBEVENT_ZOOMSTATUS ((XAuint32) 0x00000006) #define XA_CAMERACAP_FLASH ((XAuint32) 0x00000001) #define XA_CAMERACAP_AUTOFOCUS ((XAuint32) 0x00000002) #define XA_CAMERACAP_CONTINUOUSAUTOFOCUS ((XAuint32) 0x00000004) #define XA_CAMERACAP_MANUALFOCUS ((XAuint32) 0x00000008) #define XA_CAMERACAP_AUTOEXPOSURE ((XAuint32) 0x00000010) #define XA_CAMERACAP_MANUALEXPOSURE ((XAuint32) 0x00000020) #define XA_CAMERACAP_AUTOISOSENSITIVITY ((XAuint32) 0x00000040) #define XA_CAMERACAP_MANUALISOSENSITIVITY ((XAuint32) 0x00000080) #define XA_CAMERACAP_AUTOAPERTURE ((XAuint32) 0x00000100) #define XA_CAMERACAP_MANUALAPERTURE ((XAuint32) 0x00000200) #define XA_CAMERACAP_AUTOSHUTTERSPEED ((XAuint32) 0x00000400) #define XA_CAMERACAP_MANUALSHUTTERSPEED ((XAuint32) 0x00000800) #define XA_CAMERACAP_AUTOWHITEBALANCE ((XAuint32) 0x00001000) #define XA_CAMERACAP_MANUALWHITEBALANCE ((XAuint32) 0x00002000) #define XA_CAMERACAP_OPTICALZOOM ((XAuint32) 0x00004000) #define XA_CAMERACAP_DIGITALZOOM ((XAuint32) 0x00008000) #define XA_CAMERACAP_METERING ((XAuint32) 0x00010000) #define XA_CAMERACAP_BRIGHTNESS ((XAuint32) 0x00020000) #define XA_CAMERACAP_CONTRAST ((XAuint32) 0x00040000) #define XA_CAMERACAP_GAMMA ((XAuint32) 0x00080000) #define XA_CAMERA_EXPOSUREMODE_MANUAL ((XAuint32) 0x00000001) #define XA_CAMERA_EXPOSUREMODE_AUTO ((XAuint32) 0x00000002) #define XA_CAMERA_EXPOSUREMODE_NIGHT ((XAuint32) 0x00000004) #define XA_CAMERA_EXPOSUREMODE_BACKLIGHT ((XAuint32) 0x00000008) #define XA_CAMERA_EXPOSUREMODE_SPOTLIGHT ((XAuint32) 0x00000010) #define XA_CAMERA_EXPOSUREMODE_SPORTS ((XAuint32) 0x00000020) #define XA_CAMERA_EXPOSUREMODE_SNOW ((XAuint32) 0x00000040) #define XA_CAMERA_EXPOSUREMODE_BEACH ((XAuint32) 0x00000080) #define XA_CAMERA_EXPOSUREMODE_LARGEAPERTURE ((XAuint32) 0x00000100) #define XA_CAMERA_EXPOSUREMODE_SMALLAPERTURE ((XAuint32) 0x00000200) #define XA_CAMERA_EXPOSUREMODE_PORTRAIT ((XAuint32) 0x0000400) #define XA_CAMERA_EXPOSUREMODE_NIGHTPORTRAIT ((XAuint32) 0x00000800) #define XA_CAMERA_FLASHMODE_OFF ((XAuint32) 0x00000001) #define XA_CAMERA_FLASHMODE_ON ((XAuint32) 0x00000002) #define XA_CAMERA_FLASHMODE_AUTO ((XAuint32) 0x00000004) #define XA_CAMERA_FLASHMODE_REDEYEREDUCTION ((XAuint32) 0x00000008) #define XA_CAMERA_FLASHMODE_REDEYEREDUCTION_AUTO ((XAuint32) 0x00000010) #define XA_CAMERA_FLASHMODE_FILLIN ((XAuint32) 0x00000020) #define XA_CAMERA_FLASHMODE_TORCH ((XAuint32) 0x00000040) #define XA_CAMERA_FOCUSMODE_MANUAL ((XAuint32) 0x00000001) #define XA_CAMERA_FOCUSMODE_AUTO ((XAuint32) 0x00000002) #define XA_CAMERA_FOCUSMODE_CENTROID ((XAuint32) 0x00000004) #define XA_CAMERA_FOCUSMODE_CONTINUOUS_AUTO ((XAuint32) 0x00000008) #define XA_CAMERA_FOCUSMODE_CONTINUOUS_CENTROID ((XAuint32) 0x00000010) #define XA_CAMERA_FOCUSMODESTATUS_OFF ((XAuint32) 0x00000001) #define XA_CAMERA_FOCUSMODESTATUS_REQUEST ((XAuint32) 0x00000002) #define XA_CAMERA_FOCUSMODESTATUS_REACHED ((XAuint32) 0x00000003) #define XA_CAMERA_FOCUSMODESTATUS_UNABLETOREACH ((XAuint32) 0x00000004) #define XA_CAMERA_FOCUSMODESTATUS_LOST ((XAuint32) 0x00000005) #define XA_CAMERA_ISOSENSITIVITYMODE_MANUAL ((XAuint32) 0x00000001) #define XA_CAMERA_ISOSENSITIVITYMODE_AUTO ((XAuint32) 0x00000002) #define XA_CAMERA_LOCK_AUTOFOCUS ((XAuint32) 0x00000001) #define XA_CAMERA_LOCK_AUTOEXPOSURE ((XAuint32) 0x00000002) #define XA_CAMERA_LOCK_AUTOWHITEBALANCE ((XAuint32) 0x00000004) #define XA_CAMERA_METERINGMODE_AVERAGE ((XAuint32) 0x00000001) #define XA_CAMERA_METERINGMODE_SPOT ((XAuint32) 0x00000002) #define XA_CAMERA_METERINGMODE_MATRIX ((XAuint32) 0x00000004) #define XA_CAMERA_SHUTTERSPEEDMODE_MANUAL ((XAuint32) 0x00000001) #define XA_CAMERA_SHUTTERSPEEDMODE_AUTO ((XAuint32) 0x00000002) #define XA_CAMERA_WHITEBALANCEMODE_MANUAL ((XAuint32) 0x00000001) #define XA_CAMERA_WHITEBALANCEMODE_AUTO ((XAuint32) 0x00000002) #define XA_CAMERA_WHITEBALANCEMODE_SUNLIGHT ((XAuint32) 0x00000004) #define XA_CAMERA_WHITEBALANCEMODE_CLOUDY ((XAuint32) 0x00000008) #define XA_CAMERA_WHITEBALANCEMODE_SHADE ((XAuint32) 0x00000010) #define XA_CAMERA_WHITEBALANCEMODE_TUNGSTEN ((XAuint32) 0x00000020) #define XA_CAMERA_WHITEBALANCEMODE_FLUORESCENT ((XAuint32) 0x00000040) #define XA_CAMERA_WHITEBALANCEMODE_INCANDESCENT ((XAuint32) 0x00000080) #define XA_CAMERA_WHITEBALANCEMODE_FLASH ((XAuint32) 0x00000100) #define XA_CAMERA_WHITEBALANCEMODE_SUNSET ((XAuint32) 0x00000200) #define XA_CAMERA_ZOOM_SLOW ((XAuint32) 50) #define XA_CAMERA_ZOOM_NORMAL ((XAuint32) 100) #define XA_CAMERA_ZOOM_FAST ((XAuint32) 200) #define XA_CAMERA_ZOOM_FASTEST ((XAuint32) 0xFFFFFFFF) #define XA_FOCUSPOINTS_ONE ((XAuint32) 0x00000001) #define XA_FOCUSPOINTS_THREE_3X1 ((XAuint32) 0x00000002) #define XA_FOCUSPOINTS_FIVE_CROSS ((XAuint32) 0x00000003) #define XA_FOCUSPOINTS_SEVEN_CROSS ((XAuint32) 0x00000004) #define XA_FOCUSPOINTS_NINE_SQUARE ((XAuint32) 0x00000005) #define XA_FOCUSPOINTS_ELEVEN_CROSS ((XAuint32) 0x00000006) #define XA_FOCUSPOINTS_TWELVE_3X4 ((XAuint32) 0x00000007) #define XA_FOCUSPOINTS_TWELVE_4X3 ((XAuint32) 0x00000008) #define XA_FOCUSPOINTS_SIXTEEN_SQUARE ((XAuint32) 0x00000009) #define XA_FOCUSPOINTS_CUSTOM ((XAuint32) 0x0000000A) typedef struct XAFocusPointPosition_ { XAuint32 left; XAuint32 top; XAuint32 width; XAuint32 height; } XAFocusPointPosition; #define XA_ORIENTATION_UNKNOWN ((XAuint32) 0x00000001) #define XA_ORIENTATION_OUTWARDS ((XAuint32) 0x00000002) #define XA_ORIENTATION_INWARDS ((XAuint32) 0x00000003) typedef struct XACameraDescriptor_ { XAchar * name; XAuint32 maxWidth; XAuint32 maxHeight; XAuint32 orientation; XAuint32 featuresSupported; XAuint32 exposureModesSupported; XAuint32 flashModesSupported; XAuint32 focusModesSupported; XAuint32 meteringModesSupported; XAuint32 whiteBalanceModesSupported; } XACameraDescriptor; XA_API extern const XAInterfaceID XA_IID_CAMERACAPABILITIES; struct XACameraCapabilitiesItf_; typedef const struct XACameraCapabilitiesItf_ * const * XACameraCapabilitiesItf; struct XACameraCapabilitiesItf_ { XAresult (*GetCameraCapabilities) ( XACameraCapabilitiesItf self, XAuint32 *pIndex, XAuint32 * pCameraDeviceID, XACameraDescriptor * pDescriptor ); XAresult (*QueryFocusRegionPatterns) ( XACameraCapabilitiesItf self, XAuint32 cameraDeviceID, XAuint32 * pPatternID, XAuint32 * pFocusPattern, XAuint32 * pCustomPoints1, XAuint32 * pCustomPoints2 ); XAresult (*GetSupportedAutoLocks) ( XACameraCapabilitiesItf self, XAuint32 cameraDeviceID, XAuint32 * pNumCombinations, XAuint32 ** ppLocks ); XAresult (*GetSupportedFocusManualSettings) ( XACameraCapabilitiesItf self, XAuint32 cameraDeviceID, XAboolean macroEnabled, XAmillimeter * pMinValue, XAmillimeter * pMaxValue, XAuint32 * pNumSettings, XAmillimeter ** ppSettings ); XAresult (*GetSupportedISOSensitivitySettings) ( XACameraCapabilitiesItf self, XAuint32 cameraDeviceID, XAuint32 * pMinValue, XAuint32 * pMaxValue, XAuint32 * pNumSettings, XAuint32 ** ppSettings ); XAresult (*GetSupportedApertureManualSettings) ( XACameraCapabilitiesItf self, XAuint32 cameraDeviceID, XAuint32 * pMinValue, XAuint32 * pMaxValue, XAuint32 * pNumSettings, XAuint32 ** ppSettings ); XAresult (*GetSupportedShutterSpeedManualSettings) ( XACameraCapabilitiesItf self, XAuint32 cameraDeviceID, XAmicrosecond * pMinValue, XAmicrosecond * pMaxValue, XAuint32 * pNumSettings, XAmicrosecond ** ppSettings ); XAresult (*GetSupportedWhiteBalanceManualSettings) ( XACameraCapabilitiesItf self, XAuint32 cameraDeviceID, XAuint32 * pMinValue, XAuint32 * pMaxValue, XAuint32 * pNumSettings, XAuint32 ** ppSettings ); XAresult (*GetSupportedZoomSettings) ( XACameraCapabilitiesItf self, XAuint32 cameraDeviceID, XAboolean digitalEnabled, XAboolean macroEnabled, XApermille * pMaxValue, XAuint32 * pNumSettings, XApermille ** ppSettings, XAboolean * pSpeedSupported ); }; XA_API extern const XAInterfaceID XA_IID_CAMERA; struct XACameraItf_; typedef const struct XACameraItf_ * const * XACameraItf; typedef void (XAAPIENTRY * xaCameraCallback) ( XACameraItf caller, void * pContext, XAuint32 eventId, XAuint32 eventData ); struct XACameraItf_ { XAresult (*RegisterCallback) ( XACameraItf self, xaCameraCallback callback, void * pContext ); XAresult (*SetFlashMode) ( XACameraItf self, XAuint32 flashMode ); XAresult (*GetFlashMode) ( XACameraItf self, XAuint32 * pFlashMode ); XAresult (*IsFlashReady) ( XACameraItf self, XAboolean * pReady ); XAresult (*SetFocusMode) ( XACameraItf self, XAuint32 focusMode, XAmillimeter manualSetting, XAboolean macroEnabled ); XAresult (*GetFocusMode) ( XACameraItf self, XAuint32 * pFocusMode, XAmillimeter * pManualSetting, XAboolean * pMacroEnabled ); XAresult (*SetFocusRegionPattern) ( XACameraItf self, XAuint32 focusPattern, XAuint32 activePoints1, XAuint32 activePoints2 ); XAresult (*GetFocusRegionPattern) ( XACameraItf self, XAuint32 * pFocusPattern, XAuint32 * pActivePoints1, XAuint32 * pActivePoints2 ); XAresult (*GetFocusRegionPositions) ( XACameraItf self, XAuint32 * pNumPositionEntries, XAFocusPointPosition * pFocusPosition ); XAresult (*GetFocusModeStatus) ( XACameraItf self, XAuint32 * pFocusStatus, XAuint32 * pRegionStatus1, XAuint32 * pRegionStatus2 ); XAresult (*SetMeteringMode) ( XACameraItf self, XAuint32 meteringMode ); XAresult (*GetMeteringMode) ( XACameraItf self, XAuint32 * pMeteringMode ); XAresult (*SetExposureMode) ( XACameraItf self, XAuint32 exposure, XAuint32 compensation ); XAresult (*GetExposureMode) ( XACameraItf self, XAuint32 * pExposure, XAuint32 * pCompensation ); XAresult (*SetISOSensitivity) ( XACameraItf self, XAuint32 isoSensitivity, XAuint32 manualSetting ); XAresult (*GetISOSensitivity) ( XACameraItf self, XAuint32 * pIsoSensitivity, XAuint32 * pManualSetting ); XAresult (*SetAperture) ( XACameraItf self, XAuint32 aperture, XAuint32 manualSetting ); XAresult (*GetAperture) ( XACameraItf self, XAuint32 * pAperture, XAuint32 * pManualSetting ); XAresult (*SetShutterSpeed) ( XACameraItf self, XAuint32 shutterSpeed, XAmicrosecond manualSetting ); XAresult (*GetShutterSpeed) ( XACameraItf self, XAuint32 * pShutterSpeed, XAmicrosecond * pManualSetting ); XAresult (*SetWhiteBalance) ( XACameraItf self, XAuint32 whiteBalance, XAuint32 manualSetting ); XAresult (*GetWhiteBalance) ( XACameraItf self, XAuint32 * pWhiteBalance, XAuint32 * pManualSetting ); XAresult (*SetAutoLocks) ( XACameraItf self, XAuint32 locks ); XAresult (*GetAutoLocks) ( XACameraItf self, XAuint32 * locks ); XAresult (*SetZoom) ( XACameraItf self, XApermille zoom, XAboolean digitalEnabled, XAuint32 speed, XAboolean async ); XAresult (*GetZoom) ( XACameraItf self, XApermille * pZoom, XAboolean * pDigital ); }; /* AUDIO I/O DEVICE CAPABILITIES */ #define XA_DEVCONNECTION_INTEGRATED ((XAint16) 0x0001) #define XA_DEVCONNECTION_ATTACHED_WIRED ((XAint16) 0x0100) #define XA_DEVCONNECTION_ATTACHED_WIRELESS ((XAint16) 0x0200) #define XA_DEVCONNECTION_NETWORK ((XAint16) 0x0400) #define XA_DEVLOCATION_HANDSET ((XAint16) 0x0001) #define XA_DEVLOCATION_HEADSET ((XAint16) 0x0002) #define XA_DEVLOCATION_CARKIT ((XAint16) 0x0003) #define XA_DEVLOCATION_DOCK ((XAint16) 0x0004) #define XA_DEVLOCATION_REMOTE ((XAint16) 0x0005) #define XA_DEVSCOPE_UNKNOWN ((XAint16) 0x0001) #define XA_DEVSCOPE_ENVIRONMENT ((XAint16) 0x0002) #define XA_DEVSCOPE_USER ((XAint16) 0x0003) typedef struct XAAudioInputDescriptor_ { XAchar * deviceName; XAint16 deviceConnection; XAint16 deviceScope; XAint16 deviceLocation; XAboolean isForTelephony; XAmilliHertz minSampleRate; XAmilliHertz maxSampleRate; XAboolean isFreqRangeContinuous; XAmilliHertz * samplingRatesSupported; XAint16 numOfSamplingRatesSupported; XAint16 maxChannels; } XAAudioInputDescriptor; typedef struct XAAudioOutputDescriptor_ { XAchar *pDeviceName; XAint16 deviceConnection; XAint16 deviceScope; XAint16 deviceLocation; XAboolean isForTelephony; XAmilliHertz minSampleRate; XAmilliHertz maxSampleRate; XAboolean isFreqRangeContinuous; XAmilliHertz *samplingRatesSupported; XAint16 numOfSamplingRatesSupported; XAint16 maxChannels; } XAAudioOutputDescriptor; XA_API extern const XAInterfaceID XA_IID_AUDIOIODEVICECAPABILITIES; struct XAAudioIODeviceCapabilitiesItf_; typedef const struct XAAudioIODeviceCapabilitiesItf_ * const * XAAudioIODeviceCapabilitiesItf; typedef void (XAAPIENTRY * xaAvailableAudioInputsChangedCallback) ( XAAudioIODeviceCapabilitiesItf caller, void * pContext, XAuint32 deviceID, XAint32 numInputs, XAboolean isNew ); typedef void (XAAPIENTRY * xaAvailableAudioOutputsChangedCallback) ( XAAudioIODeviceCapabilitiesItf caller, void * pContext, XAuint32 deviceID, XAint32 numOutputs, XAboolean isNew ); typedef void (XAAPIENTRY * xaDefaultDeviceIDMapChangedCallback) ( XAAudioIODeviceCapabilitiesItf caller, void * pContext, XAboolean isOutput, XAint32 numDevices ); struct XAAudioIODeviceCapabilitiesItf_ { XAresult (*GetAvailableAudioInputs) ( XAAudioIODeviceCapabilitiesItf self, XAint32 * pNumInputs, XAuint32 * pInputDeviceIDs ); XAresult (*QueryAudioInputCapabilities) ( XAAudioIODeviceCapabilitiesItf self, XAuint32 deviceID, XAAudioInputDescriptor * pDescriptor ); XAresult (*RegisterAvailableAudioInputsChangedCallback) ( XAAudioIODeviceCapabilitiesItf self, xaAvailableAudioInputsChangedCallback callback, void * pContext ); XAresult (*GetAvailableAudioOutputs) ( XAAudioIODeviceCapabilitiesItf self, XAint32 * pNumOutputs, XAuint32 * pOutputDeviceIDs ); XAresult (*QueryAudioOutputCapabilities) ( XAAudioIODeviceCapabilitiesItf self, XAuint32 deviceID, XAAudioOutputDescriptor * pDescriptor ); XAresult (*RegisterAvailableAudioOutputsChangedCallback) ( XAAudioIODeviceCapabilitiesItf self, xaAvailableAudioOutputsChangedCallback callback, void * pContext ); XAresult (*RegisterDefaultDeviceIDMapChangedCallback) ( XAAudioIODeviceCapabilitiesItf self, xaDefaultDeviceIDMapChangedCallback callback, void * pContext ); XAresult (*GetAssociatedAudioInputs) ( XAAudioIODeviceCapabilitiesItf self, XAuint32 deviceID, XAint32 * pNumAudioInputs, XAuint32 * pAudioInputDeviceIDs ); XAresult (*GetAssociatedAudioOutputs) ( XAAudioIODeviceCapabilitiesItf self, XAuint32 deviceID, XAint32 * pNumAudioOutputs, XAuint32 * pAudioOutputDeviceIDs ); XAresult (*GetDefaultAudioDevices) ( XAAudioIODeviceCapabilitiesItf self, XAuint32 defaultDeviceID, XAint32 *pNumAudioDevices, XAuint32 *pAudioDeviceIDs ); XAresult (*QuerySampleFormatsSupported) ( XAAudioIODeviceCapabilitiesItf self, XAuint32 deviceID, XAmilliHertz samplingRate, XAint32 *pSampleFormats, XAint32 *pNumOfSampleFormats ); }; /* DEVICE VOLUME */ XA_API extern const XAInterfaceID XA_IID_DEVICEVOLUME; struct XADeviceVolumeItf_; typedef const struct XADeviceVolumeItf_ * const * XADeviceVolumeItf; struct XADeviceVolumeItf_ { XAresult (*GetVolumeScale) ( XADeviceVolumeItf self, XAuint32 deviceID, XAint32 * pMinValue, XAint32 * pMaxValue, XAboolean * pIsMillibelScale ); XAresult (*SetVolume) ( XADeviceVolumeItf self, XAuint32 deviceID, XAint32 volume ); XAresult (*GetVolume) ( XADeviceVolumeItf self, XAuint32 deviceID, XAint32 * pVolume ); }; /* EQUALIZER */ #define XA_EQUALIZER_UNDEFINED ((XAuint16) 0xFFFF) XA_API extern const XAInterfaceID XA_IID_EQUALIZER; struct XAEqualizerItf_; typedef const struct XAEqualizerItf_ * const * XAEqualizerItf; struct XAEqualizerItf_ { XAresult (*SetEnabled) ( XAEqualizerItf self, XAboolean enabled ); XAresult (*IsEnabled) ( XAEqualizerItf self, XAboolean * pEnabled ); XAresult (*GetNumberOfBands) ( XAEqualizerItf self, XAuint16 * pNumBands ); XAresult (*GetBandLevelRange) ( XAEqualizerItf self, XAmillibel * pMin, XAmillibel * pMax ); XAresult (*SetBandLevel) ( XAEqualizerItf self, XAuint16 band, XAmillibel level ); XAresult (*GetBandLevel) ( XAEqualizerItf self, XAuint16 band, XAmillibel * pLevel ); XAresult (*GetCenterFreq) ( XAEqualizerItf self, XAuint16 band, XAmilliHertz * pCenter ); XAresult (*GetBandFreqRange) ( XAEqualizerItf self, XAuint16 band, XAmilliHertz * pMin, XAmilliHertz * pMax ); XAresult (*GetBand) ( XAEqualizerItf self, XAmilliHertz frequency, XAuint16 * pBand ); XAresult (*GetCurrentPreset) ( XAEqualizerItf self, XAuint16 * pPreset ); XAresult (*UsePreset) ( XAEqualizerItf self, XAuint16 index ); XAresult (*GetNumberOfPresets) ( XAEqualizerItf self, XAuint16 * pNumPresets ); XAresult (*GetPresetName) ( XAEqualizerItf self, XAuint16 index, const XAchar ** ppName ); }; /* OUTPUT MIX */ XA_API extern const XAInterfaceID XA_IID_OUTPUTMIX; struct XAOutputMixItf_; typedef const struct XAOutputMixItf_ * const * XAOutputMixItf; typedef void (XAAPIENTRY * xaMixDeviceChangeCallback) ( XAOutputMixItf caller, void * pContext ); struct XAOutputMixItf_ { XAresult (*GetDestinationOutputDeviceIDs) ( XAOutputMixItf self, XAint32 * pNumDevices, XAuint32 * pDeviceIDs ); XAresult (*RegisterDeviceChangeCallback) ( XAOutputMixItf self, xaMixDeviceChangeCallback callback, void * pContext ); XAresult (*ReRoute) ( XAOutputMixItf self, XAint32 numOutputDevices, XAuint32 * pOutputDeviceIDs ); }; /* RADIO */ #define XA_FREQRANGE_FMEUROAMERICA ((XAuint8) 0x01) #define XA_FREQRANGE_FMJAPAN ((XAuint8) 0x02) #define XA_FREQRANGE_AMLW ((XAuint8) 0x03) #define XA_FREQRANGE_AMMW ((XAuint8) 0x04) #define XA_FREQRANGE_AMSW ((XAuint8) 0x05) #define XA_RADIO_EVENT_ANTENNA_STATUS_CHANGED ((XAuint32) 0x00000001) #define XA_RADIO_EVENT_FREQUENCY_CHANGED ((XAuint32) 0x00000002) #define XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED ((XAuint32) 0x00000003) #define XA_RADIO_EVENT_PRESET_CHANGED ((XAuint32) 0x00000004) #define XA_RADIO_EVENT_SEEK_COMPLETED ((XAuint32) 0x00000005) #define XA_STEREOMODE_MONO ((XAuint32) 0x00000000) #define XA_STEREOMODE_STEREO ((XAuint32) 0x00000001) #define XA_STEREOMODE_AUTO ((XAuint32) 0x00000002) XA_API extern const XAInterfaceID XA_IID_RADIO; struct XARadioItf_; typedef const struct XARadioItf_ * const * XARadioItf; typedef void (XAAPIENTRY * xaRadioCallback) ( XARadioItf caller, void * pContext, XAuint32 event, XAuint32 eventIntData, XAboolean eventBooleanData ); struct XARadioItf_ { XAresult (*SetFreqRange) ( XARadioItf self, XAuint8 range ); XAresult (*GetFreqRange) ( XARadioItf self, XAuint8 * pRange ); XAresult (*IsFreqRangeSupported) ( XARadioItf self, XAuint8 range, XAboolean * pSupported ); XAresult (*GetFreqRangeProperties) ( XARadioItf self, XAuint8 range, XAuint32 * pMinFreq, XAuint32 * pMaxFreq, XAuint32 * pFreqInterval ); XAresult (*SetFrequency) ( XARadioItf self, XAuint32 freq ); XAresult (*CancelSetFrequency) ( XARadioItf self ); XAresult (*GetFrequency) ( XARadioItf self, XAuint32 * pFreq ); XAresult (*SetSquelch) ( XARadioItf self, XAboolean squelch ); XAresult (*GetSquelch) ( XARadioItf self, XAboolean * pSquelch ); XAresult (*SetStereoMode) ( XARadioItf self, XAuint32 mode ); XAresult (*GetStereoMode) ( XARadioItf self, XAuint32 * pMode ); XAresult (*GetSignalStrength) ( XARadioItf self, XAuint32 * pStrength ); XAresult (*Seek) ( XARadioItf self, XAboolean upwards ); XAresult (*StopSeeking) ( XARadioItf self ); XAresult (*GetNumberOfPresets) ( XARadioItf self, XAuint32 * pNumPresets ); XAresult (*SetPreset) ( XARadioItf self, XAuint32 preset, XAuint32 freq, XAuint8 range, XAuint32 mode, const XAchar * pName ); XAresult (*GetPreset) ( XARadioItf self, XAuint32 preset, XAuint32 * pFreq, XAuint8 * pRange, XAuint32 * pMode, XAchar * pName, XAuint16 * pNameLength ); XAresult (*RegisterRadioCallback) ( XARadioItf self, xaRadioCallback callback, void * pContext ); }; /* RDS */ #define XA_RDS_EVENT_NEW_PI ((XAuint16) 0x0001) #define XA_RDS_EVENT_NEW_PTY ((XAuint16) 0x0002) #define XA_RDS_EVENT_NEW_PS ((XAuint16) 0x0004) #define XA_RDS_EVENT_NEW_RT ((XAuint16) 0x0008) #define XA_RDS_EVENT_NEW_RT_PLUS ((XAuint16) 0x0010) #define XA_RDS_EVENT_NEW_CT ((XAuint16) 0x0020) #define XA_RDS_EVENT_NEW_TA ((XAuint16) 0x0040) #define XA_RDS_EVENT_NEW_TP ((XAuint16) 0x0080) #define XA_RDS_EVENT_NEW_ALARM ((XAuint16) 0x0100) #define XA_RDSPROGRAMMETYPE_RDSPTY_NONE \ ((XAuint32) 0x00000000) #define XA_RDSPROGRAMMETYPE_RDSPTY_NEWS \ ((XAuint32) 0x00000001) #define XA_RDSPROGRAMMETYPE_RDSPTY_CURRENTAFFAIRS \ ((XAuint32) 0x00000002) #define XA_RDSPROGRAMMETYPE_RDSPTY_INFORMATION \ ((XAuint32) 0x00000003) #define XA_RDSPROGRAMMETYPE_RDSPTY_SPORT \ ((XAuint32) 0x00000004) #define XA_RDSPROGRAMMETYPE_RDSPTY_EDUCATION \ ((XAuint32) 0x00000005) #define XA_RDSPROGRAMMETYPE_RDSPTY_DRAMA \ ((XAuint32) 0x00000006) #define XA_RDSPROGRAMMETYPE_RDSPTY_CULTURE \ ((XAuint32) 0x00000007) #define XA_RDSPROGRAMMETYPE_RDSPTY_SCIENCE \ ((XAuint32) 0x00000008) #define XA_RDSPROGRAMMETYPE_RDSPTY_VARIEDSPEECH \ ((XAuint32) 0x00000009) #define XA_RDSPROGRAMMETYPE_RDSPTY_POPMUSIC \ ((XAuint32) 0x0000000A) #define XA_RDSPROGRAMMETYPE_RDSPTY_ROCKMUSIC \ ((XAuint32) 0x0000000B) #define XA_RDSPROGRAMMETYPE_RDSPTY_EASYLISTENING \ ((XAuint32) 0x0000000C) #define XA_RDSPROGRAMMETYPE_RDSPTY_LIGHTCLASSICAL \ ((XAuint32) 0x0000000D) #define XA_RDSPROGRAMMETYPE_RDSPTY_SERIOUSCLASSICAL \ ((XAuint32) 0x0000000E) #define XA_RDSPROGRAMMETYPE_RDSPTY_OTHERMUSIC \ ((XAuint32) 0x0000000F) #define XA_RDSPROGRAMMETYPE_RDSPTY_WEATHER \ ((XAuint32) 0x00000010) #define XA_RDSPROGRAMMETYPE_RDSPTY_FINANCE \ ((XAuint32) 0x00000011) #define XA_RDSPROGRAMMETYPE_RDSPTY_CHILDRENSPROGRAMMES \ ((XAuint32) 0x00000012) #define XA_RDSPROGRAMMETYPE_RDSPTY_SOCIALAFFAIRS \ ((XAuint32) 0x00000013) #define XA_RDSPROGRAMMETYPE_RDSPTY_RELIGION \ ((XAuint32) 0x00000014) #define XA_RDSPROGRAMMETYPE_RDSPTY_PHONEIN \ ((XAuint32) 0x00000015) #define XA_RDSPROGRAMMETYPE_RDSPTY_TRAVEL \ ((XAuint32) 0x00000016) #define XA_RDSPROGRAMMETYPE_RDSPTY_LEISURE \ ((XAuint32) 0x00000017) #define XA_RDSPROGRAMMETYPE_RDSPTY_JAZZMUSIC \ ((XAuint32) 0x00000018) #define XA_RDSPROGRAMMETYPE_RDSPTY_COUNTRYMUSIC \ ((XAuint32) 0x00000019) #define XA_RDSPROGRAMMETYPE_RDSPTY_NATIONALMUSIC \ ((XAuint32) 0x0000001A) #define XA_RDSPROGRAMMETYPE_RDSPTY_OLDIESMUSIC \ ((XAuint32) 0x0000001B) #define XA_RDSPROGRAMMETYPE_RDSPTY_FOLKMUSIC \ ((XAuint32) 0x0000001C) #define XA_RDSPROGRAMMETYPE_RDSPTY_DOCUMENTARY \ ((XAuint32) 0x0000001D) #define XA_RDSPROGRAMMETYPE_RDSPTY_ALARMTEST \ ((XAuint32) 0x0000001E) #define XA_RDSPROGRAMMETYPE_RDSPTY_ALARM \ ((XAuint32) 0x0000001F) #define XA_RDSPROGRAMMETYPE_RBDSPTY_NONE \ ((XAuint32) 0x00000000) #define XA_RDSPROGRAMMETYPE_RBDSPTY_NEWS \ ((XAuint32) 0x00000001) #define XA_RDSPROGRAMMETYPE_RBDSPTY_INFORMATION \ ((XAuint32) 0x00000002) #define XA_RDSPROGRAMMETYPE_RBDSPTY_SPORTS \ ((XAuint32) 0x00000003) #define XA_RDSPROGRAMMETYPE_RBDSPTY_TALK \ ((XAuint32) 0x00000004) #define XA_RDSPROGRAMMETYPE_RBDSPTY_ROCK \ ((XAuint32) 0x00000005) #define XA_RDSPROGRAMMETYPE_RBDSPTY_CLASSICROCK \ ((XAuint32) 0x00000006) #define XA_RDSPROGRAMMETYPE_RBDSPTY_ADULTHITS \ ((XAuint32) 0x00000007) #define XA_RDSPROGRAMMETYPE_RBDSPTY_SOFTROCK \ ((XAuint32) 0x00000008) #define XA_RDSPROGRAMMETYPE_RBDSPTY_TOP40 \ ((XAuint32) 0x00000009) #define XA_RDSPROGRAMMETYPE_RBDSPTY_COUNTRY \ ((XAuint32) 0x0000000A) #define XA_RDSPROGRAMMETYPE_RBDSPTY_OLDIES \ ((XAuint32) 0x0000000B) #define XA_RDSPROGRAMMETYPE_RBDSPTY_SOFT \ ((XAuint32) 0x0000000C) #define XA_RDSPROGRAMMETYPE_RBDSPTY_NOSTALGIA \ ((XAuint32) 0x0000000D) #define XA_RDSPROGRAMMETYPE_RBDSPTY_JAZZ \ ((XAuint32) 0x0000000E) #define XA_RDSPROGRAMMETYPE_RBDSPTY_CLASSICAL \ ((XAuint32) 0x0000000F) #define XA_RDSPROGRAMMETYPE_RBDSPTY_RHYTHMANDBLUES \ ((XAuint32) 0x00000010) #define XA_RDSPROGRAMMETYPE_RBDSPTY_SOFTRHYTHMANDBLUES \ ((XAuint32) 0x00000011) #define XA_RDSPROGRAMMETYPE_RBDSPTY_LANGUAGE \ ((XAuint32) 0x00000012) #define XA_RDSPROGRAMMETYPE_RBDSPTY_RELIGIOUSMUSIC \ ((XAuint32) 0x00000013) #define XA_RDSPROGRAMMETYPE_RBDSPTY_RELIGIOUSTALK \ ((XAuint32) 0x00000014) #define XA_RDSPROGRAMMETYPE_RBDSPTY_PERSONALITY \ ((XAuint32) 0x00000015) #define XA_RDSPROGRAMMETYPE_RBDSPTY_PUBLIC \ ((XAuint32) 0x00000016) #define XA_RDSPROGRAMMETYPE_RBDSPTY_COLLEGE \ ((XAuint32) 0x00000017) #define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED1 \ ((XAuint32) 0x00000018) #define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED2 \ ((XAuint32) 0x00000019) #define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED3 \ ((XAuint32) 0x0000001A) #define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED4 \ ((XAuint32) 0x0000001B) #define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED5 \ ((XAuint32) 0x0000001C) #define XA_RDSPROGRAMMETYPE_RBDSPTY_WEATHER \ ((XAuint32) 0x0000001D) #define XA_RDSPROGRAMMETYPE_RBDSPTY_EMERGENCYTEST \ ((XAuint32) 0x0000001E) #define XA_RDSPROGRAMMETYPE_RBDSPTY_EMERGENCY \ ((XAuint32) 0x0000001F) #define XA_RDSRTPLUS_ITEMTITLE ((XAuint8) 0x01) #define XA_RDSRTPLUS_ITEMALBUM ((XAuint8) 0x02) #define XA_RDSRTPLUS_ITEMTRACKNUMBER ((XAuint8) 0x03) #define XA_RDSRTPLUS_ITEMARTIST ((XAuint8) 0x04) #define XA_RDSRTPLUS_ITEMCOMPOSITION ((XAuint8) 0x05) #define XA_RDSRTPLUS_ITEMMOVEMENT ((XAuint8) 0x06) #define XA_RDSRTPLUS_ITEMCONDUCTOR ((XAuint8) 0x07) #define XA_RDSRTPLUS_ITEMCOMPOSER ((XAuint8) 0x08) #define XA_RDSRTPLUS_ITEMBAND ((XAuint8) 0x09) #define XA_RDSRTPLUS_ITEMCOMMENT ((XAuint8) 0x0A) #define XA_RDSRTPLUS_ITEMGENRE ((XAuint8) 0x0B) #define XA_RDSRTPLUS_INFONEWS ((XAuint8) 0x0C) #define XA_RDSRTPLUS_INFONEWSLOCAL ((XAuint8) 0x0D) #define XA_RDSRTPLUS_INFOSTOCKMARKET ((XAuint8) 0x0E) #define XA_RDSRTPLUS_INFOSPORT ((XAuint8) 0x0F) #define XA_RDSRTPLUS_INFOLOTTERY ((XAuint8) 0x10) #define XA_RDSRTPLUS_INFOHOROSCOPE ((XAuint8) 0x11) #define XA_RDSRTPLUS_INFODAILYDIVERSION ((XAuint8) 0x12) #define XA_RDSRTPLUS_INFOHEALTH ((XAuint8) 0x13) #define XA_RDSRTPLUS_INFOEVENT ((XAuint8) 0x14) #define XA_RDSRTPLUS_INFOSZENE ((XAuint8) 0x15) #define XA_RDSRTPLUS_INFOCINEMA ((XAuint8) 0x16) #define XA_RDSRTPLUS_INFOTV ((XAuint8) 0x17) #define XA_RDSRTPLUS_INFODATETIME ((XAuint8) 0x18) #define XA_RDSRTPLUS_INFOWEATHER ((XAuint8) 0x19) #define XA_RDSRTPLUS_INFOTRAFFIC ((XAuint8) 0x1A) #define XA_RDSRTPLUS_INFOALARM ((XAuint8) 0x1B) #define XA_RDSRTPLUS_INFOADVISERTISEMENT ((XAuint8) 0x1C) #define XA_RDSRTPLUS_INFOURL ((XAuint8) 0x1D) #define XA_RDSRTPLUS_INFOOTHER ((XAuint8) 0x1E) #define XA_RDSRTPLUS_STATIONNAMESHORT ((XAuint8) 0x1F) #define XA_RDSRTPLUS_STATIONNAMELONG ((XAuint8) 0x20) #define XA_RDSRTPLUS_PROGRAMNOW ((XAuint8) 0x21) #define XA_RDSRTPLUS_PROGRAMNEXT ((XAuint8) 0x22) #define XA_RDSRTPLUS_PROGRAMPART ((XAuint8) 0x23) #define XA_RDSRTPLUS_PROGRAMHOST ((XAuint8) 0x24) #define XA_RDSRTPLUS_PROFRAMEDITORIALSTAFF ((XAuint8) 0x25) #define XA_RDSRTPLUS_PROGRAMFREQUENCY ((XAuint8) 0x26) #define XA_RDSRTPLUS_PROGRAMHOMEPAGE ((XAuint8) 0x27) #define XA_RDSRTPLUS_PROGRAMSUBCHANNEL ((XAuint8) 0x28) #define XA_RDSRTPLUS_PHONEHOTLINE ((XAuint8) 0x29) #define XA_RDSRTPLUS_PHONESTUDIO ((XAuint8) 0x2A) #define XA_RDSRTPLUS_PHONEOTHER ((XAuint8) 0x2B) #define XA_RDSRTPLUS_SMSSTUDIO ((XAuint8) 0x2C) #define XA_RDSRTPLUS_SMSOTHER ((XAuint8) 0x2D) #define XA_RDSRTPLUS_EMAILHOTLINE ((XAuint8) 0x2E) #define XA_RDSRTPLUS_EMAILSTUDIO ((XAuint8) 0x2F) #define XA_RDSRTPLUS_EMAILOTHER ((XAuint8) 0x30) #define XA_RDSRTPLUS_MMSOTHER ((XAuint8) 0x31) #define XA_RDSRTPLUS_CHAT ((XAuint8) 0x32) #define XA_RDSRTPLUS_CHATCENTER ((XAuint8) 0x33) #define XA_RDSRTPLUS_VOTEQUESTION ((XAuint8) 0x34) #define XA_RDSRTPLUS_VOTECENTER ((XAuint8) 0x35) #define XA_RDSRTPLUS_OPENCLASS45 ((XAuint8) 0x36) #define XA_RDSRTPLUS_OPENCLASS55 ((XAuint8) 0x37) #define XA_RDSRTPLUS_OPENCLASS56 ((XAuint8) 0x38) #define XA_RDSRTPLUS_OPENCLASS57 ((XAuint8) 0x39) #define XA_RDSRTPLUS_OPENCLASS58 ((XAuint8) 0x3A) #define XA_RDSRTPLUS_PLACE ((XAuint8) 0x3B) #define XA_RDSRTPLUS_APPOINTMENT ((XAuint8) 0x3C) #define XA_RDSRTPLUS_IDENTIFIER ((XAuint8) 0x3D) #define XA_RDSRTPLUS_PURCHASE ((XAuint8) 0x3E) #define XA_RDSRTPLUS_GETDATA ((XAuint8) 0x3F) XA_API extern const XAInterfaceID XA_IID_RDS; struct XARDSItf_; typedef const struct XARDSItf_ * const * XARDSItf; typedef void (XAAPIENTRY * xaGetODAGroupCallback) ( XARadioItf caller, void * pContext, XAboolean success, XAint16 group, XAuint16 message ); typedef void (XAAPIENTRY * xaNewODADataCallback) ( XARDSItf caller, void * pContext, XAint16 group, XAuint64 data ); typedef void (XAAPIENTRY * xaRDSCallback) ( XARDSItf caller, void * pContext, XAuint16 event, XAuint8 eventData ); struct XARDSItf_ { XAresult (*QueryRDSSignal) ( XARDSItf self, XAboolean * isSignal ); XAresult (*GetProgrammeServiceName) ( XARDSItf self, XAchar * ps ); XAresult (*GetRadioText) ( XARDSItf self, XAchar * rt ); XAresult (*GetRadioTextPlus) ( XARDSItf self, XAuint8 contentType, XAchar * informationElement, XAchar * descriptor, XAuint8 * descriptorContentType ); XAresult (*GetProgrammeType) ( XARDSItf self, XAuint32 * pty ); XAresult (*GetProgrammeTypeString) ( XARDSItf self, XAboolean isLengthMax16, XAchar * pty ); XAresult (*GetProgrammeIdentificationCode) ( XARDSItf self, XAint16 * pi ); XAresult (*GetClockTime) ( XARDSItf self, XAtime * dateAndTime ); XAresult (*GetTrafficAnnouncement) ( XARDSItf self, XAboolean * ta ); XAresult (*GetTrafficProgramme) ( XARDSItf self, XAboolean * tp ); XAresult (*SeekByProgrammeType) ( XARDSItf self, XAuint32 pty, XAboolean upwards ); XAresult (*SeekTrafficAnnouncement) ( XARDSItf self, XAboolean upwards ); XAresult (*SeekTrafficProgramme) ( XARDSItf self, XAboolean upwards ); XAresult (*SetAutomaticSwitching) ( XARDSItf self, XAboolean automatic ); XAresult (*GetAutomaticSwitching) ( XARDSItf self, XAboolean * automatic ); XAresult (*SetAutomaticTrafficAnnouncement) ( XARDSItf self, XAboolean automatic ); XAresult (*GetAutomaticTrafficAnnouncement) ( XARDSItf self, XAboolean * automatic ); XAresult (*GetODAGroup) ( XARDSItf self, XAuint16 AID, xaGetODAGroupCallback callback, void * pContext ); XAresult (*SubscribeODAGroup) ( XARDSItf self, XAint16 group, XAboolean useErrorCorrection ); XAresult (*UnsubscribeODAGroup) ( XARDSItf self, XAint16 group ); XAresult (*ListODAGroupSubscriptions) ( XARDSItf self, XAint16* pGroups, XAuint32* pLength ); XAresult (*RegisterRDSCallback) ( XARDSItf self, xaRDSCallback callback, void * pContext ); XAresult (*RegisterODADataCallback) ( XARDSItf self, xaNewODADataCallback callback, void * pContext ); }; /* VIBRA */ XA_API extern const XAInterfaceID XA_IID_VIBRA; struct XAVibraItf_; typedef const struct XAVibraItf_ * const * XAVibraItf; struct XAVibraItf_ { XAresult (*Vibrate) ( XAVibraItf self, XAboolean vibrate ); XAresult (*IsVibrating) ( XAVibraItf self, XAboolean * pVibrating ); XAresult (*SetFrequency) ( XAVibraItf self, XAmilliHertz frequency ); XAresult (*GetFrequency) ( XAVibraItf self, XAmilliHertz * pFrequency ); XAresult (*SetIntensity) ( XAVibraItf self, XApermille intensity ); XAresult (*GetIntensity) ( XAVibraItf self, XApermille * pIntensity ); }; /* LED ARRAY */ typedef struct XAHSL_ { XAmillidegree hue; XApermille saturation; XApermille lightness; } XAHSL; XA_API extern const XAInterfaceID XA_IID_LED; struct XALEDArrayItf_; typedef const struct XALEDArrayItf_ * const * XALEDArrayItf; struct XALEDArrayItf_ { XAresult (*ActivateLEDArray) ( XALEDArrayItf self, XAuint32 lightMask ); XAresult (*IsLEDArrayActivated) ( XALEDArrayItf self, XAuint32 * pLightMask ); XAresult (*SetColor) ( XALEDArrayItf self, XAuint8 index, const XAHSL * pColor ); XAresult (*GetColor) ( XALEDArrayItf self, XAuint8 index, XAHSL * pColor ); }; /*****************************************************************/ /* CODEC RELATED INTERFACES, STRUCTS AND DEFINES */ /*****************************************************************/ /* AUDIO ENCODER AND AUDIO ENCODER/DECODER CAPABILITIES */ #define XA_RATECONTROLMODE_CONSTANTBITRATE ((XAuint32) 0x00000001) #define XA_RATECONTROLMODE_VARIABLEBITRATE ((XAuint32) 0x00000002) #define XA_AUDIOCODEC_PCM ((XAuint32) 0x00000001) #define XA_AUDIOCODEC_MP3 ((XAuint32) 0x00000002) #define XA_AUDIOCODEC_AMR ((XAuint32) 0x00000003) #define XA_AUDIOCODEC_AMRWB ((XAuint32) 0x00000004) #define XA_AUDIOCODEC_AMRWBPLUS ((XAuint32) 0x00000005) #define XA_AUDIOCODEC_AAC ((XAuint32) 0x00000006) #define XA_AUDIOCODEC_WMA ((XAuint32) 0x00000007) #define XA_AUDIOCODEC_REAL ((XAuint32) 0x00000008) #define XA_AUDIOCODEC_VORBIS ((XAuint32) 0x00000009) #define XA_AUDIOPROFILE_PCM ((XAuint32) 0x00000001) #define XA_AUDIOPROFILE_MPEG1_L3 ((XAuint32) 0x00000001) #define XA_AUDIOPROFILE_MPEG2_L3 ((XAuint32) 0x00000002) #define XA_AUDIOPROFILE_MPEG25_L3 ((XAuint32) 0x00000003) #define XA_AUDIOCHANMODE_MP3_MONO ((XAuint32) 0x00000001) #define XA_AUDIOCHANMODE_MP3_STEREO ((XAuint32) 0x00000002) #define XA_AUDIOCHANMODE_MP3_JOINTSTEREO ((XAuint32) 0x00000003) #define XA_AUDIOCHANMODE_MP3_DUAL ((XAuint32) 0x00000004) #define XA_AUDIOPROFILE_AMR ((XAuint32) 0x00000001) #define XA_AUDIOSTREAMFORMAT_CONFORMANCE ((XAuint32) 0x00000001) #define XA_AUDIOSTREAMFORMAT_IF1 ((XAuint32) 0x00000002) #define XA_AUDIOSTREAMFORMAT_IF2 ((XAuint32) 0x00000003) #define XA_AUDIOSTREAMFORMAT_FSF ((XAuint32) 0x00000004) #define XA_AUDIOSTREAMFORMAT_RTPPAYLOAD ((XAuint32) 0x00000005) #define XA_AUDIOSTREAMFORMAT_ITU ((XAuint32) 0x00000006) #define XA_AUDIOPROFILE_AMRWB ((XAuint32) 0x00000001) #define XA_AUDIOPROFILE_AMRWBPLUS ((XAuint32) 0x00000001) #define XA_AUDIOPROFILE_AAC_AAC ((XAuint32) 0x00000001) #define XA_AUDIOMODE_AAC_MAIN ((XAuint32) 0x00000001) #define XA_AUDIOMODE_AAC_LC ((XAuint32) 0x00000002) #define XA_AUDIOMODE_AAC_SSR ((XAuint32) 0x00000003) #define XA_AUDIOMODE_AAC_LTP ((XAuint32) 0x00000004) #define XA_AUDIOMODE_AAC_HE ((XAuint32) 0x00000005) #define XA_AUDIOMODE_AAC_SCALABLE ((XAuint32) 0x00000006) #define XA_AUDIOMODE_AAC_ERLC ((XAuint32) 0x00000007) #define XA_AUDIOMODE_AAC_LD ((XAuint32) 0x00000008) #define XA_AUDIOMODE_AAC_HE_PS ((XAuint32) 0x00000009) #define XA_AUDIOMODE_AAC_HE_MPS ((XAuint32) 0x0000000A) #define XA_AUDIOSTREAMFORMAT_MP2ADTS ((XAuint32) 0x00000001) #define XA_AUDIOSTREAMFORMAT_MP4ADTS ((XAuint32) 0x00000002) #define XA_AUDIOSTREAMFORMAT_MP4LOAS ((XAuint32) 0x00000003) #define XA_AUDIOSTREAMFORMAT_MP4LATM ((XAuint32) 0x00000004) #define XA_AUDIOSTREAMFORMAT_ADIF ((XAuint32) 0x00000005) #define XA_AUDIOSTREAMFORMAT_MP4FF ((XAuint32) 0x00000006) #define XA_AUDIOSTREAMFORMAT_RAW ((XAuint32) 0x00000007) #define XA_AUDIOPROFILE_WMA7 ((XAuint32) 0x00000001) #define XA_AUDIOPROFILE_WMA8 ((XAuint32) 0x00000002) #define XA_AUDIOPROFILE_WMA9 ((XAuint32) 0x00000003) #define XA_AUDIOPROFILE_WMA10 ((XAuint32) 0x00000004) #define XA_AUDIOMODE_WMA_LEVEL1 ((XAuint32) 0x00000001) #define XA_AUDIOMODE_WMA_LEVEL2 ((XAuint32) 0x00000002) #define XA_AUDIOMODE_WMA_LEVEL3 ((XAuint32) 0x00000003) #define XA_AUDIOMODE_WMA_LEVEL4 ((XAuint32) 0x00000004) #define XA_AUDIOMODE_WMAPRO_LEVELM0 ((XAuint32) 0x00000005) #define XA_AUDIOMODE_WMAPRO_LEVELM1 ((XAuint32) 0x00000006) #define XA_AUDIOMODE_WMAPRO_LEVELM2 ((XAuint32) 0x00000007) #define XA_AUDIOMODE_WMAPRO_LEVELM3 ((XAuint32) 0x00000008) #define XA_AUDIOPROFILE_REALAUDIO ((XAuint32) 0x00000001) #define XA_AUDIOMODE_REALAUDIO_G2 ((XAuint32) 0x00000001) #define XA_AUDIOMODE_REALAUDIO_8 ((XAuint32) 0x00000002) #define XA_AUDIOMODE_REALAUDIO_10 ((XAuint32) 0x00000003) #define XA_AUDIOMODE_REALAUDIO_SURROUND ((XAuint32) 0x00000004) #define XA_AUDIOPROFILE_VORBIS ((XAuint32) 0x00000001) #define XA_AUDIOMODE_VORBIS ((XAuint32) 0x00000001) typedef struct XAAudioCodecDescriptor_ { XAuint32 maxChannels; XAuint32 minBitsPerSample; XAuint32 maxBitsPerSample; XAmilliHertz minSampleRate; XAmilliHertz maxSampleRate; XAboolean isFreqRangeContinuous; XAmilliHertz * pSampleRatesSupported; XAuint32 numSampleRatesSupported; XAuint32 minBitRate; XAuint32 maxBitRate; XAboolean isBitrateRangeContinuous; XAuint32 * pBitratesSupported; XAuint32 numBitratesSupported; XAuint32 profileSetting; XAuint32 modeSetting; } XAAudioCodecDescriptor; typedef struct XAAudioEncoderSettings_ { XAuint32 encoderId; XAuint32 channelsIn; XAuint32 channelsOut; XAmilliHertz sampleRate; XAuint32 bitRate; XAuint32 bitsPerSample; XAuint32 rateControl; XAuint32 profileSetting; XAuint32 levelSetting; XAuint32 channelMode; XAuint32 streamFormat; XAuint32 encodeOptions; XAuint32 blockAlignment; } XAAudioEncoderSettings; XA_API extern const XAInterfaceID XA_IID_AUDIODECODERCAPABILITIES; struct XAAudioDecoderCapabilitiesItf_; typedef const struct XAAudioDecoderCapabilitiesItf_ * const * XAAudioDecoderCapabilitiesItf; struct XAAudioDecoderCapabilitiesItf_ { XAresult (*GetAudioDecoders) ( XAAudioDecoderCapabilitiesItf self, XAuint32 * pNumDecoders, XAuint32 * pDecoderIds ); XAresult (*GetAudioDecoderCapabilities) ( XAAudioDecoderCapabilitiesItf self, XAuint32 decoderId, XAuint32 * pIndex, XAAudioCodecDescriptor * pDescriptor ); }; XA_API extern const XAInterfaceID XA_IID_AUDIOENCODER; struct XAAudioEncoderItf_; typedef const struct XAAudioEncoderItf_ * const * XAAudioEncoderItf; struct XAAudioEncoderItf_ { XAresult (*SetEncoderSettings) ( XAAudioEncoderItf self, XAAudioEncoderSettings * pSettings ); XAresult (*GetEncoderSettings) ( XAAudioEncoderItf self, XAAudioEncoderSettings * pSettings ); }; XA_API extern const XAInterfaceID XA_IID_AUDIOENCODERCAPABILITIES; struct XAAudioEncoderCapabilitiesItf_; typedef const struct XAAudioEncoderCapabilitiesItf_ * const * XAAudioEncoderCapabilitiesItf; struct XAAudioEncoderCapabilitiesItf_ { XAresult (*GetAudioEncoders) ( XAAudioEncoderCapabilitiesItf self, XAuint32 * pNumEncoders, XAuint32 * pEncoderIds ); XAresult (*GetAudioEncoderCapabilities) ( XAAudioEncoderCapabilitiesItf self, XAuint32 encoderId, XAuint32 * pIndex, XAAudioCodecDescriptor * pDescriptor ); }; /* IMAGE ENCODER AND IMAGE ENCODER/DECODER CAPABILITIES */ #define XA_IMAGECODEC_JPEG ((XAuint32) 0x00000001) #define XA_IMAGECODEC_GIF ((XAuint32) 0x00000002) #define XA_IMAGECODEC_BMP ((XAuint32) 0x00000003) #define XA_IMAGECODEC_PNG ((XAuint32) 0x00000004) #define XA_IMAGECODEC_TIFF ((XAuint32) 0x00000005) #define XA_IMAGECODEC_RAW ((XAuint32) 0x00000006) typedef struct XAImageCodecDescriptor_ { XAuint32 codecId; XAuint32 maxWidth; XAuint32 maxHeight; } XAImageCodecDescriptor; typedef struct XAImageSettings_ { XAuint32 encoderId; XAuint32 width; XAuint32 height; XApermille compressionLevel; XAuint32 colorFormat; } XAImageSettings; XA_API extern const XAInterfaceID XA_IID_IMAGEENCODERCAPABILITIES; struct XAImageEncoderCapabilitiesItf_; typedef const struct XAImageEncoderCapabilitiesItf_ * const * XAImageEncoderCapabilitiesItf; struct XAImageEncoderCapabilitiesItf_ { XAresult (*GetImageEncoderCapabilities) ( XAImageEncoderCapabilitiesItf self, XAuint32 * pEncoderId, XAImageCodecDescriptor * pDescriptor ); XAresult (*QueryColorFormats) ( const XAImageEncoderCapabilitiesItf self, XAuint32 * pIndex, XAuint32 * pColorFormat ); }; XA_API extern const XAInterfaceID XA_IID_IMAGEDECODERCAPABILITIES; struct XAImageDecoderCapabilitiesItf_; typedef const struct XAImageDecoderCapabilitiesItf_ * const * XAImageDecoderCapabilitiesItf; struct XAImageDecoderCapabilitiesItf_ { XAresult (*GetImageDecoderCapabilities) ( XAImageDecoderCapabilitiesItf self, XAuint32 * pDecoderId, XAImageCodecDescriptor * pDescriptor ); XAresult (*QueryColorFormats) ( const XAImageDecoderCapabilitiesItf self, XAuint32 * pIndex, XAuint32 * pColorFormat ); }; XA_API extern const XAInterfaceID XA_IID_IMAGEENCODER; struct XAImageEncoderItf_; typedef const struct XAImageEncoderItf_ * const * XAImageEncoderItf; struct XAImageEncoderItf_ { XAresult (*SetImageSettings) ( XAImageEncoderItf self, const XAImageSettings * pSettings ); XAresult (*GetImageSettings) ( XAImageEncoderItf self, XAImageSettings * pSettings ); XAresult (*GetSizeEstimate) ( XAImageEncoderItf self, XAuint32 * pSize ); }; /* VIDEO ENCODER AND VIDEO ENCODER/DECODER CAPABILITIES */ #define XA_VIDEOCODEC_MPEG2 ((XAuint32) 0x00000001) #define XA_VIDEOCODEC_H263 ((XAuint32) 0x00000002) #define XA_VIDEOCODEC_MPEG4 ((XAuint32) 0x00000003) #define XA_VIDEOCODEC_AVC ((XAuint32) 0x00000004) #define XA_VIDEOCODEC_VC1 ((XAuint32) 0x00000005) #define XA_VIDEOPROFILE_MPEG2_SIMPLE ((XAuint32) 0x00000001) #define XA_VIDEOPROFILE_MPEG2_MAIN ((XAuint32) 0x00000002) #define XA_VIDEOPROFILE_MPEG2_422 ((XAuint32) 0x00000003) #define XA_VIDEOPROFILE_MPEG2_SNR ((XAuint32) 0x00000004) #define XA_VIDEOPROFILE_MPEG2_SPATIAL ((XAuint32) 0x00000005) #define XA_VIDEOPROFILE_MPEG2_HIGH ((XAuint32) 0x00000006) #define XA_VIDEOLEVEL_MPEG2_LL ((XAuint32) 0x00000001) #define XA_VIDEOLEVEL_MPEG2_ML ((XAuint32) 0x00000002) #define XA_VIDEOLEVEL_MPEG2_H14 ((XAuint32) 0x00000003) #define XA_VIDEOLEVEL_MPEG2_HL ((XAuint32) 0x00000004) #define XA_VIDEOPROFILE_H263_BASELINE ((XAuint32) 0x00000001) #define XA_VIDEOPROFILE_H263_H320CODING ((XAuint32) 0x00000002) #define XA_VIDEOPROFILE_H263_BACKWARDCOMPATIBLE ((XAuint32) 0x00000003) #define XA_VIDEOPROFILE_H263_ISWV2 ((XAuint32) 0x00000004) #define XA_VIDEOPROFILE_H263_ISWV3 ((XAuint32) 0x00000005) #define XA_VIDEOPROFILE_H263_HIGHCOMPRESSION ((XAuint32) 0x00000006) #define XA_VIDEOPROFILE_H263_INTERNET ((XAuint32) 0x00000007) #define XA_VIDEOPROFILE_H263_INTERLACE ((XAuint32) 0x00000008) #define XA_VIDEOPROFILE_H263_HIGHLATENCY ((XAuint32) 0x00000009) #define XA_VIDEOLEVEL_H263_10 ((XAuint32) 0x00000001) #define XA_VIDEOLEVEL_H263_20 ((XAuint32) 0x00000002) #define XA_VIDEOLEVEL_H263_30 ((XAuint32) 0x00000003) #define XA_VIDEOLEVEL_H263_40 ((XAuint32) 0x00000004) #define XA_VIDEOLEVEL_H263_45 ((XAuint32) 0x00000005) #define XA_VIDEOLEVEL_H263_50 ((XAuint32) 0x00000006) #define XA_VIDEOLEVEL_H263_60 ((XAuint32) 0x00000007) #define XA_VIDEOLEVEL_H263_70 ((XAuint32) 0x00000008) #define XA_VIDEOPROFILE_MPEG4_SIMPLE ((XAuint32) 0x00000001) #define XA_VIDEOPROFILE_MPEG4_SIMPLESCALABLE ((XAuint32) 0x00000002) #define XA_VIDEOPROFILE_MPEG4_CORE ((XAuint32) 0x00000003) #define XA_VIDEOPROFILE_MPEG4_MAIN ((XAuint32) 0x00000004) #define XA_VIDEOPROFILE_MPEG4_NBIT ((XAuint32) 0x00000005) #define XA_VIDEOPROFILE_MPEG4_SCALABLETEXTURE ((XAuint32) 0x00000006) #define XA_VIDEOPROFILE_MPEG4_SIMPLEFACE ((XAuint32) 0x00000007) #define XA_VIDEOPROFILE_MPEG4_SIMPLEFBA ((XAuint32) 0x00000008) #define XA_VIDEOPROFILE_MPEG4_BASICANIMATED ((XAuint32) 0x00000009) #define XA_VIDEOPROFILE_MPEG4_HYBRID ((XAuint32) 0x0000000A) #define XA_VIDEOPROFILE_MPEG4_ADVANCEDREALTIME ((XAuint32) 0x0000000B) #define XA_VIDEOPROFILE_MPEG4_CORESCALABLE ((XAuint32) 0x0000000C) #define XA_VIDEOPROFILE_MPEG4_ADVANCEDCODING ((XAuint32) 0x0000000D) #define XA_VIDEOPROFILE_MPEG4_ADVANCEDCORE ((XAuint32) 0x0000000E) #define XA_VIDEOPROFILE_MPEG4_ADVANCEDSCALABLE ((XAuint32) 0x0000000F) #define XA_VIDEOLEVEL_MPEG4_0 ((XAuint32) 0x00000001) #define XA_VIDEOLEVEL_MPEG4_0b ((XAuint32) 0x00000002) #define XA_VIDEOLEVEL_MPEG4_1 ((XAuint32) 0x00000003) #define XA_VIDEOLEVEL_MPEG4_2 ((XAuint32) 0x00000004) #define XA_VIDEOLEVEL_MPEG4_3 ((XAuint32) 0x00000005) #define XA_VIDEOLEVEL_MPEG4_4 ((XAuint32) 0x00000006) #define XA_VIDEOLEVEL_MPEG4_4a ((XAuint32) 0x00000007) #define XA_VIDEOLEVEL_MPEG4_5 ((XAuint32) 0x00000008) #define XA_VIDEOPROFILE_AVC_BASELINE ((XAuint32) 0x00000001) #define XA_VIDEOPROFILE_AVC_MAIN ((XAuint32) 0x00000002) #define XA_VIDEOPROFILE_AVC_EXTENDED ((XAuint32) 0x00000003) #define XA_VIDEOPROFILE_AVC_HIGH ((XAuint32) 0x00000004) #define XA_VIDEOPROFILE_AVC_HIGH10 ((XAuint32) 0x00000005) #define XA_VIDEOPROFILE_AVC_HIGH422 ((XAuint32) 0x00000006) #define XA_VIDEOPROFILE_AVC_HIGH444 ((XAuint32) 0x00000007) #define XA_VIDEOLEVEL_AVC_1 ((XAuint32) 0x00000001) #define XA_VIDEOLEVEL_AVC_1B ((XAuint32) 0x00000002) #define XA_VIDEOLEVEL_AVC_11 ((XAuint32) 0x00000003) #define XA_VIDEOLEVEL_AVC_12 ((XAuint32) 0x00000004) #define XA_VIDEOLEVEL_AVC_13 ((XAuint32) 0x00000005) #define XA_VIDEOLEVEL_AVC_2 ((XAuint32) 0x00000006) #define XA_VIDEOLEVEL_AVC_21 ((XAuint32) 0x00000007) #define XA_VIDEOLEVEL_AVC_22 ((XAuint32) 0x00000008) #define XA_VIDEOLEVEL_AVC_3 ((XAuint32) 0x00000009) #define XA_VIDEOLEVEL_AVC_31 ((XAuint32) 0x0000000A) #define XA_VIDEOLEVEL_AVC_32 ((XAuint32) 0x0000000B) #define XA_VIDEOLEVEL_AVC_4 ((XAuint32) 0x0000000C) #define XA_VIDEOLEVEL_AVC_41 ((XAuint32) 0x0000000D) #define XA_VIDEOLEVEL_AVC_42 ((XAuint32) 0x0000000E) #define XA_VIDEOLEVEL_AVC_5 ((XAuint32) 0x0000000F) #define XA_VIDEOLEVEL_AVC_51 ((XAuint32) 0x00000010) #define XA_VIDEOLEVEL_VC1_SIMPLE ((XAuint32) 0x00000001) #define XA_VIDEOLEVEL_VC1_MAIN ((XAuint32) 0x00000002) #define XA_VIDEOLEVEL_VC1_ADVANCED ((XAuint32) 0x00000003) #define XA_VIDEOLEVEL_VC1_LOW ((XAuint32) 0x00000001) #define XA_VIDEOLEVEL_VC1_MEDIUM ((XAuint32) 0x00000002) #define XA_VIDEOLEVEL_VC1_HIGH ((XAuint32) 0x00000003) #define XA_VIDEOLEVEL_VC1_L0 ((XAuint32) 0x00000004) #define XA_VIDEOLEVEL_VC1_L1 ((XAuint32) 0x00000005) #define XA_VIDEOLEVEL_VC1_L2 ((XAuint32) 0x00000006) #define XA_VIDEOLEVEL_VC1_L3 ((XAuint32) 0x00000007) #define XA_VIDEOLEVEL_VC1_L4 ((XAuint32) 0x00000008) typedef struct XAVideoCodecDescriptor_ { XAuint32 codecId; XAuint32 maxWidth; XAuint32 maxHeight; XAuint32 maxFrameRate; XAuint32 maxBitRate; XAuint32 rateControlSupported; XAuint32 profileSetting; XAuint32 levelSetting; } XAVideoCodecDescriptor; typedef struct XAVideoSettings_ { XAuint32 encoderId; XAuint32 width; XAuint32 height; XAuint32 frameRate; XAuint32 bitRate; XAuint32 rateControl; XAuint32 profileSetting; XAuint32 levelSetting; XAuint32 keyFrameInterval; } XAVideoSettings; XA_API extern const XAInterfaceID XA_IID_VIDEODECODERCAPABILITIES; struct XAVideoDecoderCapabilitiesItf_; typedef const struct XAVideoDecoderCapabilitiesItf_ * const * XAVideoDecoderCapabilitiesItf; struct XAVideoDecoderCapabilitiesItf_ { XAresult (*GetVideoDecoders) ( XAVideoDecoderCapabilitiesItf self, XAuint32 * pNumDecoders, XAuint32 * pDecoderIds ); XAresult (*GetVideoDecoderCapabilities) ( XAVideoDecoderCapabilitiesItf self, XAuint32 decoderId, XAuint32 * pIndex, XAVideoCodecDescriptor * pDescriptor ); }; XA_API extern const XAInterfaceID XA_IID_VIDEOENCODER; XA_API extern const XAInterfaceID XA_IID_VIDEOENCODERCAPABILITIES; struct XAVideoEncoderCapabilitiesItf_; typedef const struct XAVideoEncoderCapabilitiesItf_ * const * XAVideoEncoderCapabilitiesItf; struct XAVideoEncoderCapabilitiesItf_ { XAresult (*GetVideoEncoders) ( XAVideoEncoderCapabilitiesItf self, XAuint32 * pNumEncoders, XAuint32 * pEncoderIds ); XAresult (*GetVideoEncoderCapabilities) ( XAVideoEncoderCapabilitiesItf self, XAuint32 encoderId, XAuint32 * pIndex, XAVideoCodecDescriptor * pDescriptor ); }; struct XAVideoEncoderItf_; typedef const struct XAVideoEncoderItf_ * const * XAVideoEncoderItf; struct XAVideoEncoderItf_ { XAresult (*SetVideoSettings) ( XAVideoEncoderItf self, XAVideoSettings * pSettings ); XAresult (*GetVideoSettings) ( XAVideoEncoderItf self, XAVideoSettings * pSettings ); }; /* STREAM INFORMATION */ #define XA_DOMAINTYPE_AUDIO 0x00000001 #define XA_DOMAINTYPE_VIDEO 0x00000002 #define XA_DOMAINTYPE_IMAGE 0x00000003 #define XA_DOMAINTYPE_TIMEDTEXT 0x00000004 #define XA_DOMAINTYPE_MIDI 0x00000005 #define XA_DOMAINTYPE_VENDOR 0xFFFFFFFE #define XA_DOMAINTYPE_UNKNOWN 0xFFFFFFFF #define XA_MIDIBANK_DEVICE 0x00000001 #define XA_MIDIBANK_CUSTOM 0x00000002 #define XA_MIDI_UNKNOWN 0xFFFFFFFF #define XA_STREAMCBEVENT_PROPERTYCHANGE ((XAuint32) 0x00000001) typedef struct XAMediaContainerInformation_ { XAuint32 containerType; XAmillisecond mediaDuration; XAuint32 numStreams; } XAMediaContainerInformation; typedef struct XAVideoStreamInformation_ { XAuint32 codecId; XAuint32 width; XAuint32 height; XAuint32 frameRate; XAuint32 bitRate; XAmillisecond duration; } XAVideoStreamInformation; typedef struct XAAudioStreamInformation_ { XAuint32 codecId; XAuint32 channels; XAmilliHertz sampleRate; XAuint32 bitRate; XAchar langCountry[16]; XAmillisecond duration; } XAAudioStreamInformation; typedef struct XAImageStreamInformation_ { XAuint32 codecId; XAuint32 width; XAuint32 height; XAmillisecond presentationDuration; } XAImageStreamInformation; typedef struct XATimedTextStreamInformation_ { XAuint16 layer; XAuint32 width; XAuint32 height; XAuint16 tx; XAuint16 ty; XAuint32 bitrate; XAchar langCountry[16]; XAmillisecond duration; } XATimedTextStreamInformation; typedef struct XAMIDIStreamInformation_ { XAuint32 channels; XAuint32 tracks; XAuint32 bankType; XAchar langCountry[16]; XAmillisecond duration; } XAMIDIStreamInformation; typedef struct XAVendorStreamInformation_ { void *VendorStreamInfo; } XAVendorStreamInformation; XA_API extern const XAInterfaceID XA_IID_STREAMINFORMATION; struct XAStreamInformationItf_; typedef const struct XAStreamInformationItf_ * const * XAStreamInformationItf; typedef void (XAAPIENTRY * xaStreamEventChangeCallback) ( XAStreamInformationItf caller, XAuint32 eventId, XAuint32 streamIndex, void * pEventData, void * pContext ); struct XAStreamInformationItf_ { XAresult (*QueryMediaContainerInformation) ( XAStreamInformationItf self, XAMediaContainerInformation * info ); XAresult (*QueryStreamType) ( XAStreamInformationItf self, XAuint32 streamIndex, XAuint32 *domain ); XAresult (*QueryStreamInformation) ( XAStreamInformationItf self, XAuint32 streamIndex, void * info ); XAresult (*QueryStreamName) ( XAStreamInformationItf self, XAuint32 streamIndex, XAuint16 * pNameSize, XAchar * pName ); XAresult (*RegisterStreamChangeCallback) ( XAStreamInformationItf self, xaStreamEventChangeCallback callback, void * pContext ); XAresult (*QueryActiveStreams) ( XAStreamInformationItf self, XAuint32 *numStreams, XAboolean *activeStreams ); XAresult (*SetActiveStream) ( XAStreamInformationItf self, XAuint32 streamNum, XAboolean active, XAboolean commitNow ); }; #ifdef __cplusplus } /* extern "C" */ #endif #endif /* _OPENMAXAL_H_ */