diff options
author | Andrew Hsieh <andrewhsieh@google.com> | 2013-09-06 18:37:46 +0800 |
---|---|---|
committer | Andrew Hsieh <andrewhsieh@google.com> | 2013-09-06 19:04:40 +0800 |
commit | 6986c6e7f06bb3bdedfc3bb08694da9b1227048c (patch) | |
tree | 5c0f01f1f54d9040100858182232c1fb4134b58f /9/platforms/android-18/arch-mips/usr/include/OMXAL/OpenMAXAL.h | |
parent | 30ee84f92cb832c789366c516fcadb718ccc25e8 (diff) | |
download | prebuilts_ndk-6986c6e7f06bb3bdedfc3bb08694da9b1227048c.zip prebuilts_ndk-6986c6e7f06bb3bdedfc3bb08694da9b1227048c.tar.gz prebuilts_ndk-6986c6e7f06bb3bdedfc3bb08694da9b1227048c.tar.bz2 |
Add NDK r9 part 1/2: platforms/
Change-Id: Ie572e90ffda7f982d931dda1a9f5a0c68953a762
Diffstat (limited to '9/platforms/android-18/arch-mips/usr/include/OMXAL/OpenMAXAL.h')
-rw-r--r-- | 9/platforms/android-18/arch-mips/usr/include/OMXAL/OpenMAXAL.h | 3195 |
1 files changed, 3195 insertions, 0 deletions
diff --git a/9/platforms/android-18/arch-mips/usr/include/OMXAL/OpenMAXAL.h b/9/platforms/android-18/arch-mips/usr/include/OMXAL/OpenMAXAL.h new file mode 100644 index 0000000..d31283c --- /dev/null +++ b/9/platforms/android-18/arch-mips/usr/include/OMXAL/OpenMAXAL.h @@ -0,0 +1,3195 @@ +/* + * 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_ */ |