1/* 2 * Copyright (c) 2007-2010 The Khronos Group Inc. 3 * 4 * Permission is hereby granted, free of charge, to any person obtaining 5 * a copy of this software and/or associated documentation files (the 6 * "Materials "), to deal in the Materials without restriction, including 7 * without limitation the rights to use, copy, modify, merge, publish, 8 * distribute, sublicense, and/or sell copies of the Materials, and to 9 * permit persons to whom the Materials are furnished to do so, subject to 10 * the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be included 13 * in all copies or substantial portions of the Materials. 14 * 15 * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 16 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. 18 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY 19 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, 20 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE 21 * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. 22 * 23 * OpenMAXAL.h - OpenMAX AL version 1.0.1 24 * 25 */ 26 27/****************************************************************************/ 28/* NOTE: This file is a standard OpenMAX AL header file and should not be */ 29/* modified in any way. */ 30/****************************************************************************/ 31 32#ifndef _OPENMAXAL_H_ 33#define _OPENMAXAL_H_ 34 35#ifdef __cplusplus 36extern "C" { 37#endif 38 39#include "OpenMAXAL_Platform.h" 40 41 42 /*****************************************************************/ 43 /* TYPES */ 44 /*****************************************************************/ 45 46/* remap common types to XA types for clarity */ 47typedef xa_int8_t XAint8; /* 8 bit signed integer */ 48typedef xa_uint8_t XAuint8; /* 8 bit unsigned integer */ 49typedef xa_int16_t XAint16; /* 16 bit signed integer */ 50typedef xa_uint16_t XAuint16; /* 16 bit unsigned integer */ 51typedef xa_int32_t XAint32; /* 32 bit signed integer */ 52typedef xa_uint32_t XAuint32; /* 32 bit unsigned integer */ 53typedef xa_uint64_t XAuint64; /* 64 bit unsigned integer */ 54 55typedef XAuint32 XAboolean; 56typedef XAuint8 XAchar; 57typedef XAint16 XAmillibel; 58typedef XAuint32 XAmillisecond; 59typedef XAuint32 XAmilliHertz; 60typedef XAint32 XAmillimeter; 61typedef XAint32 XAmillidegree; 62typedef XAint16 XApermille; 63typedef XAuint32 XAmicrosecond; 64typedef XAuint64 XAtime; 65typedef XAuint32 XAresult; 66 67#define XA_BOOLEAN_FALSE ((XAuint32) 0x00000000) 68#define XA_BOOLEAN_TRUE ((XAuint32) 0x00000001) 69 70#define XA_MILLIBEL_MAX ((XAmillibel) 0x7FFF) 71#define XA_MILLIBEL_MIN ((XAmillibel) (-XA_MILLIBEL_MAX-1)) 72 73#define XA_MILLIHERTZ_MAX ((XAmilliHertz) 0xFFFFFFFF) 74 75#define XA_MILLIMETER_MAX ((XAmillimeter) 0x7FFFFFFF) 76 77 78 79 /*****************************************************************/ 80 /* RESULT CODES */ 81 /*****************************************************************/ 82 83#define XA_RESULT_SUCCESS ((XAuint32) 0x00000000) 84#define XA_RESULT_PRECONDITIONS_VIOLATED ((XAuint32) 0x00000001) 85#define XA_RESULT_PARAMETER_INVALID ((XAuint32) 0x00000002) 86#define XA_RESULT_MEMORY_FAILURE ((XAuint32) 0x00000003) 87#define XA_RESULT_RESOURCE_ERROR ((XAuint32) 0x00000004) 88#define XA_RESULT_RESOURCE_LOST ((XAuint32) 0x00000005) 89#define XA_RESULT_IO_ERROR ((XAuint32) 0x00000006) 90#define XA_RESULT_BUFFER_INSUFFICIENT ((XAuint32) 0x00000007) 91#define XA_RESULT_CONTENT_CORRUPTED ((XAuint32) 0x00000008) 92#define XA_RESULT_CONTENT_UNSUPPORTED ((XAuint32) 0x00000009) 93#define XA_RESULT_CONTENT_NOT_FOUND ((XAuint32) 0x0000000A) 94#define XA_RESULT_PERMISSION_DENIED ((XAuint32) 0x0000000B) 95#define XA_RESULT_FEATURE_UNSUPPORTED ((XAuint32) 0x0000000C) 96#define XA_RESULT_INTERNAL_ERROR ((XAuint32) 0x0000000D) 97#define XA_RESULT_UNKNOWN_ERROR ((XAuint32) 0x0000000E) 98#define XA_RESULT_OPERATION_ABORTED ((XAuint32) 0x0000000F) 99#define XA_RESULT_CONTROL_LOST ((XAuint32) 0x00000010) 100 101 102 103 /*****************************************************************/ 104 /* INTERFACE ID DEFINITION */ 105 /*****************************************************************/ 106 107/* Interface ID defined as a UUID */ 108typedef const struct XAInterfaceID_ { 109 XAuint32 time_low; 110 XAuint16 time_mid; 111 XAuint16 time_hi_and_version; 112 XAuint16 clock_seq; 113 XAuint8 node[6]; 114} * XAInterfaceID; 115 116/* NULL Interface */ 117XA_API extern const XAInterfaceID XA_IID_NULL; 118 119 120 121 /*****************************************************************/ 122 /* GENERAL INTERFACES, STRUCTS AND DEFINES */ 123 /*****************************************************************/ 124 125/* OBJECT */ 126 127#define XA_PRIORITY_LOWEST ((XAint32) (-0x7FFFFFFF-1)) 128#define XA_PRIORITY_VERYLOW ((XAint32) -0x60000000) 129#define XA_PRIORITY_LOW ((XAint32) -0x40000000) 130#define XA_PRIORITY_BELOWNORMAL ((XAint32) -0x20000000) 131#define XA_PRIORITY_NORMAL ((XAint32) 0x00000000) 132#define XA_PRIORITY_ABOVENORMAL ((XAint32) 0x20000000) 133#define XA_PRIORITY_HIGH ((XAint32) 0x40000000) 134#define XA_PRIORITY_VERYHIGH ((XAint32) 0x60000000) 135#define XA_PRIORITY_HIGHEST ((XAint32) 0x7FFFFFFF) 136 137#define XA_OBJECT_EVENT_RUNTIME_ERROR ((XAuint32) 0x00000001) 138#define XA_OBJECT_EVENT_ASYNC_TERMINATION ((XAuint32) 0x00000002) 139#define XA_OBJECT_EVENT_RESOURCES_LOST ((XAuint32) 0x00000003) 140#define XA_OBJECT_EVENT_RESOURCES_AVAILABLE ((XAuint32) 0x00000004) 141#define XA_OBJECT_EVENT_ITF_CONTROL_TAKEN ((XAuint32) 0x00000005) 142#define XA_OBJECT_EVENT_ITF_CONTROL_RETURNED ((XAuint32) 0x00000006) 143#define XA_OBJECT_EVENT_ITF_PARAMETERS_CHANGED ((XAuint32) 0x00000007) 144 145#define XA_OBJECT_STATE_UNREALIZED ((XAuint32) 0x00000001) 146#define XA_OBJECT_STATE_REALIZED ((XAuint32) 0x00000002) 147#define XA_OBJECT_STATE_SUSPENDED ((XAuint32) 0x00000003) 148 149 150XA_API extern const XAInterfaceID XA_IID_OBJECT; 151 152struct XAObjectItf_; 153typedef const struct XAObjectItf_ * const * XAObjectItf; 154 155typedef void (XAAPIENTRY * xaObjectCallback) ( 156 XAObjectItf caller, 157 const void * pContext, 158 XAuint32 event, 159 XAresult result, 160 XAuint32 param, 161 void * pInterface 162); 163 164struct XAObjectItf_ { 165 XAresult (*Realize) ( 166 XAObjectItf self, 167 XAboolean async 168 ); 169 XAresult (*Resume) ( 170 XAObjectItf self, 171 XAboolean async 172 ); 173 XAresult (*GetState) ( 174 XAObjectItf self, 175 XAuint32 * pState 176 ); 177 XAresult (*GetInterface) ( 178 XAObjectItf self, 179 const XAInterfaceID iid, 180 void * pInterface 181 ); 182 XAresult (*RegisterCallback) ( 183 XAObjectItf self, 184 xaObjectCallback callback, 185 void * pContext 186 ); 187 void (*AbortAsyncOperation) ( 188 XAObjectItf self 189 ); 190 void (*Destroy) ( 191 XAObjectItf self 192 ); 193 XAresult (*SetPriority) ( 194 XAObjectItf self, 195 XAint32 priority, 196 XAboolean preemptable 197 ); 198 XAresult (*GetPriority) ( 199 XAObjectItf self, 200 XAint32 * pPriority, 201 XAboolean * pPreemptable 202 ); 203 XAresult (*SetLossOfControlInterfaces) ( 204 XAObjectItf self, 205 XAint16 numInterfaces, 206 XAInterfaceID * pInterfaceIDs, 207 XAboolean enabled 208 ); 209}; 210 211/* CONFIG EXTENSION */ 212 213XA_API extern const XAInterfaceID XA_IID_CONFIGEXTENSION; 214 215struct XAConfigExtensionsItf_; 216typedef const struct XAConfigExtensionsItf_ 217 * const * XAConfigExtensionsItf; 218 219struct XAConfigExtensionsItf_ { 220 XAresult (*SetConfiguration) ( 221 XAConfigExtensionsItf self, 222 const XAchar * configKey, 223 XAuint32 valueSize, 224 const void * pConfigValue 225 ); 226 XAresult (*GetConfiguration) ( 227 XAConfigExtensionsItf self, 228 const XAchar * configKey, 229 XAuint32 * pValueSize, 230 void * pConfigValue 231 ); 232}; 233 234/* DYNAMIC INTERFACE MANAGEMENT */ 235 236#define XA_DYNAMIC_ITF_EVENT_RUNTIME_ERROR ((XAuint32) 0x00000001) 237#define XA_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION ((XAuint32) 0x00000002) 238#define XA_DYNAMIC_ITF_EVENT_RESOURCES_LOST ((XAuint32) 0x00000003) 239#define XA_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY ((XAuint32) 0x00000004) 240#define XA_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE ((XAuint32) 0x00000005) 241 242XA_API extern const XAInterfaceID XA_IID_DYNAMICINTERFACEMANAGEMENT; 243 244struct XADynamicInterfaceManagementItf_; 245typedef const struct XADynamicInterfaceManagementItf_ 246 * const * XADynamicInterfaceManagementItf; 247 248typedef void (XAAPIENTRY * xaDynamicInterfaceManagementCallback) ( 249 XADynamicInterfaceManagementItf caller, 250 void * pContext, 251 XAuint32 event, 252 XAresult result, 253 const XAInterfaceID iid 254); 255 256struct XADynamicInterfaceManagementItf_ { 257 XAresult (*AddInterface) ( 258 XADynamicInterfaceManagementItf self, 259 const XAInterfaceID iid, 260 XAboolean aysnc 261 ); 262 XAresult (*RemoveInterface) ( 263 XADynamicInterfaceManagementItf self, 264 const XAInterfaceID iid 265 ); 266 XAresult (*ResumeInterface) ( 267 XADynamicInterfaceManagementItf self, 268 const XAInterfaceID iid, 269 XAboolean aysnc 270 ); 271 XAresult (*RegisterCallback) ( 272 XADynamicInterfaceManagementItf self, 273 xaDynamicInterfaceManagementCallback callback, 274 void * pContext 275 ); 276}; 277 278/* DATA SOURCES/SINKS */ 279 280#define XA_DATAFORMAT_MIME ((XAuint32) 0x00000001) 281#define XA_DATAFORMAT_PCM ((XAuint32) 0x00000002) 282#define XA_DATAFORMAT_RAWIMAGE ((XAuint32) 0x00000003) 283 284#define XA_DATALOCATOR_URI ((XAuint32) 0x00000001) 285#define XA_DATALOCATOR_ADDRESS ((XAuint32) 0x00000002) 286#define XA_DATALOCATOR_IODEVICE ((XAuint32) 0x00000003) 287#define XA_DATALOCATOR_OUTPUTMIX ((XAuint32) 0x00000004) 288#define XA_DATALOCATOR_NATIVEDISPLAY ((XAuint32) 0x00000005) 289#define XA_DATALOCATOR_RESERVED6 ((XAuint32) 0x00000006) 290#define XA_DATALOCATOR_RESERVED7 ((XAuint32) 0x00000007) 291 292typedef struct XADataSink_ { 293 void * pLocator; 294 void * pFormat; 295} XADataSink; 296 297typedef struct XADataSource_ { 298 void * pLocator; 299 void * pFormat; 300} XADataSource; 301 302#define XA_CONTAINERTYPE_UNSPECIFIED ((XAuint32) 0x00000001) 303#define XA_CONTAINERTYPE_RAW ((XAuint32) 0x00000002) 304#define XA_CONTAINERTYPE_ASF ((XAuint32) 0x00000003) 305#define XA_CONTAINERTYPE_AVI ((XAuint32) 0x00000004) 306#define XA_CONTAINERTYPE_BMP ((XAuint32) 0x00000005) 307#define XA_CONTAINERTYPE_JPG ((XAuint32) 0x00000006) 308#define XA_CONTAINERTYPE_JPG2000 ((XAuint32) 0x00000007) 309#define XA_CONTAINERTYPE_M4A ((XAuint32) 0x00000008) 310#define XA_CONTAINERTYPE_MP3 ((XAuint32) 0x00000009) 311#define XA_CONTAINERTYPE_MP4 ((XAuint32) 0x0000000A) 312#define XA_CONTAINERTYPE_MPEG_ES ((XAuint32) 0x0000000B) 313#define XA_CONTAINERTYPE_MPEG_PS ((XAuint32) 0x0000000C) 314#define XA_CONTAINERTYPE_MPEG_TS ((XAuint32) 0x0000000D) 315#define XA_CONTAINERTYPE_QT ((XAuint32) 0x0000000E) 316#define XA_CONTAINERTYPE_WAV ((XAuint32) 0x0000000F) 317#define XA_CONTAINERTYPE_XMF_0 ((XAuint32) 0x00000010) 318#define XA_CONTAINERTYPE_XMF_1 ((XAuint32) 0x00000011) 319#define XA_CONTAINERTYPE_XMF_2 ((XAuint32) 0x00000012) 320#define XA_CONTAINERTYPE_XMF_3 ((XAuint32) 0x00000013) 321#define XA_CONTAINERTYPE_XMF_GENERIC ((XAuint32) 0x00000014) 322#define XA_CONTAINERTYPE_AMR ((XAuint32) 0x00000015) 323#define XA_CONTAINERTYPE_AAC ((XAuint32) 0x00000016) 324#define XA_CONTAINERTYPE_3GPP ((XAuint32) 0x00000017) 325#define XA_CONTAINERTYPE_3GA ((XAuint32) 0x00000018) 326#define XA_CONTAINERTYPE_RM ((XAuint32) 0x00000019) 327#define XA_CONTAINERTYPE_DMF ((XAuint32) 0x0000001A) 328#define XA_CONTAINERTYPE_SMF ((XAuint32) 0x0000001B) 329#define XA_CONTAINERTYPE_MOBILE_DLS ((XAuint32) 0x0000001C) 330#define XA_CONTAINERTYPE_OGG ((XAuint32) 0x0000001D) 331 332typedef struct XADataFormat_MIME_ { 333 XAuint32 formatType; 334 XAchar * mimeType; 335 XAuint32 containerType; 336} XADataFormat_MIME; 337 338#define XA_BYTEORDER_BIGENDIAN ((XAuint32) 0x00000001) 339#define XA_BYTEORDER_LITTLEENDIAN ((XAuint32) 0x00000002) 340 341#define XA_SAMPLINGRATE_8 ((XAuint32) 8000000) 342#define XA_SAMPLINGRATE_11_025 ((XAuint32) 11025000) 343#define XA_SAMPLINGRATE_12 ((XAuint32) 12000000) 344#define XA_SAMPLINGRATE_16 ((XAuint32) 16000000) 345#define XA_SAMPLINGRATE_22_05 ((XAuint32) 22050000) 346#define XA_SAMPLINGRATE_24 ((XAuint32) 24000000) 347#define XA_SAMPLINGRATE_32 ((XAuint32) 32000000) 348#define XA_SAMPLINGRATE_44_1 ((XAuint32) 44100000) 349#define XA_SAMPLINGRATE_48 ((XAuint32) 48000000) 350#define XA_SAMPLINGRATE_64 ((XAuint32) 64000000) 351#define XA_SAMPLINGRATE_88_2 ((XAuint32) 88200000) 352#define XA_SAMPLINGRATE_96 ((XAuint32) 96000000) 353#define XA_SAMPLINGRATE_192 ((XAuint32) 192000000) 354 355#define XA_SPEAKER_FRONT_LEFT ((XAuint32) 0x00000001) 356#define XA_SPEAKER_FRONT_RIGHT ((XAuint32) 0x00000002) 357#define XA_SPEAKER_FRONT_CENTER ((XAuint32) 0x00000004) 358#define XA_SPEAKER_LOW_FREQUENCY ((XAuint32) 0x00000008) 359#define XA_SPEAKER_BACK_LEFT ((XAuint32) 0x00000010) 360#define XA_SPEAKER_BACK_RIGHT ((XAuint32) 0x00000020) 361#define XA_SPEAKER_FRONT_LEFT_OF_CENTER ((XAuint32) 0x00000040) 362#define XA_SPEAKER_FRONT_RIGHT_OF_CENTER ((XAuint32) 0x00000080) 363#define XA_SPEAKER_BACK_CENTER ((XAuint32) 0x00000100) 364#define XA_SPEAKER_SIDE_LEFT ((XAuint32) 0x00000200) 365#define XA_SPEAKER_SIDE_RIGHT ((XAuint32) 0x00000400) 366#define XA_SPEAKER_TOP_CENTER ((XAuint32) 0x00000800) 367#define XA_SPEAKER_TOP_FRONT_LEFT ((XAuint32) 0x00001000) 368#define XA_SPEAKER_TOP_FRONT_CENTER ((XAuint32) 0x00002000) 369#define XA_SPEAKER_TOP_FRONT_RIGHT ((XAuint32) 0x00004000) 370#define XA_SPEAKER_TOP_BACK_LEFT ((XAuint32) 0x00008000) 371#define XA_SPEAKER_TOP_BACK_CENTER ((XAuint32) 0x00010000) 372#define XA_SPEAKER_TOP_BACK_RIGHT ((XAuint32) 0x00020000) 373 374#define XA_PCMSAMPLEFORMAT_FIXED_8 ((XAuint16) 0x0008) 375#define XA_PCMSAMPLEFORMAT_FIXED_16 ((XAuint16) 0x0010) 376#define XA_PCMSAMPLEFORMAT_FIXED_20 ((XAuint16) 0x0014) 377#define XA_PCMSAMPLEFORMAT_FIXED_24 ((XAuint16) 0x0018) 378#define XA_PCMSAMPLEFORMAT_FIXED_28 ((XAuint16) 0x001C) 379#define XA_PCMSAMPLEFORMAT_FIXED_32 ((XAuint16) 0x0020) 380 381typedef struct XADataFormat_PCM_ { 382 XAuint32 formatType; 383 XAuint32 numChannels; 384 XAuint32 samplesPerSec; 385 XAuint32 bitsPerSample; 386 XAuint32 containerSize; 387 XAuint32 channelMask; 388 XAuint32 endianness; 389} XADataFormat_PCM; 390 391#define XA_COLORFORMAT_UNUSED ((XAuint32) 0x00000000) 392#define XA_COLORFORMAT_MONOCHROME ((XAuint32) 0x00000001) 393#define XA_COLORFORMAT_8BITRGB332 ((XAuint32) 0x00000002) 394#define XA_COLORFORMAT_12BITRGB444 ((XAuint32) 0x00000003) 395#define XA_COLORFORMAT_16BITARGB4444 ((XAuint32) 0x00000004) 396#define XA_COLORFORMAT_16BITARGB1555 ((XAuint32) 0x00000005) 397#define XA_COLORFORMAT_16BITRGB565 ((XAuint32) 0x00000006) 398#define XA_COLORFORMAT_16BITBGR565 ((XAuint32) 0x00000007) 399#define XA_COLORFORMAT_18BITRGB666 ((XAuint32) 0x00000008) 400#define XA_COLORFORMAT_18BITARGB1665 ((XAuint32) 0x00000009) 401#define XA_COLORFORMAT_19BITARGB1666 ((XAuint32) 0x0000000A) 402#define XA_COLORFORMAT_24BITRGB888 ((XAuint32) 0x0000000B) 403#define XA_COLORFORMAT_24BITBGR888 ((XAuint32) 0x0000000C) 404#define XA_COLORFORMAT_24BITARGB1887 ((XAuint32) 0x0000000D) 405#define XA_COLORFORMAT_25BITARGB1888 ((XAuint32) 0x0000000E) 406#define XA_COLORFORMAT_32BITBGRA8888 ((XAuint32) 0x0000000F) 407#define XA_COLORFORMAT_32BITARGB8888 ((XAuint32) 0x00000010) 408#define XA_COLORFORMAT_YUV411PLANAR ((XAuint32) 0x00000011) 409#define XA_COLORFORMAT_YUV420PLANAR ((XAuint32) 0x00000013) 410#define XA_COLORFORMAT_YUV420SEMIPLANAR ((XAuint32) 0x00000015) 411#define XA_COLORFORMAT_YUV422PLANAR ((XAuint32) 0x00000016) 412#define XA_COLORFORMAT_YUV422SEMIPLANAR ((XAuint32) 0x00000018) 413#define XA_COLORFORMAT_YCBYCR ((XAuint32) 0x00000019) 414#define XA_COLORFORMAT_YCRYCB ((XAuint32) 0x0000001A) 415#define XA_COLORFORMAT_CBYCRY ((XAuint32) 0x0000001B) 416#define XA_COLORFORMAT_CRYCBY ((XAuint32) 0x0000001C) 417#define XA_COLORFORMAT_YUV444INTERLEAVED ((XAuint32) 0x0000001D) 418#define XA_COLORFORMAT_RAWBAYER8BIT ((XAuint32) 0x0000001E) 419#define XA_COLORFORMAT_RAWBAYER10BIT ((XAuint32) 0x0000001F) 420#define XA_COLORFORMAT_RAWBAYER8BITCOMPRESSED ((XAuint32) 0x00000020) 421#define XA_COLORFORMAT_L2 ((XAuint32) 0x00000021) 422#define XA_COLORFORMAT_L4 ((XAuint32) 0x00000022) 423#define XA_COLORFORMAT_L8 ((XAuint32) 0x00000023) 424#define XA_COLORFORMAT_L16 ((XAuint32) 0x00000024) 425#define XA_COLORFORMAT_L24 ((XAuint32) 0x00000025) 426#define XA_COLORFORMAT_L32 ((XAuint32) 0x00000026) 427#define XA_COLORFORMAT_18BITBGR666 ((XAuint32) 0x00000029) 428#define XA_COLORFORMAT_24BITARGB6666 ((XAuint32) 0x0000002A) 429#define XA_COLORFORMAT_24BITABGR6666 ((XAuint32) 0x0000002B) 430 431typedef struct XADataFormat_RawImage_ { 432 XAuint32 formatType; 433 XAuint32 colorFormat; 434 XAuint32 height; 435 XAuint32 width; 436 XAuint32 stride; 437} XADataFormat_RawImage; 438 439typedef struct XADataLocator_Address_ { 440 XAuint32 locatorType; 441 void * pAddress; 442 XAuint32 length; 443} XADataLocator_Address; 444 445#define XA_IODEVICE_AUDIOINPUT ((XAuint32) 0x00000001) 446#define XA_IODEVICE_LEDARRAY ((XAuint32) 0x00000002) 447#define XA_IODEVICE_VIBRA ((XAuint32) 0x00000003) 448#define XA_IODEVICE_CAMERA ((XAuint32) 0x00000004) 449#define XA_IODEVICE_RADIO ((XAuint32) 0x00000005) 450 451typedef struct XADataLocator_IODevice_ { 452 XAuint32 locatorType; 453 XAuint32 deviceType; 454 XAuint32 deviceID; 455 XAObjectItf device; 456} XADataLocator_IODevice; 457 458typedef void * XANativeHandle; 459 460typedef struct XADataLocator_NativeDisplay_{ 461 XAuint32 locatorType; 462 XANativeHandle hWindow; 463 XANativeHandle hDisplay; 464} XADataLocator_NativeDisplay; 465 466typedef struct XADataLocator_OutputMix { 467 XAuint32 locatorType; 468 XAObjectItf outputMix; 469} XADataLocator_OutputMix; 470 471typedef struct XADataLocator_URI_ { 472 XAuint32 locatorType; 473 XAchar * URI; 474} XADataLocator_URI; 475 476 477/* ENGINE */ 478 479#define XA_DEFAULTDEVICEID_AUDIOINPUT ((XAuint32) 0xFFFFFFFF) 480#define XA_DEFAULTDEVICEID_AUDIOOUTPUT ((XAuint32) 0xFFFFFFFE) 481#define XA_DEFAULTDEVICEID_LED ((XAuint32) 0xFFFFFFFD) 482#define XA_DEFAULTDEVICEID_VIBRA ((XAuint32) 0xFFFFFFFC) 483#define XA_DEFAULTDEVICEID_CAMERA ((XAuint32) 0xFFFFFFFB) 484 485#define XA_ENGINEOPTION_THREADSAFE ((XAuint32) 0x00000001) 486#define XA_ENGINEOPTION_LOSSOFCONTROL ((XAuint32) 0x00000002) 487 488#define XA_OBJECTID_ENGINE ((XAuint32) 0x00000001) 489#define XA_OBJECTID_LEDDEVICE ((XAuint32) 0x00000002) 490#define XA_OBJECTID_VIBRADEVICE ((XAuint32) 0x00000003) 491#define XA_OBJECTID_MEDIAPLAYER ((XAuint32) 0x00000004) 492#define XA_OBJECTID_MEDIARECORDER ((XAuint32) 0x00000005) 493#define XA_OBJECTID_RADIODEVICE ((XAuint32) 0x00000006) 494#define XA_OBJECTID_OUTPUTMIX ((XAuint32) 0x00000007) 495#define XA_OBJECTID_METADATAEXTRACTOR ((XAuint32) 0x00000008) 496#define XA_OBJECTID_CAMERADEVICE ((XAuint32) 0x00000009) 497 498#define XA_PROFILES_MEDIA_PLAYER ((XAint16) 0x0001) 499#define XA_PROFILES_MEDIA_PLAYER_RECORDER ((XAint16) 0x0002) 500#define XA_PROFILES_PLUS_MIDI ((XAint16) 0x0004) 501 502typedef struct XAEngineOption_ { 503 XAuint32 feature; 504 XAuint32 data; 505} XAEngineOption; 506 507XA_API XAresult XAAPIENTRY xaCreateEngine( 508 XAObjectItf * pEngine, 509 XAuint32 numOptions, 510 const XAEngineOption * pEngineOptions, 511 XAuint32 numInterfaces, 512 const XAInterfaceID * pInterfaceIds, 513 const XAboolean * pInterfaceRequired 514); 515 516XA_API XAresult XAAPIENTRY xaQueryNumSupportedEngineInterfaces( 517 XAuint32 * pNumSupportedInterfaces 518); 519 520XA_API XAresult XAAPIENTRY xaQuerySupportedEngineInterfaces( 521 XAuint32 index, 522 XAInterfaceID * pInterfaceId 523); 524 525typedef struct XALEDDescriptor_ { 526 XAuint8 ledCount; 527 XAuint8 primaryLED; 528 XAuint32 colorMask; 529} XALEDDescriptor; 530 531typedef struct XAVibraDescriptor_ { 532 XAboolean supportsFrequency; 533 XAboolean supportsIntensity; 534 XAmilliHertz minFrequency; 535 XAmilliHertz maxFrequency; 536} XAVibraDescriptor; 537 538 539XA_API extern const XAInterfaceID XA_IID_ENGINE; 540 541struct XAEngineItf_; 542typedef const struct XAEngineItf_ * const * XAEngineItf; 543 544struct XAEngineItf_ { 545 XAresult (*CreateCameraDevice) ( 546 XAEngineItf self, 547 XAObjectItf * pDevice, 548 XAuint32 deviceID, 549 XAuint32 numInterfaces, 550 const XAInterfaceID * pInterfaceIds, 551 const XAboolean * pInterfaceRequired 552 ); 553 XAresult (*CreateRadioDevice) ( 554 XAEngineItf self, 555 XAObjectItf * pDevice, 556 XAuint32 numInterfaces, 557 const XAInterfaceID * pInterfaceIds, 558 const XAboolean * pInterfaceRequired 559 ); 560 XAresult (*CreateLEDDevice) ( 561 XAEngineItf self, 562 XAObjectItf * pDevice, 563 XAuint32 deviceID, 564 XAuint32 numInterfaces, 565 const XAInterfaceID * pInterfaceIds, 566 const XAboolean * pInterfaceRequired 567 ); 568 XAresult (*CreateVibraDevice) ( 569 XAEngineItf self, 570 XAObjectItf * pDevice, 571 XAuint32 deviceID, 572 XAuint32 numInterfaces, 573 const XAInterfaceID * pInterfaceIds, 574 const XAboolean * pInterfaceRequired 575 ); 576 XAresult (*CreateMediaPlayer) ( 577 XAEngineItf self, 578 XAObjectItf * pPlayer, 579 XADataSource * pDataSrc, 580 XADataSource * pBankSrc, 581 XADataSink * pAudioSnk, 582 XADataSink * pImageVideoSnk, 583 XADataSink * pVibra, 584 XADataSink * pLEDArray, 585 XAuint32 numInterfaces, 586 const XAInterfaceID * pInterfaceIds, 587 const XAboolean * pInterfaceRequired 588 ); 589 XAresult (*CreateMediaRecorder) ( 590 XAEngineItf self, 591 XAObjectItf * pRecorder, 592 XADataSource * pAudioSrc, 593 XADataSource * pImageVideoSrc, 594 XADataSink * pDataSnk, 595 XAuint32 numInterfaces, 596 const XAInterfaceID * pInterfaceIds, 597 const XAboolean * pInterfaceRequired 598 ); 599 XAresult (*CreateOutputMix) ( 600 XAEngineItf self, 601 XAObjectItf * pMix, 602 XAuint32 numInterfaces, 603 const XAInterfaceID * pInterfaceIds, 604 const XAboolean * pInterfaceRequired 605 ); 606 XAresult (*CreateMetadataExtractor) ( 607 XAEngineItf self, 608 XAObjectItf * pMetadataExtractor, 609 XADataSource * pDataSource, 610 XAuint32 numInterfaces, 611 const XAInterfaceID * pInterfaceIds, 612 const XAboolean * pInterfaceRequired 613 ); 614 XAresult (*CreateExtensionObject) ( 615 XAEngineItf self, 616 XAObjectItf * pObject, 617 void * pParameters, 618 XAuint32 objectID, 619 XAuint32 numInterfaces, 620 const XAInterfaceID * pInterfaceIds, 621 const XAboolean * pInterfaceRequired 622 ); 623 XAresult (*GetImplementationInfo) ( 624 XAEngineItf self, 625 XAuint32 * pMajor, 626 XAuint32 * pMinor, 627 XAuint32 * pStep, 628 const XAchar * pImplementationText 629 ); 630 XAresult (*QuerySupportedProfiles) ( 631 XAEngineItf self, 632 XAint16 * pProfilesSupported 633 ); 634 XAresult (*QueryNumSupportedInterfaces) ( 635 XAEngineItf self, 636 XAuint32 objectID, 637 XAuint32 * pNumSupportedInterfaces 638 ); 639 XAresult (*QuerySupportedInterfaces) ( 640 XAEngineItf self, 641 XAuint32 objectID, 642 XAuint32 index, 643 XAInterfaceID * pInterfaceId 644 ); 645 XAresult (*QueryNumSupportedExtensions) ( 646 XAEngineItf self, 647 XAuint32 * pNumExtensions 648 ); 649 XAresult (*QuerySupportedExtension) ( 650 XAEngineItf self, 651 XAuint32 index, 652 XAchar * pExtensionName, 653 XAint16 * pNameLength 654 ); 655 XAresult (*IsExtensionSupported) ( 656 XAEngineItf self, 657 const XAchar * pExtensionName, 658 XAboolean * pSupported 659 ); 660 XAresult (*QueryLEDCapabilities) ( 661 XAEngineItf self, 662 XAuint32 *pIndex, 663 XAuint32 * pLEDDeviceID, 664 XALEDDescriptor * pDescriptor 665 ); 666 XAresult (*QueryVibraCapabilities) ( 667 XAEngineItf self, 668 XAuint32 *pIndex, 669 XAuint32 * pVibraDeviceID, 670 XAVibraDescriptor * pDescriptor 671 ); 672}; 673 674/* THREAD SYNC */ 675 676XA_API extern const XAInterfaceID XA_IID_THREADSYNC; 677 678struct XAThreadSyncItf_; 679typedef const struct XAThreadSyncItf_ * const * XAThreadSyncItf; 680 681struct XAThreadSyncItf_ { 682 XAresult (*EnterCriticalSection) ( 683 XAThreadSyncItf self 684 ); 685 XAresult (*ExitCriticalSection) ( 686 XAThreadSyncItf self 687 ); 688}; 689 690 691 692 /*****************************************************************/ 693 /* PLAYBACK RELATED INTERFACES, STRUCTS AND DEFINES */ 694 /*****************************************************************/ 695 696/* PLAY */ 697 698#define XA_TIME_UNKNOWN ((XAuint32) 0xFFFFFFFF) 699 700#define XA_PLAYEVENT_HEADATEND ((XAuint32) 0x00000001) 701#define XA_PLAYEVENT_HEADATMARKER ((XAuint32) 0x00000002) 702#define XA_PLAYEVENT_HEADATNEWPOS ((XAuint32) 0x00000004) 703#define XA_PLAYEVENT_HEADMOVING ((XAuint32) 0x00000008) 704#define XA_PLAYEVENT_HEADSTALLED ((XAuint32) 0x00000010) 705 706#define XA_PLAYSTATE_STOPPED ((XAuint32) 0x00000001) 707#define XA_PLAYSTATE_PAUSED ((XAuint32) 0x00000002) 708#define XA_PLAYSTATE_PLAYING ((XAuint32) 0x00000003) 709 710#define XA_PREFETCHEVENT_STATUSCHANGE ((XAuint32) 0x00000001) 711#define XA_PREFETCHEVENT_FILLLEVELCHANGE ((XAuint32) 0x00000002) 712 713#define XA_PREFETCHSTATUS_UNDERFLOW ((XAuint32) 0x00000001) 714#define XA_PREFETCHSTATUS_SUFFICIENTDATA ((XAuint32) 0x00000002) 715#define XA_PREFETCHSTATUS_OVERFLOW ((XAuint32) 0x00000003) 716 717#define XA_SEEKMODE_FAST ((XAuint32) 0x0001) 718#define XA_SEEKMODE_ACCURATE ((XAuint32) 0x0002) 719 720XA_API extern const XAInterfaceID XA_IID_PLAY; 721 722struct XAPlayItf_; 723typedef const struct XAPlayItf_ * const * XAPlayItf; 724 725typedef void (XAAPIENTRY * xaPlayCallback) ( 726 XAPlayItf caller, 727 void * pContext, 728 XAuint32 event 729); 730 731struct XAPlayItf_ { 732 XAresult (*SetPlayState) ( 733 XAPlayItf self, 734 XAuint32 state 735 ); 736 XAresult (*GetPlayState) ( 737 XAPlayItf self, 738 XAuint32 * pState 739 ); 740 XAresult (*GetDuration) ( 741 XAPlayItf self, 742 XAmillisecond * pMsec 743 ); 744 XAresult (*GetPosition) ( 745 XAPlayItf self, 746 XAmillisecond * pMsec 747 ); 748 XAresult (*RegisterCallback) ( 749 XAPlayItf self, 750 xaPlayCallback callback, 751 void * pContext 752 ); 753 XAresult (*SetCallbackEventsMask) ( 754 XAPlayItf self, 755 XAuint32 eventFlags 756 ); 757 XAresult (*GetCallbackEventsMask) ( 758 XAPlayItf self, 759 XAuint32 * pEventFlags 760 ); 761 XAresult (*SetMarkerPosition) ( 762 XAPlayItf self, 763 XAmillisecond mSec 764 ); 765 XAresult (*ClearMarkerPosition) ( 766 XAPlayItf self 767 ); 768 XAresult (*GetMarkerPosition) ( 769 XAPlayItf self, 770 XAmillisecond * pMsec 771 ); 772 XAresult (*SetPositionUpdatePeriod) ( 773 XAPlayItf self, 774 XAmillisecond mSec 775 ); 776 XAresult (*GetPositionUpdatePeriod) ( 777 XAPlayItf self, 778 XAmillisecond * pMsec 779 ); 780}; 781 782/* PLAYBACK RATE */ 783 784#define XA_RATEPROP_STAGGEREDVIDEO ((XAuint32) 0x00000001) 785#define XA_RATEPROP_SMOOTHVIDEO ((XAuint32) 0x00000002) 786#define XA_RATEPROP_SILENTAUDIO ((XAuint32) 0x00000100) 787#define XA_RATEPROP_STAGGEREDAUDIO ((XAuint32) 0x00000200) 788#define XA_RATEPROP_NOPITCHCORAUDIO ((XAuint32) 0x00000400) 789#define XA_RATEPROP_PITCHCORAUDIO ((XAuint32) 0x00000800) 790 791XA_API extern const XAInterfaceID XA_IID_PLAYBACKRATE; 792 793struct XAPlaybackRateItf_; 794typedef const struct XAPlaybackRateItf_ * const * XAPlaybackRateItf; 795 796struct XAPlaybackRateItf_ { 797 XAresult (*SetRate) ( 798 XAPlaybackRateItf self, 799 XApermille rate 800 ); 801 XAresult (*GetRate) ( 802 XAPlaybackRateItf self, 803 XApermille * pRate 804 ); 805 XAresult (*SetPropertyConstraints) ( 806 XAPlaybackRateItf self, 807 XAuint32 constraints 808 ); 809 XAresult (*GetProperties) ( 810 XAPlaybackRateItf self, 811 XAuint32 * pProperties 812 ); 813 XAresult (*GetCapabilitiesOfRate) ( 814 XAPlaybackRateItf self, 815 XApermille rate, 816 XAuint32 * pCapabilities 817 ); 818 XAresult (*GetRateRange) ( 819 XAPlaybackRateItf self, 820 XAuint8 index, 821 XApermille * pMinRate, 822 XApermille * pMaxRate, 823 XApermille * pStepSize, 824 XAuint32 * pCapabilities 825 ); 826}; 827 828/* PREFETCH STATUS */ 829 830XA_API extern const XAInterfaceID XA_IID_PREFETCHSTATUS; 831 832struct XAPrefetchStatusItf_; 833typedef const struct XAPrefetchStatusItf_ 834 * const * XAPrefetchStatusItf; 835 836typedef void (XAAPIENTRY * xaPrefetchCallback) ( 837 XAPrefetchStatusItf caller, 838 void * pContext, 839 XAuint32 event 840); 841 842struct XAPrefetchStatusItf_ { 843 XAresult (*GetPrefetchStatus) ( 844 XAPrefetchStatusItf self, 845 XAuint32 * pStatus 846 ); 847 XAresult (*GetFillLevel) ( 848 XAPrefetchStatusItf self, 849 XApermille * pLevel 850 ); 851 XAresult (*RegisterCallback) ( 852 XAPrefetchStatusItf self, 853 xaPrefetchCallback callback, 854 void * pContext 855 ); 856 XAresult (*SetCallbackEventsMask) ( 857 XAPrefetchStatusItf self, 858 XAuint32 eventFlags 859 ); 860 XAresult (*GetCallbackEventsMask) ( 861 XAPrefetchStatusItf self, 862 XAuint32 * pEventFlags 863 ); 864 XAresult (*SetFillUpdatePeriod) ( 865 XAPrefetchStatusItf self, 866 XApermille period 867 ); 868 XAresult (*GetFillUpdatePeriod) ( 869 XAPrefetchStatusItf self, 870 XApermille * pPeriod 871 ); 872}; 873 874/* SEEK */ 875 876XA_API extern const XAInterfaceID XA_IID_SEEK; 877 878struct XASeekItf_; 879typedef const struct XASeekItf_ * const * XASeekItf; 880 881struct XASeekItf_ { 882 XAresult (*SetPosition) ( 883 XASeekItf self, 884 XAmillisecond pos, 885 XAuint32 seekMode 886 ); 887 XAresult (*SetLoop) ( 888 XASeekItf self, 889 XAboolean loopEnable, 890 XAmillisecond startPos, 891 XAmillisecond endPos 892 ); 893 XAresult (*GetLoop) ( 894 XASeekItf self, 895 XAboolean * pLoopEnabled, 896 XAmillisecond * pStartPos, 897 XAmillisecond * pEndPos 898 ); 899}; 900 901/* VOLUME */ 902 903XA_API extern const XAInterfaceID XA_IID_VOLUME; 904 905struct XAVolumeItf_; 906typedef const struct XAVolumeItf_ * const * XAVolumeItf; 907 908struct XAVolumeItf_ { 909 XAresult (*SetVolumeLevel) ( 910 XAVolumeItf self, 911 XAmillibel level 912 ); 913 XAresult (*GetVolumeLevel) ( 914 XAVolumeItf self, 915 XAmillibel * pLevel 916 ); 917 XAresult (*GetMaxVolumeLevel) ( 918 XAVolumeItf self, 919 XAmillibel * pMaxLevel 920 ); 921 XAresult (*SetMute) ( 922 XAVolumeItf self, 923 XAboolean mute 924 ); 925 XAresult (*GetMute) ( 926 XAVolumeItf self, 927 XAboolean * pMute 928 ); 929 XAresult (*EnableStereoPosition) ( 930 XAVolumeItf self, 931 XAboolean enable 932 ); 933 XAresult (*IsEnabledStereoPosition) ( 934 XAVolumeItf self, 935 XAboolean * pEnable 936 ); 937 XAresult (*SetStereoPosition) ( 938 XAVolumeItf self, 939 XApermille stereoPosition 940 ); 941 XAresult (*GetStereoPosition) ( 942 XAVolumeItf self, 943 XApermille * pStereoPosition 944 ); 945}; 946 947/* IMAGE CONTROL */ 948 949XA_API extern const XAInterfaceID XA_IID_IMAGECONTROLS; 950 951struct XAImageControlsItf_; 952typedef const struct XAImageControlsItf_ * const * XAImageControlsItf; 953 954struct XAImageControlsItf_ { 955 XAresult (*SetBrightness) ( 956 XAImageControlsItf self, 957 XAuint32 brightness 958 ); 959 XAresult (*GetBrightness) ( 960 XAImageControlsItf self, 961 XAuint32 * pBrightness 962 ); 963 XAresult (*SetContrast) ( 964 XAImageControlsItf self, 965 XAint32 contrast 966 ); 967 XAresult (*GetContrast) ( 968 XAImageControlsItf self, 969 XAint32 * pContrast 970 ); 971 XAresult (*SetGamma) ( 972 XAImageControlsItf self, 973 XApermille gamma 974 ); 975 XAresult (*GetGamma) ( 976 XAImageControlsItf self, 977 XApermille * pGamma 978 ); 979 XAresult (*GetSupportedGammaSettings) ( 980 XAImageControlsItf self, 981 XApermille * pMinValue, 982 XApermille * pMaxValue, 983 XAuint32 * pNumSettings, 984 XApermille ** ppSettings 985 ); 986}; 987 988/* IMAGE EFFECT */ 989 990#define XA_IMAGEEFFECT_MONOCHROME ((XAuint32) 0x00000001) 991#define XA_IMAGEEFFECT_NEGATIVE ((XAuint32) 0x00000002) 992#define XA_IMAGEEFFECT_SEPIA ((XAuint32) 0x00000003) 993#define XA_IMAGEEFFECT_EMBOSS ((XAuint32) 0x00000004) 994#define XA_IMAGEEFFECT_PAINTBRUSH ((XAuint32) 0x00000005) 995#define XA_IMAGEEFFECT_SOLARIZE ((XAuint32) 0x00000006) 996#define XA_IMAGEEFFECT_CARTOON ((XAuint32) 0x00000007) 997 998XA_API extern const XAInterfaceID XA_IID_IMAGEEFFECTS; 999 1000struct XAImageEffectsItf_; 1001typedef const struct XAImageEffectsItf_ * const * XAImageEffectsItf; 1002 1003struct XAImageEffectsItf_ { 1004 XAresult (*QuerySupportedImageEffects) ( 1005 XAImageEffectsItf self, 1006 XAuint32 index, 1007 XAuint32 * pImageEffectId 1008 ); 1009 XAresult (*EnableImageEffect) ( 1010 XAImageEffectsItf self, 1011 XAuint32 imageEffectID 1012 ); 1013 XAresult (*DisableImageEffect) ( 1014 XAImageEffectsItf self, 1015 XAuint32 imageEffectID 1016 ); 1017 XAresult (*IsImageEffectEnabled) ( 1018 XAImageEffectsItf self, 1019 XAuint32 imageEffectID, 1020 XAboolean * pEnabled 1021 ); 1022}; 1023 1024/* VIDEO POST PROCESSING */ 1025 1026#define XA_VIDEOMIRROR_NONE ((XAuint32) 0x00000001) 1027#define XA_VIDEOMIRROR_VERTICAL ((XAuint32) 0x00000002) 1028#define XA_VIDEOMIRROR_HORIZONTAL ((XAuint32) 0x00000003) 1029#define XA_VIDEOMIRROR_BOTH ((XAuint32) 0x00000004) 1030 1031#define XA_VIDEOSCALE_STRETCH ((XAuint32) 0x00000001) 1032#define XA_VIDEOSCALE_FIT ((XAuint32) 0x00000002) 1033#define XA_VIDEOSCALE_CROP ((XAuint32) 0x00000003) 1034 1035#define XA_RENDERINGHINT_NONE ((XAuint32) 0x00000000) 1036#define XA_RENDERINGHINT_ANTIALIASING ((XAuint32) 0x00000001) 1037 1038typedef struct XARectangle_ { 1039 XAuint32 left; 1040 XAuint32 top; 1041 XAuint32 width; 1042 XAuint32 height; 1043} XARectangle; 1044 1045XA_API extern const XAInterfaceID XA_IID_VIDEOPOSTPROCESSING; 1046 1047struct XAVideoPostProcessingItf_; 1048typedef const struct XAVideoPostProcessingItf_ * const * XAVideoPostProcessingItf; 1049 1050struct XAVideoPostProcessingItf_ { 1051 XAresult (*SetRotation) ( 1052 XAVideoPostProcessingItf self, 1053 XAmillidegree rotation 1054 ); 1055 XAresult (*IsArbitraryRotationSupported) ( 1056 XAVideoPostProcessingItf self, 1057 XAboolean *pSupported 1058 ); 1059 XAresult (*SetScaleOptions) ( 1060 XAVideoPostProcessingItf self, 1061 XAuint32 scaleOptions, 1062 XAuint32 backgroundColor, 1063 XAuint32 renderingHints 1064 ); 1065 XAresult (*SetSourceRectangle) ( 1066 XAVideoPostProcessingItf self, 1067 const XARectangle *pSrcRect 1068 ); 1069 XAresult (*SetDestinationRectangle) ( 1070 XAVideoPostProcessingItf self, 1071 const XARectangle *pDestRect 1072 ); 1073 XAresult (*SetMirror) ( 1074 XAVideoPostProcessingItf self, 1075 XAuint32 mirror 1076 ); 1077 XAresult (*Commit) ( 1078 XAVideoPostProcessingItf self 1079 ); 1080}; 1081 1082 1083 1084 /*****************************************************************/ 1085 /* CAPTURING INTERFACES, STRUCTS AND DEFINES */ 1086 /*****************************************************************/ 1087 1088/* RECORD */ 1089 1090#define XA_RECORDEVENT_HEADATLIMIT ((XAuint32) 0x00000001) 1091#define XA_RECORDEVENT_HEADATMARKER ((XAuint32) 0x00000002) 1092#define XA_RECORDEVENT_HEADATNEWPOS ((XAuint32) 0x00000004) 1093#define XA_RECORDEVENT_HEADMOVING ((XAuint32) 0x00000008) 1094#define XA_RECORDEVENT_HEADSTALLED ((XAuint32) 0x00000010) 1095#define XA_RECORDEVENT_BUFFER_FULL ((XAuint32) 0x00000020) 1096 1097#define XA_RECORDSTATE_STOPPED ((XAuint32) 0x00000001) 1098#define XA_RECORDSTATE_PAUSED ((XAuint32) 0x00000002) 1099#define XA_RECORDSTATE_RECORDING ((XAuint32) 0x00000003) 1100 1101XA_API extern const XAInterfaceID XA_IID_RECORD; 1102 1103struct XARecordItf_; 1104typedef const struct XARecordItf_ * const * XARecordItf; 1105 1106typedef void (XAAPIENTRY * xaRecordCallback) ( 1107 XARecordItf caller, 1108 void * pContext, 1109 XAuint32 event 1110); 1111 1112struct XARecordItf_ { 1113 XAresult (*SetRecordState) ( 1114 XARecordItf self, 1115 XAuint32 state 1116 ); 1117 XAresult (*GetRecordState) ( 1118 XARecordItf self, 1119 XAuint32 * pState 1120 ); 1121 XAresult (*SetDurationLimit) ( 1122 XARecordItf self, 1123 XAmillisecond msec 1124 ); 1125 XAresult (*GetPosition) ( 1126 XARecordItf self, 1127 XAmillisecond * pMsec 1128 ); 1129 XAresult (*RegisterCallback) ( 1130 XARecordItf self, 1131 xaRecordCallback callback, 1132 void * pContext 1133 ); 1134 XAresult (*SetCallbackEventsMask) ( 1135 XARecordItf self, 1136 XAuint32 eventFlags 1137 ); 1138 XAresult (*GetCallbackEventsMask) ( 1139 XARecordItf self, 1140 XAuint32 * pEventFlags 1141 ); 1142 XAresult (*SetMarkerPosition) ( 1143 XARecordItf self, 1144 XAmillisecond mSec 1145 ); 1146 XAresult (*ClearMarkerPosition) ( 1147 XARecordItf self 1148 ); 1149 XAresult (*GetMarkerPosition) ( 1150 XARecordItf self, 1151 XAmillisecond * pMsec 1152 ); 1153 XAresult (*SetPositionUpdatePeriod) ( 1154 XARecordItf self, 1155 XAmillisecond mSec 1156 ); 1157 XAresult (*GetPositionUpdatePeriod) ( 1158 XARecordItf self, 1159 XAmillisecond * pMsec 1160 ); 1161}; 1162 1163/* SNAPSHOT */ 1164 1165XA_API extern const XAInterfaceID XA_IID_SNAPSHOT; 1166 1167struct XASnapshotItf_; 1168typedef const struct XASnapshotItf_ * const * XASnapshotItf; 1169 1170typedef void (XAAPIENTRY * xaSnapshotInitiatedCallback) ( 1171 XASnapshotItf caller, 1172 void * context 1173); 1174 1175typedef void (XAAPIENTRY * xaSnapshotTakenCallback) ( 1176 XASnapshotItf caller, 1177 void * context, 1178 XAuint32 numberOfPicsTaken, 1179 const XADataSink * image 1180); 1181 1182struct XASnapshotItf_ { 1183 XAresult (*InitiateSnapshot) ( 1184 XASnapshotItf self, 1185 XAuint32 numberOfPictures, 1186 XAuint32 fps, 1187 XAboolean freezeViewFinder, 1188 XADataSink sink, 1189 xaSnapshotInitiatedCallback initiatedCallback, 1190 xaSnapshotTakenCallback takenCallback, 1191 void * pContext 1192 ); 1193 XAresult (*TakeSnapshot) ( 1194 XASnapshotItf self 1195 ); 1196 XAresult (*CancelSnapshot) ( 1197 XASnapshotItf self 1198 ); 1199 XAresult (*ReleaseBuffers) ( 1200 XASnapshotItf self, 1201 XADataSink * image 1202 ); 1203 XAresult (*GetMaxPicsPerBurst) ( 1204 XASnapshotItf self, 1205 XAuint32 * maxNumberOfPictures 1206 ); 1207 XAresult (*GetBurstFPSRange) ( 1208 XASnapshotItf self, 1209 XAuint32 * minFPS, 1210 XAuint32 * maxFPS 1211 ); 1212 XAresult (*SetShutterFeedback) ( 1213 XASnapshotItf self, 1214 XAboolean enabled 1215 ); 1216 XAresult (*GetShutterFeedback) ( 1217 XASnapshotItf self, 1218 XAboolean * enabled 1219 ); 1220}; 1221 1222 1223 1224 /*****************************************************************/ 1225 /* METADATA RELATED INTERFACES, STRUCTS AND DEFINES */ 1226 /*****************************************************************/ 1227 1228/* METADATA (EXTRACTION, INSERTION, TRAVERSAL) */ 1229 1230#define XA_NODE_PARENT ((XAuint32) 0xFFFFFFFF) 1231 1232#define XA_ROOT_NODE_ID ((XAint32) 0x7FFFFFFF) 1233 1234#define XA_NODETYPE_UNSPECIFIED ((XAuint32) 0x00000001) 1235#define XA_NODETYPE_AUDIO ((XAuint32) 0x00000002) 1236#define XA_NODETYPE_VIDEO ((XAuint32) 0x00000003) 1237#define XA_NODETYPE_IMAGE ((XAuint32) 0x00000004) 1238 1239#define XA_CHARACTERENCODING_UNKNOWN ((XAuint32) 0x00000000) 1240#define XA_CHARACTERENCODING_BINARY ((XAuint32) 0x00000001) 1241#define XA_CHARACTERENCODING_ASCII ((XAuint32) 0x00000002) 1242#define XA_CHARACTERENCODING_BIG5 ((XAuint32) 0x00000003) 1243#define XA_CHARACTERENCODING_CODEPAGE1252 ((XAuint32) 0x00000004) 1244#define XA_CHARACTERENCODING_GB2312 ((XAuint32) 0x00000005) 1245#define XA_CHARACTERENCODING_HZGB2312 ((XAuint32) 0x00000006) 1246#define XA_CHARACTERENCODING_GB12345 ((XAuint32) 0x00000007) 1247#define XA_CHARACTERENCODING_GB18030 ((XAuint32) 0x00000008) 1248#define XA_CHARACTERENCODING_GBK ((XAuint32) 0x00000009) 1249#define XA_CHARACTERENCODING_IMAPUTF7 ((XAuint32) 0x0000000A) 1250#define XA_CHARACTERENCODING_ISO2022JP ((XAuint32) 0x0000000B) 1251#define XA_CHARACTERENCODING_ISO2022JP1 ((XAuint32) 0x0000000B) 1252#define XA_CHARACTERENCODING_ISO88591 ((XAuint32) 0x0000000C) 1253#define XA_CHARACTERENCODING_ISO885910 ((XAuint32) 0x0000000D) 1254#define XA_CHARACTERENCODING_ISO885913 ((XAuint32) 0x0000000E) 1255#define XA_CHARACTERENCODING_ISO885914 ((XAuint32) 0x0000000F) 1256#define XA_CHARACTERENCODING_ISO885915 ((XAuint32) 0x00000010) 1257#define XA_CHARACTERENCODING_ISO88592 ((XAuint32) 0x00000011) 1258#define XA_CHARACTERENCODING_ISO88593 ((XAuint32) 0x00000012) 1259#define XA_CHARACTERENCODING_ISO88594 ((XAuint32) 0x00000013) 1260#define XA_CHARACTERENCODING_ISO88595 ((XAuint32) 0x00000014) 1261#define XA_CHARACTERENCODING_ISO88596 ((XAuint32) 0x00000015) 1262#define XA_CHARACTERENCODING_ISO88597 ((XAuint32) 0x00000016) 1263#define XA_CHARACTERENCODING_ISO88598 ((XAuint32) 0x00000017) 1264#define XA_CHARACTERENCODING_ISO88599 ((XAuint32) 0x00000018) 1265#define XA_CHARACTERENCODING_ISOEUCJP ((XAuint32) 0x00000019) 1266#define XA_CHARACTERENCODING_SHIFTJIS ((XAuint32) 0x0000001A) 1267#define XA_CHARACTERENCODING_SMS7BIT ((XAuint32) 0x0000001B) 1268#define XA_CHARACTERENCODING_UTF7 ((XAuint32) 0x0000001C) 1269#define XA_CHARACTERENCODING_UTF8 ((XAuint32) 0x0000001D) 1270#define XA_CHARACTERENCODING_JAVACONFORMANTUTF8 ((XAuint32) 0x0000001E) 1271#define XA_CHARACTERENCODING_UTF16BE ((XAuint32) 0x0000001F) 1272#define XA_CHARACTERENCODING_UTF16LE ((XAuint32) 0x00000020) 1273 1274#define XA_METADATA_FILTER_KEY ((XAuint8) 0x01) 1275#define XA_METADATA_FILTER_LANG ((XAuint8) 0x02) 1276#define XA_METADATA_FILTER_ENCODING ((XAuint8) 0x04) 1277 1278#define XA_METADATATRAVERSALMODE_ALL ((XAuint32) 0x00000001) 1279#define XA_METADATATRAVERSALMODE_NODE ((XAuint32) 0x00000002) 1280 1281#ifndef _KHRONOS_KEYS_ 1282#define _KHRONOS_KEYS_ 1283#define KHRONOS_TITLE "KhronosTitle" 1284#define KHRONOS_ALBUM "KhronosAlbum" 1285#define KHRONOS_TRACK_NUMBER "KhronosTrackNumber" 1286#define KHRONOS_ARTIST "KhronosArtist" 1287#define KHRONOS_GENRE "KhronosGenre" 1288#define KHRONOS_YEAR "KhronosYear" 1289#define KHRONOS_COMMENT "KhronosComment" 1290#define KHRONOS_ARTIST_URL "KhronosArtistURL" 1291#define KHRONOS_CONTENT_URL "KhronosContentURL" 1292#define KHRONOS_RATING "KhronosRating" 1293#define KHRONOS_ALBUM_ART "KhronosAlbumArt" 1294#define KHRONOS_COPYRIGHT "KhronosCopyright" 1295#endif /* _KHRONOS_KEYS_ */ 1296 1297 1298typedef struct XAMetadataInfo_ { 1299 XAuint32 size; 1300 XAuint32 encoding; 1301 const XAchar langCountry[16]; 1302 XAuint8 data[1]; 1303} XAMetadataInfo; 1304 1305XA_API extern const XAInterfaceID XA_IID_METADATAEXTRACTION; 1306 1307struct XAMetadataExtractionItf_; 1308typedef const struct XAMetadataExtractionItf_ 1309 * const * XAMetadataExtractionItf; 1310 1311struct XAMetadataExtractionItf_ { 1312 XAresult (*GetItemCount) ( 1313 XAMetadataExtractionItf self, 1314 XAuint32 * pItemCount 1315 ); 1316 XAresult (*GetKeySize) ( 1317 XAMetadataExtractionItf self, 1318 XAuint32 index, 1319 XAuint32 * pKeySize 1320 ); 1321 XAresult (*GetKey) ( 1322 XAMetadataExtractionItf self, 1323 XAuint32 index, 1324 XAuint32 keySize, 1325 XAMetadataInfo * pKey 1326 ); 1327 XAresult (*GetValueSize) ( 1328 XAMetadataExtractionItf self, 1329 XAuint32 index, 1330 XAuint32 * pValueSize 1331 ); 1332 XAresult (*GetValue) ( 1333 XAMetadataExtractionItf self, 1334 XAuint32 index, 1335 XAuint32 valueSize, 1336 XAMetadataInfo * pValue 1337 ); 1338 XAresult (*AddKeyFilter) ( 1339 XAMetadataExtractionItf self, 1340 XAuint32 keySize, 1341 const void * pKey, 1342 XAuint32 keyEncoding, 1343 const XAchar * pValueLangCountry, 1344 XAuint32 valueEncoding, 1345 XAuint8 filterMask 1346 ); 1347 XAresult (*ClearKeyFilter) ( 1348 XAMetadataExtractionItf self 1349 ); 1350}; 1351 1352 1353XA_API extern const XAInterfaceID XA_IID_METADATAINSERTION; 1354 1355struct XAMetadataInsertionItf_; 1356typedef const struct XAMetadataInsertionItf_ 1357 * const * XAMetadataInsertionItf; 1358 1359typedef void (XAAPIENTRY * xaMetadataInsertionCallback) ( 1360 XAMetadataInsertionItf caller, 1361 void * pContext, 1362 XAMetadataInfo * pKey, 1363 XAMetadataInfo * pValue, 1364 XAint32 nodeID, 1365 XAboolean result 1366); 1367 1368struct XAMetadataInsertionItf_ { 1369 XAresult (*CreateChildNode) ( 1370 XAMetadataInsertionItf self, 1371 XAint32 parentNodeID, 1372 XAuint32 type, 1373 XAchar * mimeType, 1374 XAint32 * pChildNodeID 1375 ); 1376 XAresult (*GetSupportedKeysCount) ( 1377 XAMetadataInsertionItf self, 1378 XAint32 nodeID, 1379 XAboolean * pFreeKeys, 1380 XAuint32 * pKeyCount, 1381 XAuint32 * pEncodingCount 1382 ); 1383 XAresult (*GetKeySize) ( 1384 XAMetadataInsertionItf self, 1385 XAint32 nodeID, 1386 XAuint32 keyIndex, 1387 XAuint32 * pKeySize 1388 ); 1389 XAresult (*GetKey) ( 1390 XAMetadataInsertionItf self, 1391 XAint32 nodeID, 1392 XAuint32 keyIndex, 1393 XAuint32 keySize, 1394 XAMetadataInfo * pKey 1395 ); 1396 XAresult (*GetFreeKeysEncoding) ( 1397 XAMetadataInsertionItf self, 1398 XAint32 nodeID, 1399 XAuint32 encodingIndex, 1400 XAuint32 * pEncoding 1401 ); 1402 XAresult (*InsertMetadataItem) ( 1403 XAMetadataInsertionItf self, 1404 XAint32 nodeID, 1405 XAMetadataInfo * pKey, 1406 XAMetadataInfo * pValue, 1407 XAboolean overwrite 1408 ); 1409 XAresult (*RegisterCallback) ( 1410 XAMetadataInsertionItf self, 1411 xaMetadataInsertionCallback callback, 1412 void * pContext 1413 ); 1414}; 1415 1416 1417XA_API extern const XAInterfaceID XA_IID_METADATATRAVERSAL; 1418 1419struct XAMetadataTraversalItf_; 1420typedef const struct XAMetadataTraversalItf_ 1421 * const * XAMetadataTraversalItf; 1422 1423struct XAMetadataTraversalItf_ { 1424 XAresult (*SetMode) ( 1425 XAMetadataTraversalItf self, 1426 XAuint32 mode 1427 ); 1428 XAresult (*GetChildCount) ( 1429 XAMetadataTraversalItf self, 1430 XAuint32 * pCount 1431 ); 1432 XAresult (*GetChildMIMETypeSize) ( 1433 XAMetadataTraversalItf self, 1434 XAuint32 index, 1435 XAuint32 * pSize 1436 ); 1437 XAresult (*GetChildInfo) ( 1438 XAMetadataTraversalItf self, 1439 XAuint32 index, 1440 XAint32 * pNodeID, 1441 XAuint32 * pType, 1442 XAuint32 size, 1443 XAchar * pMimeType 1444 ); 1445 XAresult (*SetActiveNode) ( 1446 XAMetadataTraversalItf self, 1447 XAuint32 index 1448 ); 1449}; 1450 1451/* DYNAMIC SOURCE */ 1452 1453XA_API extern const XAInterfaceID XA_IID_DYNAMICSOURCE; 1454 1455struct XADynamicSourceItf_; 1456typedef const struct XADynamicSourceItf_ * const * XADynamicSourceItf; 1457 1458struct XADynamicSourceItf_ { 1459 XAresult (*SetSource) ( 1460 XADynamicSourceItf self, 1461 XADataSource * pDataSource 1462 ); 1463}; 1464 1465 1466 1467 /*****************************************************************/ 1468 /* I/O DEVICES RELATED INTERFACES, STRUCTS AND DEFINES */ 1469 /*****************************************************************/ 1470 1471/* CAMERA AND CAMERA CAPABILITIES */ 1472 1473#define XA_CAMERA_APERTUREMODE_MANUAL ((XAuint32) 0x00000001) 1474#define XA_CAMERA_APERTUREMODE_AUTO ((XAuint32) 0x00000002) 1475 1476#define XA_CAMERA_AUTOEXPOSURESTATUS_SUCCESS ((XAuint32) 0x00000001) 1477#define XA_CAMERA_AUTOEXPOSURESTATUS_UNDEREXPOSURE ((XAuint32) 0x00000002) 1478#define XA_CAMERA_AUTOEXPOSURESTATUS_OVEREXPOSURE ((XAuint32) 0x00000003) 1479 1480#define XA_CAMERACBEVENT_ROTATION ((XAuint32) 0x00000001) 1481#define XA_CAMERACBEVENT_FLASHREADY ((XAuint32) 0x00000002) 1482#define XA_CAMERACBEVENT_FOCUSSTATUS ((XAuint32) 0x00000003) 1483#define XA_CAMERACBEVENT_EXPOSURESTATUS ((XAuint32) 0x00000004) 1484#define XA_CAMERACBEVENT_WHITEBALANCELOCKED ((XAuint32) 0x00000005) 1485#define XA_CAMERACBEVENT_ZOOMSTATUS ((XAuint32) 0x00000006) 1486 1487#define XA_CAMERACAP_FLASH ((XAuint32) 0x00000001) 1488#define XA_CAMERACAP_AUTOFOCUS ((XAuint32) 0x00000002) 1489#define XA_CAMERACAP_CONTINUOUSAUTOFOCUS ((XAuint32) 0x00000004) 1490#define XA_CAMERACAP_MANUALFOCUS ((XAuint32) 0x00000008) 1491#define XA_CAMERACAP_AUTOEXPOSURE ((XAuint32) 0x00000010) 1492#define XA_CAMERACAP_MANUALEXPOSURE ((XAuint32) 0x00000020) 1493#define XA_CAMERACAP_AUTOISOSENSITIVITY ((XAuint32) 0x00000040) 1494#define XA_CAMERACAP_MANUALISOSENSITIVITY ((XAuint32) 0x00000080) 1495#define XA_CAMERACAP_AUTOAPERTURE ((XAuint32) 0x00000100) 1496#define XA_CAMERACAP_MANUALAPERTURE ((XAuint32) 0x00000200) 1497#define XA_CAMERACAP_AUTOSHUTTERSPEED ((XAuint32) 0x00000400) 1498#define XA_CAMERACAP_MANUALSHUTTERSPEED ((XAuint32) 0x00000800) 1499#define XA_CAMERACAP_AUTOWHITEBALANCE ((XAuint32) 0x00001000) 1500#define XA_CAMERACAP_MANUALWHITEBALANCE ((XAuint32) 0x00002000) 1501#define XA_CAMERACAP_OPTICALZOOM ((XAuint32) 0x00004000) 1502#define XA_CAMERACAP_DIGITALZOOM ((XAuint32) 0x00008000) 1503#define XA_CAMERACAP_METERING ((XAuint32) 0x00010000) 1504#define XA_CAMERACAP_BRIGHTNESS ((XAuint32) 0x00020000) 1505#define XA_CAMERACAP_CONTRAST ((XAuint32) 0x00040000) 1506#define XA_CAMERACAP_GAMMA ((XAuint32) 0x00080000) 1507 1508 1509#define XA_CAMERA_EXPOSUREMODE_MANUAL ((XAuint32) 0x00000001) 1510#define XA_CAMERA_EXPOSUREMODE_AUTO ((XAuint32) 0x00000002) 1511#define XA_CAMERA_EXPOSUREMODE_NIGHT ((XAuint32) 0x00000004) 1512#define XA_CAMERA_EXPOSUREMODE_BACKLIGHT ((XAuint32) 0x00000008) 1513#define XA_CAMERA_EXPOSUREMODE_SPOTLIGHT ((XAuint32) 0x00000010) 1514#define XA_CAMERA_EXPOSUREMODE_SPORTS ((XAuint32) 0x00000020) 1515#define XA_CAMERA_EXPOSUREMODE_SNOW ((XAuint32) 0x00000040) 1516#define XA_CAMERA_EXPOSUREMODE_BEACH ((XAuint32) 0x00000080) 1517#define XA_CAMERA_EXPOSUREMODE_LARGEAPERTURE ((XAuint32) 0x00000100) 1518#define XA_CAMERA_EXPOSUREMODE_SMALLAPERTURE ((XAuint32) 0x00000200) 1519#define XA_CAMERA_EXPOSUREMODE_PORTRAIT ((XAuint32) 0x0000400) 1520#define XA_CAMERA_EXPOSUREMODE_NIGHTPORTRAIT ((XAuint32) 0x00000800) 1521 1522#define XA_CAMERA_FLASHMODE_OFF ((XAuint32) 0x00000001) 1523#define XA_CAMERA_FLASHMODE_ON ((XAuint32) 0x00000002) 1524#define XA_CAMERA_FLASHMODE_AUTO ((XAuint32) 0x00000004) 1525#define XA_CAMERA_FLASHMODE_REDEYEREDUCTION ((XAuint32) 0x00000008) 1526#define XA_CAMERA_FLASHMODE_REDEYEREDUCTION_AUTO ((XAuint32) 0x00000010) 1527#define XA_CAMERA_FLASHMODE_FILLIN ((XAuint32) 0x00000020) 1528#define XA_CAMERA_FLASHMODE_TORCH ((XAuint32) 0x00000040) 1529 1530#define XA_CAMERA_FOCUSMODE_MANUAL ((XAuint32) 0x00000001) 1531#define XA_CAMERA_FOCUSMODE_AUTO ((XAuint32) 0x00000002) 1532#define XA_CAMERA_FOCUSMODE_CENTROID ((XAuint32) 0x00000004) 1533#define XA_CAMERA_FOCUSMODE_CONTINUOUS_AUTO ((XAuint32) 0x00000008) 1534#define XA_CAMERA_FOCUSMODE_CONTINUOUS_CENTROID ((XAuint32) 0x00000010) 1535 1536#define XA_CAMERA_FOCUSMODESTATUS_OFF ((XAuint32) 0x00000001) 1537#define XA_CAMERA_FOCUSMODESTATUS_REQUEST ((XAuint32) 0x00000002) 1538#define XA_CAMERA_FOCUSMODESTATUS_REACHED ((XAuint32) 0x00000003) 1539#define XA_CAMERA_FOCUSMODESTATUS_UNABLETOREACH ((XAuint32) 0x00000004) 1540#define XA_CAMERA_FOCUSMODESTATUS_LOST ((XAuint32) 0x00000005) 1541 1542#define XA_CAMERA_ISOSENSITIVITYMODE_MANUAL ((XAuint32) 0x00000001) 1543#define XA_CAMERA_ISOSENSITIVITYMODE_AUTO ((XAuint32) 0x00000002) 1544 1545#define XA_CAMERA_LOCK_AUTOFOCUS ((XAuint32) 0x00000001) 1546#define XA_CAMERA_LOCK_AUTOEXPOSURE ((XAuint32) 0x00000002) 1547#define XA_CAMERA_LOCK_AUTOWHITEBALANCE ((XAuint32) 0x00000004) 1548 1549#define XA_CAMERA_METERINGMODE_AVERAGE ((XAuint32) 0x00000001) 1550#define XA_CAMERA_METERINGMODE_SPOT ((XAuint32) 0x00000002) 1551#define XA_CAMERA_METERINGMODE_MATRIX ((XAuint32) 0x00000004) 1552 1553#define XA_CAMERA_SHUTTERSPEEDMODE_MANUAL ((XAuint32) 0x00000001) 1554#define XA_CAMERA_SHUTTERSPEEDMODE_AUTO ((XAuint32) 0x00000002) 1555 1556#define XA_CAMERA_WHITEBALANCEMODE_MANUAL ((XAuint32) 0x00000001) 1557#define XA_CAMERA_WHITEBALANCEMODE_AUTO ((XAuint32) 0x00000002) 1558#define XA_CAMERA_WHITEBALANCEMODE_SUNLIGHT ((XAuint32) 0x00000004) 1559#define XA_CAMERA_WHITEBALANCEMODE_CLOUDY ((XAuint32) 0x00000008) 1560#define XA_CAMERA_WHITEBALANCEMODE_SHADE ((XAuint32) 0x00000010) 1561#define XA_CAMERA_WHITEBALANCEMODE_TUNGSTEN ((XAuint32) 0x00000020) 1562#define XA_CAMERA_WHITEBALANCEMODE_FLUORESCENT ((XAuint32) 0x00000040) 1563#define XA_CAMERA_WHITEBALANCEMODE_INCANDESCENT ((XAuint32) 0x00000080) 1564#define XA_CAMERA_WHITEBALANCEMODE_FLASH ((XAuint32) 0x00000100) 1565#define XA_CAMERA_WHITEBALANCEMODE_SUNSET ((XAuint32) 0x00000200) 1566 1567#define XA_CAMERA_ZOOM_SLOW ((XAuint32) 50) 1568#define XA_CAMERA_ZOOM_NORMAL ((XAuint32) 100) 1569#define XA_CAMERA_ZOOM_FAST ((XAuint32) 200) 1570#define XA_CAMERA_ZOOM_FASTEST ((XAuint32) 0xFFFFFFFF) 1571 1572#define XA_FOCUSPOINTS_ONE ((XAuint32) 0x00000001) 1573#define XA_FOCUSPOINTS_THREE_3X1 ((XAuint32) 0x00000002) 1574#define XA_FOCUSPOINTS_FIVE_CROSS ((XAuint32) 0x00000003) 1575#define XA_FOCUSPOINTS_SEVEN_CROSS ((XAuint32) 0x00000004) 1576#define XA_FOCUSPOINTS_NINE_SQUARE ((XAuint32) 0x00000005) 1577#define XA_FOCUSPOINTS_ELEVEN_CROSS ((XAuint32) 0x00000006) 1578#define XA_FOCUSPOINTS_TWELVE_3X4 ((XAuint32) 0x00000007) 1579#define XA_FOCUSPOINTS_TWELVE_4X3 ((XAuint32) 0x00000008) 1580#define XA_FOCUSPOINTS_SIXTEEN_SQUARE ((XAuint32) 0x00000009) 1581#define XA_FOCUSPOINTS_CUSTOM ((XAuint32) 0x0000000A) 1582 1583typedef struct XAFocusPointPosition_ { 1584 XAuint32 left; 1585 XAuint32 top; 1586 XAuint32 width; 1587 XAuint32 height; 1588} XAFocusPointPosition; 1589 1590#define XA_ORIENTATION_UNKNOWN ((XAuint32) 0x00000001) 1591#define XA_ORIENTATION_OUTWARDS ((XAuint32) 0x00000002) 1592#define XA_ORIENTATION_INWARDS ((XAuint32) 0x00000003) 1593 1594typedef struct XACameraDescriptor_ { 1595 XAchar * name; 1596 XAuint32 maxWidth; 1597 XAuint32 maxHeight; 1598 XAuint32 orientation; 1599 XAuint32 featuresSupported; 1600 XAuint32 exposureModesSupported; 1601 XAuint32 flashModesSupported; 1602 XAuint32 focusModesSupported; 1603 XAuint32 meteringModesSupported; 1604 XAuint32 whiteBalanceModesSupported; 1605} XACameraDescriptor; 1606 1607XA_API extern const XAInterfaceID XA_IID_CAMERACAPABILITIES; 1608 1609struct XACameraCapabilitiesItf_; 1610typedef const struct XACameraCapabilitiesItf_ 1611 * const * XACameraCapabilitiesItf; 1612 1613struct XACameraCapabilitiesItf_ { 1614 XAresult (*GetCameraCapabilities) ( 1615 XACameraCapabilitiesItf self, 1616 XAuint32 *pIndex, 1617 XAuint32 * pCameraDeviceID, 1618 XACameraDescriptor * pDescriptor 1619 ); 1620 XAresult (*QueryFocusRegionPatterns) ( 1621 XACameraCapabilitiesItf self, 1622 XAuint32 cameraDeviceID, 1623 XAuint32 * pPatternID, 1624 XAuint32 * pFocusPattern, 1625 XAuint32 * pCustomPoints1, 1626 XAuint32 * pCustomPoints2 1627 ); 1628 XAresult (*GetSupportedAutoLocks) ( 1629 XACameraCapabilitiesItf self, 1630 XAuint32 cameraDeviceID, 1631 XAuint32 * pNumCombinations, 1632 XAuint32 ** ppLocks 1633 ); 1634 XAresult (*GetSupportedFocusManualSettings) ( 1635 XACameraCapabilitiesItf self, 1636 XAuint32 cameraDeviceID, 1637 XAboolean macroEnabled, 1638 XAmillimeter * pMinValue, 1639 XAmillimeter * pMaxValue, 1640 XAuint32 * pNumSettings, 1641 XAmillimeter ** ppSettings 1642 ); 1643 XAresult (*GetSupportedISOSensitivitySettings) ( 1644 XACameraCapabilitiesItf self, 1645 XAuint32 cameraDeviceID, 1646 XAuint32 * pMinValue, 1647 XAuint32 * pMaxValue, 1648 XAuint32 * pNumSettings, 1649 XAuint32 ** ppSettings 1650 ); 1651 XAresult (*GetSupportedApertureManualSettings) ( 1652 XACameraCapabilitiesItf self, 1653 XAuint32 cameraDeviceID, 1654 XAuint32 * pMinValue, 1655 XAuint32 * pMaxValue, 1656 XAuint32 * pNumSettings, 1657 XAuint32 ** ppSettings 1658 ); 1659 XAresult (*GetSupportedShutterSpeedManualSettings) ( 1660 XACameraCapabilitiesItf self, 1661 XAuint32 cameraDeviceID, 1662 XAmicrosecond * pMinValue, 1663 XAmicrosecond * pMaxValue, 1664 XAuint32 * pNumSettings, 1665 XAmicrosecond ** ppSettings 1666 ); 1667 XAresult (*GetSupportedWhiteBalanceManualSettings) ( 1668 XACameraCapabilitiesItf self, 1669 XAuint32 cameraDeviceID, 1670 XAuint32 * pMinValue, 1671 XAuint32 * pMaxValue, 1672 XAuint32 * pNumSettings, 1673 XAuint32 ** ppSettings 1674 ); 1675 XAresult (*GetSupportedZoomSettings) ( 1676 XACameraCapabilitiesItf self, 1677 XAuint32 cameraDeviceID, 1678 XAboolean digitalEnabled, 1679 XAboolean macroEnabled, 1680 XApermille * pMaxValue, 1681 XAuint32 * pNumSettings, 1682 XApermille ** ppSettings, 1683 XAboolean * pSpeedSupported 1684 1685 ); 1686}; 1687 1688XA_API extern const XAInterfaceID XA_IID_CAMERA; 1689 1690struct XACameraItf_; 1691typedef const struct XACameraItf_ * const * XACameraItf; 1692 1693typedef void (XAAPIENTRY * xaCameraCallback) ( 1694 XACameraItf caller, 1695 void * pContext, 1696 XAuint32 eventId, 1697 XAuint32 eventData 1698); 1699 1700struct XACameraItf_ { 1701 XAresult (*RegisterCallback) ( 1702 XACameraItf self, 1703 xaCameraCallback callback, 1704 void * pContext 1705 ); 1706 XAresult (*SetFlashMode) ( 1707 XACameraItf self, 1708 XAuint32 flashMode 1709 ); 1710 XAresult (*GetFlashMode) ( 1711 XACameraItf self, 1712 XAuint32 * pFlashMode 1713 ); 1714 XAresult (*IsFlashReady) ( 1715 XACameraItf self, 1716 XAboolean * pReady 1717 ); 1718 XAresult (*SetFocusMode) ( 1719 XACameraItf self, 1720 XAuint32 focusMode, 1721 XAmillimeter manualSetting, 1722 XAboolean macroEnabled 1723 ); 1724 XAresult (*GetFocusMode) ( 1725 XACameraItf self, 1726 XAuint32 * pFocusMode, 1727 XAmillimeter * pManualSetting, 1728 XAboolean * pMacroEnabled 1729 ); 1730 XAresult (*SetFocusRegionPattern) ( 1731 XACameraItf self, 1732 XAuint32 focusPattern, 1733 XAuint32 activePoints1, 1734 XAuint32 activePoints2 1735 ); 1736 XAresult (*GetFocusRegionPattern) ( 1737 XACameraItf self, 1738 XAuint32 * pFocusPattern, 1739 XAuint32 * pActivePoints1, 1740 XAuint32 * pActivePoints2 1741 ); 1742 XAresult (*GetFocusRegionPositions) ( 1743 XACameraItf self, 1744 XAuint32 * pNumPositionEntries, 1745 XAFocusPointPosition * pFocusPosition 1746 ); 1747 XAresult (*GetFocusModeStatus) ( 1748 XACameraItf self, 1749 XAuint32 * pFocusStatus, 1750 XAuint32 * pRegionStatus1, 1751 XAuint32 * pRegionStatus2 1752 ); 1753 XAresult (*SetMeteringMode) ( 1754 XACameraItf self, 1755 XAuint32 meteringMode 1756 ); 1757 XAresult (*GetMeteringMode) ( 1758 XACameraItf self, 1759 XAuint32 * pMeteringMode 1760 ); 1761 XAresult (*SetExposureMode) ( 1762 XACameraItf self, 1763 XAuint32 exposure, 1764 XAuint32 compensation 1765 ); 1766 XAresult (*GetExposureMode) ( 1767 XACameraItf self, 1768 XAuint32 * pExposure, 1769 XAuint32 * pCompensation 1770 ); 1771 XAresult (*SetISOSensitivity) ( 1772 XACameraItf self, 1773 XAuint32 isoSensitivity, 1774 XAuint32 manualSetting 1775 ); 1776 XAresult (*GetISOSensitivity) ( 1777 XACameraItf self, 1778 XAuint32 * pIsoSensitivity, 1779 XAuint32 * pManualSetting 1780 ); 1781 XAresult (*SetAperture) ( 1782 XACameraItf self, 1783 XAuint32 aperture, 1784 XAuint32 manualSetting 1785 ); 1786 XAresult (*GetAperture) ( 1787 XACameraItf self, 1788 XAuint32 * pAperture, 1789 XAuint32 * pManualSetting 1790 ); 1791 XAresult (*SetShutterSpeed) ( 1792 XACameraItf self, 1793 XAuint32 shutterSpeed, 1794 XAmicrosecond manualSetting 1795 ); 1796 XAresult (*GetShutterSpeed) ( 1797 XACameraItf self, 1798 XAuint32 * pShutterSpeed, 1799 XAmicrosecond * pManualSetting 1800 ); 1801 XAresult (*SetWhiteBalance) ( 1802 XACameraItf self, 1803 XAuint32 whiteBalance, 1804 XAuint32 manualSetting 1805 ); 1806 XAresult (*GetWhiteBalance) ( 1807 XACameraItf self, 1808 XAuint32 * pWhiteBalance, 1809 XAuint32 * pManualSetting 1810 ); 1811 XAresult (*SetAutoLocks) ( 1812 XACameraItf self, 1813 XAuint32 locks 1814 ); 1815 XAresult (*GetAutoLocks) ( 1816 XACameraItf self, 1817 XAuint32 * locks 1818 ); 1819 XAresult (*SetZoom) ( 1820 XACameraItf self, 1821 XApermille zoom, 1822 XAboolean digitalEnabled, 1823 XAuint32 speed, 1824 XAboolean async 1825 ); 1826 XAresult (*GetZoom) ( 1827 XACameraItf self, 1828 XApermille * pZoom, 1829 XAboolean * pDigital 1830 ); 1831}; 1832 1833/* AUDIO I/O DEVICE CAPABILITIES */ 1834 1835#define XA_DEVCONNECTION_INTEGRATED ((XAint16) 0x0001) 1836#define XA_DEVCONNECTION_ATTACHED_WIRED ((XAint16) 0x0100) 1837#define XA_DEVCONNECTION_ATTACHED_WIRELESS ((XAint16) 0x0200) 1838#define XA_DEVCONNECTION_NETWORK ((XAint16) 0x0400) 1839 1840#define XA_DEVLOCATION_HANDSET ((XAint16) 0x0001) 1841#define XA_DEVLOCATION_HEADSET ((XAint16) 0x0002) 1842#define XA_DEVLOCATION_CARKIT ((XAint16) 0x0003) 1843#define XA_DEVLOCATION_DOCK ((XAint16) 0x0004) 1844#define XA_DEVLOCATION_REMOTE ((XAint16) 0x0005) 1845 1846#define XA_DEVSCOPE_UNKNOWN ((XAint16) 0x0001) 1847#define XA_DEVSCOPE_ENVIRONMENT ((XAint16) 0x0002) 1848#define XA_DEVSCOPE_USER ((XAint16) 0x0003) 1849 1850typedef struct XAAudioInputDescriptor_ { 1851 XAchar * deviceName; 1852 XAint16 deviceConnection; 1853 XAint16 deviceScope; 1854 XAint16 deviceLocation; 1855 XAboolean isForTelephony; 1856 XAmilliHertz minSampleRate; 1857 XAmilliHertz maxSampleRate; 1858 XAboolean isFreqRangeContinuous; 1859 XAmilliHertz * samplingRatesSupported; 1860 XAint16 numOfSamplingRatesSupported; 1861 XAint16 maxChannels; 1862} XAAudioInputDescriptor; 1863 1864typedef struct XAAudioOutputDescriptor_ { 1865 XAchar *pDeviceName; 1866 XAint16 deviceConnection; 1867 XAint16 deviceScope; 1868 XAint16 deviceLocation; 1869 XAboolean isForTelephony; 1870 XAmilliHertz minSampleRate; 1871 XAmilliHertz maxSampleRate; 1872 XAboolean isFreqRangeContinuous; 1873 XAmilliHertz *samplingRatesSupported; 1874 XAint16 numOfSamplingRatesSupported; 1875 XAint16 maxChannels; 1876} XAAudioOutputDescriptor; 1877 1878XA_API extern const XAInterfaceID XA_IID_AUDIOIODEVICECAPABILITIES; 1879 1880struct XAAudioIODeviceCapabilitiesItf_; 1881typedef const struct XAAudioIODeviceCapabilitiesItf_ 1882 * const * XAAudioIODeviceCapabilitiesItf; 1883 1884typedef void (XAAPIENTRY * xaAvailableAudioInputsChangedCallback) ( 1885 XAAudioIODeviceCapabilitiesItf caller, 1886 void * pContext, 1887 XAuint32 deviceID, 1888 XAint32 numInputs, 1889 XAboolean isNew 1890); 1891 1892typedef void (XAAPIENTRY * xaAvailableAudioOutputsChangedCallback) ( 1893 XAAudioIODeviceCapabilitiesItf caller, 1894 void * pContext, 1895 XAuint32 deviceID, 1896 XAint32 numOutputs, 1897 XAboolean isNew 1898); 1899 1900typedef void (XAAPIENTRY * xaDefaultDeviceIDMapChangedCallback) ( 1901 XAAudioIODeviceCapabilitiesItf caller, 1902 void * pContext, 1903 XAboolean isOutput, 1904 XAint32 numDevices 1905); 1906 1907struct XAAudioIODeviceCapabilitiesItf_ { 1908 XAresult (*GetAvailableAudioInputs) ( 1909 XAAudioIODeviceCapabilitiesItf self, 1910 XAint32 * pNumInputs, 1911 XAuint32 * pInputDeviceIDs 1912 ); 1913 XAresult (*QueryAudioInputCapabilities) ( 1914 XAAudioIODeviceCapabilitiesItf self, 1915 XAuint32 deviceID, 1916 XAAudioInputDescriptor * pDescriptor 1917 ); 1918 XAresult (*RegisterAvailableAudioInputsChangedCallback) ( 1919 XAAudioIODeviceCapabilitiesItf self, 1920 xaAvailableAudioInputsChangedCallback callback, 1921 void * pContext 1922 ); 1923 XAresult (*GetAvailableAudioOutputs) ( 1924 XAAudioIODeviceCapabilitiesItf self, 1925 XAint32 * pNumOutputs, 1926 XAuint32 * pOutputDeviceIDs 1927 ); 1928 XAresult (*QueryAudioOutputCapabilities) ( 1929 XAAudioIODeviceCapabilitiesItf self, 1930 XAuint32 deviceID, 1931 XAAudioOutputDescriptor * pDescriptor 1932 ); 1933 XAresult (*RegisterAvailableAudioOutputsChangedCallback) ( 1934 XAAudioIODeviceCapabilitiesItf self, 1935 xaAvailableAudioOutputsChangedCallback callback, 1936 void * pContext 1937 ); 1938 XAresult (*RegisterDefaultDeviceIDMapChangedCallback) ( 1939 XAAudioIODeviceCapabilitiesItf self, 1940 xaDefaultDeviceIDMapChangedCallback callback, 1941 void * pContext 1942 ); 1943 XAresult (*GetAssociatedAudioInputs) ( 1944 XAAudioIODeviceCapabilitiesItf self, 1945 XAuint32 deviceID, 1946 XAint32 * pNumAudioInputs, 1947 XAuint32 * pAudioInputDeviceIDs 1948 ); 1949 XAresult (*GetAssociatedAudioOutputs) ( 1950 XAAudioIODeviceCapabilitiesItf self, 1951 XAuint32 deviceID, 1952 XAint32 * pNumAudioOutputs, 1953 XAuint32 * pAudioOutputDeviceIDs 1954 ); 1955 XAresult (*GetDefaultAudioDevices) ( 1956 XAAudioIODeviceCapabilitiesItf self, 1957 XAuint32 defaultDeviceID, 1958 XAint32 *pNumAudioDevices, 1959 XAuint32 *pAudioDeviceIDs 1960 ); 1961 XAresult (*QuerySampleFormatsSupported) ( 1962 XAAudioIODeviceCapabilitiesItf self, 1963 XAuint32 deviceID, 1964 XAmilliHertz samplingRate, 1965 XAint32 *pSampleFormats, 1966 XAint32 *pNumOfSampleFormats 1967 ); 1968}; 1969 1970/* DEVICE VOLUME */ 1971 1972XA_API extern const XAInterfaceID XA_IID_DEVICEVOLUME; 1973 1974struct XADeviceVolumeItf_; 1975typedef const struct XADeviceVolumeItf_ * const * XADeviceVolumeItf; 1976 1977struct XADeviceVolumeItf_ { 1978 XAresult (*GetVolumeScale) ( 1979 XADeviceVolumeItf self, 1980 XAuint32 deviceID, 1981 XAint32 * pMinValue, 1982 XAint32 * pMaxValue, 1983 XAboolean * pIsMillibelScale 1984 ); 1985 XAresult (*SetVolume) ( 1986 XADeviceVolumeItf self, 1987 XAuint32 deviceID, 1988 XAint32 volume 1989 ); 1990 XAresult (*GetVolume) ( 1991 XADeviceVolumeItf self, 1992 XAuint32 deviceID, 1993 XAint32 * pVolume 1994 ); 1995}; 1996 1997/* EQUALIZER */ 1998 1999#define XA_EQUALIZER_UNDEFINED ((XAuint16) 0xFFFF) 2000 2001XA_API extern const XAInterfaceID XA_IID_EQUALIZER; 2002 2003struct XAEqualizerItf_; 2004typedef const struct XAEqualizerItf_ * const * XAEqualizerItf; 2005 2006struct XAEqualizerItf_ { 2007 XAresult (*SetEnabled) ( 2008 XAEqualizerItf self, 2009 XAboolean enabled 2010 ); 2011 XAresult (*IsEnabled) ( 2012 XAEqualizerItf self, 2013 XAboolean * pEnabled 2014 ); 2015 XAresult (*GetNumberOfBands) ( 2016 XAEqualizerItf self, 2017 XAuint16 * pNumBands 2018 ); 2019 XAresult (*GetBandLevelRange) ( 2020 XAEqualizerItf self, 2021 XAmillibel * pMin, 2022 XAmillibel * pMax 2023 ); 2024 XAresult (*SetBandLevel) ( 2025 XAEqualizerItf self, 2026 XAuint16 band, 2027 XAmillibel level 2028 ); 2029 XAresult (*GetBandLevel) ( 2030 XAEqualizerItf self, 2031 XAuint16 band, 2032 XAmillibel * pLevel 2033 ); 2034 XAresult (*GetCenterFreq) ( 2035 XAEqualizerItf self, 2036 XAuint16 band, 2037 XAmilliHertz * pCenter 2038 ); 2039 XAresult (*GetBandFreqRange) ( 2040 XAEqualizerItf self, 2041 XAuint16 band, 2042 XAmilliHertz * pMin, 2043 XAmilliHertz * pMax 2044 ); 2045 XAresult (*GetBand) ( 2046 XAEqualizerItf self, 2047 XAmilliHertz frequency, 2048 XAuint16 * pBand 2049 ); 2050 XAresult (*GetCurrentPreset) ( 2051 XAEqualizerItf self, 2052 XAuint16 * pPreset 2053 ); 2054 XAresult (*UsePreset) ( 2055 XAEqualizerItf self, 2056 XAuint16 index 2057 ); 2058 XAresult (*GetNumberOfPresets) ( 2059 XAEqualizerItf self, 2060 XAuint16 * pNumPresets 2061 ); 2062 XAresult (*GetPresetName) ( 2063 XAEqualizerItf self, 2064 XAuint16 index, 2065 const XAchar ** ppName 2066 ); 2067}; 2068 2069/* OUTPUT MIX */ 2070 2071XA_API extern const XAInterfaceID XA_IID_OUTPUTMIX; 2072 2073struct XAOutputMixItf_; 2074typedef const struct XAOutputMixItf_ * const * XAOutputMixItf; 2075 2076typedef void (XAAPIENTRY * xaMixDeviceChangeCallback) ( 2077 XAOutputMixItf caller, 2078 void * pContext 2079); 2080 2081struct XAOutputMixItf_ { 2082 XAresult (*GetDestinationOutputDeviceIDs) ( 2083 XAOutputMixItf self, 2084 XAint32 * pNumDevices, 2085 XAuint32 * pDeviceIDs 2086 ); 2087 XAresult (*RegisterDeviceChangeCallback) ( 2088 XAOutputMixItf self, 2089 xaMixDeviceChangeCallback callback, 2090 void * pContext 2091 ); 2092 XAresult (*ReRoute) ( 2093 XAOutputMixItf self, 2094 XAint32 numOutputDevices, 2095 XAuint32 * pOutputDeviceIDs 2096 ); 2097}; 2098 2099/* RADIO */ 2100 2101#define XA_FREQRANGE_FMEUROAMERICA ((XAuint8) 0x01) 2102#define XA_FREQRANGE_FMJAPAN ((XAuint8) 0x02) 2103#define XA_FREQRANGE_AMLW ((XAuint8) 0x03) 2104#define XA_FREQRANGE_AMMW ((XAuint8) 0x04) 2105#define XA_FREQRANGE_AMSW ((XAuint8) 0x05) 2106 2107#define XA_RADIO_EVENT_ANTENNA_STATUS_CHANGED ((XAuint32) 0x00000001) 2108#define XA_RADIO_EVENT_FREQUENCY_CHANGED ((XAuint32) 0x00000002) 2109#define XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED ((XAuint32) 0x00000003) 2110#define XA_RADIO_EVENT_PRESET_CHANGED ((XAuint32) 0x00000004) 2111#define XA_RADIO_EVENT_SEEK_COMPLETED ((XAuint32) 0x00000005) 2112 2113#define XA_STEREOMODE_MONO ((XAuint32) 0x00000000) 2114#define XA_STEREOMODE_STEREO ((XAuint32) 0x00000001) 2115#define XA_STEREOMODE_AUTO ((XAuint32) 0x00000002) 2116 2117XA_API extern const XAInterfaceID XA_IID_RADIO; 2118 2119struct XARadioItf_; 2120typedef const struct XARadioItf_ * const * XARadioItf; 2121 2122typedef void (XAAPIENTRY * xaRadioCallback) ( 2123 XARadioItf caller, 2124 void * pContext, 2125 XAuint32 event, 2126 XAuint32 eventIntData, 2127 XAboolean eventBooleanData 2128); 2129 2130struct XARadioItf_ { 2131 XAresult (*SetFreqRange) ( 2132 XARadioItf self, 2133 XAuint8 range 2134 ); 2135 XAresult (*GetFreqRange) ( 2136 XARadioItf self, 2137 XAuint8 * pRange 2138 ); 2139 XAresult (*IsFreqRangeSupported) ( 2140 XARadioItf self, 2141 XAuint8 range, 2142 XAboolean * pSupported 2143 ); 2144 XAresult (*GetFreqRangeProperties) ( 2145 XARadioItf self, 2146 XAuint8 range, 2147 XAuint32 * pMinFreq, 2148 XAuint32 * pMaxFreq, 2149 XAuint32 * pFreqInterval 2150 ); 2151 XAresult (*SetFrequency) ( 2152 XARadioItf self, 2153 XAuint32 freq 2154 ); 2155 XAresult (*CancelSetFrequency) ( 2156 XARadioItf self 2157 ); 2158 XAresult (*GetFrequency) ( 2159 XARadioItf self, 2160 XAuint32 * pFreq 2161 ); 2162 XAresult (*SetSquelch) ( 2163 XARadioItf self, 2164 XAboolean squelch 2165 ); 2166 XAresult (*GetSquelch) ( 2167 XARadioItf self, 2168 XAboolean * pSquelch 2169 ); 2170 XAresult (*SetStereoMode) ( 2171 XARadioItf self, 2172 XAuint32 mode 2173 ); 2174 XAresult (*GetStereoMode) ( 2175 XARadioItf self, 2176 XAuint32 * pMode 2177 ); 2178 XAresult (*GetSignalStrength) ( 2179 XARadioItf self, 2180 XAuint32 * pStrength 2181 ); 2182 XAresult (*Seek) ( 2183 XARadioItf self, 2184 XAboolean upwards 2185 ); 2186 XAresult (*StopSeeking) ( 2187 XARadioItf self 2188 ); 2189 XAresult (*GetNumberOfPresets) ( 2190 XARadioItf self, 2191 XAuint32 * pNumPresets 2192 ); 2193 XAresult (*SetPreset) ( 2194 XARadioItf self, 2195 XAuint32 preset, 2196 XAuint32 freq, 2197 XAuint8 range, 2198 XAuint32 mode, 2199 const XAchar * pName 2200 ); 2201 XAresult (*GetPreset) ( 2202 XARadioItf self, 2203 XAuint32 preset, 2204 XAuint32 * pFreq, 2205 XAuint8 * pRange, 2206 XAuint32 * pMode, 2207 XAchar * pName, 2208 XAuint16 * pNameLength 2209 ); 2210 XAresult (*RegisterRadioCallback) ( 2211 XARadioItf self, 2212 xaRadioCallback callback, 2213 void * pContext 2214 ); 2215}; 2216 2217/* RDS */ 2218 2219#define XA_RDS_EVENT_NEW_PI ((XAuint16) 0x0001) 2220#define XA_RDS_EVENT_NEW_PTY ((XAuint16) 0x0002) 2221#define XA_RDS_EVENT_NEW_PS ((XAuint16) 0x0004) 2222#define XA_RDS_EVENT_NEW_RT ((XAuint16) 0x0008) 2223#define XA_RDS_EVENT_NEW_RT_PLUS ((XAuint16) 0x0010) 2224#define XA_RDS_EVENT_NEW_CT ((XAuint16) 0x0020) 2225#define XA_RDS_EVENT_NEW_TA ((XAuint16) 0x0040) 2226#define XA_RDS_EVENT_NEW_TP ((XAuint16) 0x0080) 2227#define XA_RDS_EVENT_NEW_ALARM ((XAuint16) 0x0100) 2228 2229#define XA_RDSPROGRAMMETYPE_RDSPTY_NONE \ 2230 ((XAuint32) 0x00000000) 2231#define XA_RDSPROGRAMMETYPE_RDSPTY_NEWS \ 2232 ((XAuint32) 0x00000001) 2233#define XA_RDSPROGRAMMETYPE_RDSPTY_CURRENTAFFAIRS \ 2234 ((XAuint32) 0x00000002) 2235#define XA_RDSPROGRAMMETYPE_RDSPTY_INFORMATION \ 2236 ((XAuint32) 0x00000003) 2237#define XA_RDSPROGRAMMETYPE_RDSPTY_SPORT \ 2238 ((XAuint32) 0x00000004) 2239#define XA_RDSPROGRAMMETYPE_RDSPTY_EDUCATION \ 2240 ((XAuint32) 0x00000005) 2241#define XA_RDSPROGRAMMETYPE_RDSPTY_DRAMA \ 2242 ((XAuint32) 0x00000006) 2243#define XA_RDSPROGRAMMETYPE_RDSPTY_CULTURE \ 2244 ((XAuint32) 0x00000007) 2245#define XA_RDSPROGRAMMETYPE_RDSPTY_SCIENCE \ 2246 ((XAuint32) 0x00000008) 2247#define XA_RDSPROGRAMMETYPE_RDSPTY_VARIEDSPEECH \ 2248 ((XAuint32) 0x00000009) 2249#define XA_RDSPROGRAMMETYPE_RDSPTY_POPMUSIC \ 2250 ((XAuint32) 0x0000000A) 2251#define XA_RDSPROGRAMMETYPE_RDSPTY_ROCKMUSIC \ 2252 ((XAuint32) 0x0000000B) 2253#define XA_RDSPROGRAMMETYPE_RDSPTY_EASYLISTENING \ 2254 ((XAuint32) 0x0000000C) 2255#define XA_RDSPROGRAMMETYPE_RDSPTY_LIGHTCLASSICAL \ 2256 ((XAuint32) 0x0000000D) 2257#define XA_RDSPROGRAMMETYPE_RDSPTY_SERIOUSCLASSICAL \ 2258 ((XAuint32) 0x0000000E) 2259#define XA_RDSPROGRAMMETYPE_RDSPTY_OTHERMUSIC \ 2260 ((XAuint32) 0x0000000F) 2261#define XA_RDSPROGRAMMETYPE_RDSPTY_WEATHER \ 2262 ((XAuint32) 0x00000010) 2263#define XA_RDSPROGRAMMETYPE_RDSPTY_FINANCE \ 2264 ((XAuint32) 0x00000011) 2265#define XA_RDSPROGRAMMETYPE_RDSPTY_CHILDRENSPROGRAMMES \ 2266 ((XAuint32) 0x00000012) 2267#define XA_RDSPROGRAMMETYPE_RDSPTY_SOCIALAFFAIRS \ 2268 ((XAuint32) 0x00000013) 2269#define XA_RDSPROGRAMMETYPE_RDSPTY_RELIGION \ 2270 ((XAuint32) 0x00000014) 2271#define XA_RDSPROGRAMMETYPE_RDSPTY_PHONEIN \ 2272 ((XAuint32) 0x00000015) 2273#define XA_RDSPROGRAMMETYPE_RDSPTY_TRAVEL \ 2274 ((XAuint32) 0x00000016) 2275#define XA_RDSPROGRAMMETYPE_RDSPTY_LEISURE \ 2276 ((XAuint32) 0x00000017) 2277#define XA_RDSPROGRAMMETYPE_RDSPTY_JAZZMUSIC \ 2278 ((XAuint32) 0x00000018) 2279#define XA_RDSPROGRAMMETYPE_RDSPTY_COUNTRYMUSIC \ 2280 ((XAuint32) 0x00000019) 2281#define XA_RDSPROGRAMMETYPE_RDSPTY_NATIONALMUSIC \ 2282 ((XAuint32) 0x0000001A) 2283#define XA_RDSPROGRAMMETYPE_RDSPTY_OLDIESMUSIC \ 2284 ((XAuint32) 0x0000001B) 2285#define XA_RDSPROGRAMMETYPE_RDSPTY_FOLKMUSIC \ 2286 ((XAuint32) 0x0000001C) 2287#define XA_RDSPROGRAMMETYPE_RDSPTY_DOCUMENTARY \ 2288 ((XAuint32) 0x0000001D) 2289#define XA_RDSPROGRAMMETYPE_RDSPTY_ALARMTEST \ 2290 ((XAuint32) 0x0000001E) 2291#define XA_RDSPROGRAMMETYPE_RDSPTY_ALARM \ 2292 ((XAuint32) 0x0000001F) 2293 2294#define XA_RDSPROGRAMMETYPE_RBDSPTY_NONE \ 2295 ((XAuint32) 0x00000000) 2296#define XA_RDSPROGRAMMETYPE_RBDSPTY_NEWS \ 2297 ((XAuint32) 0x00000001) 2298#define XA_RDSPROGRAMMETYPE_RBDSPTY_INFORMATION \ 2299 ((XAuint32) 0x00000002) 2300#define XA_RDSPROGRAMMETYPE_RBDSPTY_SPORTS \ 2301 ((XAuint32) 0x00000003) 2302#define XA_RDSPROGRAMMETYPE_RBDSPTY_TALK \ 2303 ((XAuint32) 0x00000004) 2304#define XA_RDSPROGRAMMETYPE_RBDSPTY_ROCK \ 2305 ((XAuint32) 0x00000005) 2306#define XA_RDSPROGRAMMETYPE_RBDSPTY_CLASSICROCK \ 2307 ((XAuint32) 0x00000006) 2308#define XA_RDSPROGRAMMETYPE_RBDSPTY_ADULTHITS \ 2309 ((XAuint32) 0x00000007) 2310#define XA_RDSPROGRAMMETYPE_RBDSPTY_SOFTROCK \ 2311 ((XAuint32) 0x00000008) 2312#define XA_RDSPROGRAMMETYPE_RBDSPTY_TOP40 \ 2313 ((XAuint32) 0x00000009) 2314#define XA_RDSPROGRAMMETYPE_RBDSPTY_COUNTRY \ 2315 ((XAuint32) 0x0000000A) 2316#define XA_RDSPROGRAMMETYPE_RBDSPTY_OLDIES \ 2317 ((XAuint32) 0x0000000B) 2318#define XA_RDSPROGRAMMETYPE_RBDSPTY_SOFT \ 2319 ((XAuint32) 0x0000000C) 2320#define XA_RDSPROGRAMMETYPE_RBDSPTY_NOSTALGIA \ 2321 ((XAuint32) 0x0000000D) 2322#define XA_RDSPROGRAMMETYPE_RBDSPTY_JAZZ \ 2323 ((XAuint32) 0x0000000E) 2324#define XA_RDSPROGRAMMETYPE_RBDSPTY_CLASSICAL \ 2325 ((XAuint32) 0x0000000F) 2326#define XA_RDSPROGRAMMETYPE_RBDSPTY_RHYTHMANDBLUES \ 2327 ((XAuint32) 0x00000010) 2328#define XA_RDSPROGRAMMETYPE_RBDSPTY_SOFTRHYTHMANDBLUES \ 2329 ((XAuint32) 0x00000011) 2330#define XA_RDSPROGRAMMETYPE_RBDSPTY_LANGUAGE \ 2331 ((XAuint32) 0x00000012) 2332#define XA_RDSPROGRAMMETYPE_RBDSPTY_RELIGIOUSMUSIC \ 2333 ((XAuint32) 0x00000013) 2334#define XA_RDSPROGRAMMETYPE_RBDSPTY_RELIGIOUSTALK \ 2335 ((XAuint32) 0x00000014) 2336#define XA_RDSPROGRAMMETYPE_RBDSPTY_PERSONALITY \ 2337 ((XAuint32) 0x00000015) 2338#define XA_RDSPROGRAMMETYPE_RBDSPTY_PUBLIC \ 2339 ((XAuint32) 0x00000016) 2340#define XA_RDSPROGRAMMETYPE_RBDSPTY_COLLEGE \ 2341 ((XAuint32) 0x00000017) 2342#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED1 \ 2343 ((XAuint32) 0x00000018) 2344#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED2 \ 2345 ((XAuint32) 0x00000019) 2346#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED3 \ 2347 ((XAuint32) 0x0000001A) 2348#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED4 \ 2349 ((XAuint32) 0x0000001B) 2350#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED5 \ 2351 ((XAuint32) 0x0000001C) 2352#define XA_RDSPROGRAMMETYPE_RBDSPTY_WEATHER \ 2353 ((XAuint32) 0x0000001D) 2354#define XA_RDSPROGRAMMETYPE_RBDSPTY_EMERGENCYTEST \ 2355 ((XAuint32) 0x0000001E) 2356#define XA_RDSPROGRAMMETYPE_RBDSPTY_EMERGENCY \ 2357 ((XAuint32) 0x0000001F) 2358 2359#define XA_RDSRTPLUS_ITEMTITLE ((XAuint8) 0x01) 2360#define XA_RDSRTPLUS_ITEMALBUM ((XAuint8) 0x02) 2361#define XA_RDSRTPLUS_ITEMTRACKNUMBER ((XAuint8) 0x03) 2362#define XA_RDSRTPLUS_ITEMARTIST ((XAuint8) 0x04) 2363#define XA_RDSRTPLUS_ITEMCOMPOSITION ((XAuint8) 0x05) 2364#define XA_RDSRTPLUS_ITEMMOVEMENT ((XAuint8) 0x06) 2365#define XA_RDSRTPLUS_ITEMCONDUCTOR ((XAuint8) 0x07) 2366#define XA_RDSRTPLUS_ITEMCOMPOSER ((XAuint8) 0x08) 2367#define XA_RDSRTPLUS_ITEMBAND ((XAuint8) 0x09) 2368#define XA_RDSRTPLUS_ITEMCOMMENT ((XAuint8) 0x0A) 2369#define XA_RDSRTPLUS_ITEMGENRE ((XAuint8) 0x0B) 2370#define XA_RDSRTPLUS_INFONEWS ((XAuint8) 0x0C) 2371#define XA_RDSRTPLUS_INFONEWSLOCAL ((XAuint8) 0x0D) 2372#define XA_RDSRTPLUS_INFOSTOCKMARKET ((XAuint8) 0x0E) 2373#define XA_RDSRTPLUS_INFOSPORT ((XAuint8) 0x0F) 2374#define XA_RDSRTPLUS_INFOLOTTERY ((XAuint8) 0x10) 2375#define XA_RDSRTPLUS_INFOHOROSCOPE ((XAuint8) 0x11) 2376#define XA_RDSRTPLUS_INFODAILYDIVERSION ((XAuint8) 0x12) 2377#define XA_RDSRTPLUS_INFOHEALTH ((XAuint8) 0x13) 2378#define XA_RDSRTPLUS_INFOEVENT ((XAuint8) 0x14) 2379#define XA_RDSRTPLUS_INFOSZENE ((XAuint8) 0x15) 2380#define XA_RDSRTPLUS_INFOCINEMA ((XAuint8) 0x16) 2381#define XA_RDSRTPLUS_INFOTV ((XAuint8) 0x17) 2382#define XA_RDSRTPLUS_INFODATETIME ((XAuint8) 0x18) 2383#define XA_RDSRTPLUS_INFOWEATHER ((XAuint8) 0x19) 2384#define XA_RDSRTPLUS_INFOTRAFFIC ((XAuint8) 0x1A) 2385#define XA_RDSRTPLUS_INFOALARM ((XAuint8) 0x1B) 2386#define XA_RDSRTPLUS_INFOADVISERTISEMENT ((XAuint8) 0x1C) 2387#define XA_RDSRTPLUS_INFOURL ((XAuint8) 0x1D) 2388#define XA_RDSRTPLUS_INFOOTHER ((XAuint8) 0x1E) 2389#define XA_RDSRTPLUS_STATIONNAMESHORT ((XAuint8) 0x1F) 2390#define XA_RDSRTPLUS_STATIONNAMELONG ((XAuint8) 0x20) 2391#define XA_RDSRTPLUS_PROGRAMNOW ((XAuint8) 0x21) 2392#define XA_RDSRTPLUS_PROGRAMNEXT ((XAuint8) 0x22) 2393#define XA_RDSRTPLUS_PROGRAMPART ((XAuint8) 0x23) 2394#define XA_RDSRTPLUS_PROGRAMHOST ((XAuint8) 0x24) 2395#define XA_RDSRTPLUS_PROFRAMEDITORIALSTAFF ((XAuint8) 0x25) 2396#define XA_RDSRTPLUS_PROGRAMFREQUENCY ((XAuint8) 0x26) 2397#define XA_RDSRTPLUS_PROGRAMHOMEPAGE ((XAuint8) 0x27) 2398#define XA_RDSRTPLUS_PROGRAMSUBCHANNEL ((XAuint8) 0x28) 2399#define XA_RDSRTPLUS_PHONEHOTLINE ((XAuint8) 0x29) 2400#define XA_RDSRTPLUS_PHONESTUDIO ((XAuint8) 0x2A) 2401#define XA_RDSRTPLUS_PHONEOTHER ((XAuint8) 0x2B) 2402#define XA_RDSRTPLUS_SMSSTUDIO ((XAuint8) 0x2C) 2403#define XA_RDSRTPLUS_SMSOTHER ((XAuint8) 0x2D) 2404#define XA_RDSRTPLUS_EMAILHOTLINE ((XAuint8) 0x2E) 2405#define XA_RDSRTPLUS_EMAILSTUDIO ((XAuint8) 0x2F) 2406#define XA_RDSRTPLUS_EMAILOTHER ((XAuint8) 0x30) 2407#define XA_RDSRTPLUS_MMSOTHER ((XAuint8) 0x31) 2408#define XA_RDSRTPLUS_CHAT ((XAuint8) 0x32) 2409#define XA_RDSRTPLUS_CHATCENTER ((XAuint8) 0x33) 2410#define XA_RDSRTPLUS_VOTEQUESTION ((XAuint8) 0x34) 2411#define XA_RDSRTPLUS_VOTECENTER ((XAuint8) 0x35) 2412#define XA_RDSRTPLUS_OPENCLASS45 ((XAuint8) 0x36) 2413#define XA_RDSRTPLUS_OPENCLASS55 ((XAuint8) 0x37) 2414#define XA_RDSRTPLUS_OPENCLASS56 ((XAuint8) 0x38) 2415#define XA_RDSRTPLUS_OPENCLASS57 ((XAuint8) 0x39) 2416#define XA_RDSRTPLUS_OPENCLASS58 ((XAuint8) 0x3A) 2417#define XA_RDSRTPLUS_PLACE ((XAuint8) 0x3B) 2418#define XA_RDSRTPLUS_APPOINTMENT ((XAuint8) 0x3C) 2419#define XA_RDSRTPLUS_IDENTIFIER ((XAuint8) 0x3D) 2420#define XA_RDSRTPLUS_PURCHASE ((XAuint8) 0x3E) 2421#define XA_RDSRTPLUS_GETDATA ((XAuint8) 0x3F) 2422 2423XA_API extern const XAInterfaceID XA_IID_RDS; 2424 2425struct XARDSItf_; 2426typedef const struct XARDSItf_ * const * XARDSItf; 2427 2428typedef void (XAAPIENTRY * xaGetODAGroupCallback) ( 2429 XARadioItf caller, 2430 void * pContext, 2431 XAboolean success, 2432 XAint16 group, 2433 XAuint16 message 2434); 2435 2436typedef void (XAAPIENTRY * xaNewODADataCallback) ( 2437 XARDSItf caller, 2438 void * pContext, 2439 XAint16 group, 2440 XAuint64 data 2441); 2442 2443typedef void (XAAPIENTRY * xaRDSCallback) ( 2444 XARDSItf caller, 2445 void * pContext, 2446 XAuint16 event, 2447 XAuint8 eventData 2448); 2449 2450struct XARDSItf_ { 2451 XAresult (*QueryRDSSignal) ( 2452 XARDSItf self, 2453 XAboolean * isSignal 2454 ); 2455 XAresult (*GetProgrammeServiceName) ( 2456 XARDSItf self, 2457 XAchar * ps 2458 ); 2459 XAresult (*GetRadioText) ( 2460 XARDSItf self, 2461 XAchar * rt 2462 ); 2463 XAresult (*GetRadioTextPlus) ( 2464 XARDSItf self, 2465 XAuint8 contentType, 2466 XAchar * informationElement, 2467 XAchar * descriptor, 2468 XAuint8 * descriptorContentType 2469 ); 2470 XAresult (*GetProgrammeType) ( 2471 XARDSItf self, 2472 XAuint32 * pty 2473 ); 2474 XAresult (*GetProgrammeTypeString) ( 2475 XARDSItf self, 2476 XAboolean isLengthMax16, 2477 XAchar * pty 2478 ); 2479 XAresult (*GetProgrammeIdentificationCode) ( 2480 XARDSItf self, 2481 XAint16 * pi 2482 ); 2483 XAresult (*GetClockTime) ( 2484 XARDSItf self, 2485 XAtime * dateAndTime 2486 ); 2487 XAresult (*GetTrafficAnnouncement) ( 2488 XARDSItf self, 2489 XAboolean * ta 2490 ); 2491 XAresult (*GetTrafficProgramme) ( 2492 XARDSItf self, 2493 XAboolean * tp 2494 ); 2495 XAresult (*SeekByProgrammeType) ( 2496 XARDSItf self, 2497 XAuint32 pty, 2498 XAboolean upwards 2499 ); 2500 XAresult (*SeekTrafficAnnouncement) ( 2501 XARDSItf self, 2502 XAboolean upwards 2503 ); 2504 XAresult (*SeekTrafficProgramme) ( 2505 XARDSItf self, 2506 XAboolean upwards 2507 ); 2508 XAresult (*SetAutomaticSwitching) ( 2509 XARDSItf self, 2510 XAboolean automatic 2511 ); 2512 XAresult (*GetAutomaticSwitching) ( 2513 XARDSItf self, 2514 XAboolean * automatic 2515 ); 2516 XAresult (*SetAutomaticTrafficAnnouncement) ( 2517 XARDSItf self, 2518 XAboolean automatic 2519 ); 2520 XAresult (*GetAutomaticTrafficAnnouncement) ( 2521 XARDSItf self, 2522 XAboolean * automatic 2523 ); 2524 XAresult (*GetODAGroup) ( 2525 XARDSItf self, 2526 XAuint16 AID, 2527 xaGetODAGroupCallback callback, 2528 void * pContext 2529 ); 2530 XAresult (*SubscribeODAGroup) ( 2531 XARDSItf self, 2532 XAint16 group, 2533 XAboolean useErrorCorrection 2534 ); 2535 XAresult (*UnsubscribeODAGroup) ( 2536 XARDSItf self, 2537 XAint16 group 2538 ); 2539 XAresult (*ListODAGroupSubscriptions) ( 2540 XARDSItf self, 2541 XAint16* pGroups, 2542 XAuint32* pLength 2543 ); 2544 XAresult (*RegisterRDSCallback) ( 2545 XARDSItf self, 2546 xaRDSCallback callback, 2547 void * pContext 2548 ); 2549 XAresult (*RegisterODADataCallback) ( 2550 XARDSItf self, 2551 xaNewODADataCallback callback, 2552 void * pContext 2553 ); 2554}; 2555 2556/* VIBRA */ 2557 2558XA_API extern const XAInterfaceID XA_IID_VIBRA; 2559 2560struct XAVibraItf_; 2561typedef const struct XAVibraItf_ * const * XAVibraItf; 2562 2563struct XAVibraItf_ { 2564 XAresult (*Vibrate) ( 2565 XAVibraItf self, 2566 XAboolean vibrate 2567 ); 2568 XAresult (*IsVibrating) ( 2569 XAVibraItf self, 2570 XAboolean * pVibrating 2571 ); 2572 XAresult (*SetFrequency) ( 2573 XAVibraItf self, 2574 XAmilliHertz frequency 2575 ); 2576 XAresult (*GetFrequency) ( 2577 XAVibraItf self, 2578 XAmilliHertz * pFrequency 2579 ); 2580 XAresult (*SetIntensity) ( 2581 XAVibraItf self, 2582 XApermille intensity 2583 ); 2584 XAresult (*GetIntensity) ( 2585 XAVibraItf self, 2586 XApermille * pIntensity 2587 ); 2588}; 2589 2590/* LED ARRAY */ 2591 2592typedef struct XAHSL_ { 2593 XAmillidegree hue; 2594 XApermille saturation; 2595 XApermille lightness; 2596} XAHSL; 2597 2598XA_API extern const XAInterfaceID XA_IID_LED; 2599 2600struct XALEDArrayItf_; 2601typedef const struct XALEDArrayItf_ * const * XALEDArrayItf; 2602 2603struct XALEDArrayItf_ { 2604 XAresult (*ActivateLEDArray) ( 2605 XALEDArrayItf self, 2606 XAuint32 lightMask 2607 ); 2608 XAresult (*IsLEDArrayActivated) ( 2609 XALEDArrayItf self, 2610 XAuint32 * pLightMask 2611 ); 2612 XAresult (*SetColor) ( 2613 XALEDArrayItf self, 2614 XAuint8 index, 2615 const XAHSL * pColor 2616 ); 2617 XAresult (*GetColor) ( 2618 XALEDArrayItf self, 2619 XAuint8 index, 2620 XAHSL * pColor 2621 ); 2622}; 2623 2624 2625 2626 /*****************************************************************/ 2627 /* CODEC RELATED INTERFACES, STRUCTS AND DEFINES */ 2628 /*****************************************************************/ 2629 2630/* AUDIO ENCODER AND AUDIO ENCODER/DECODER CAPABILITIES */ 2631 2632#define XA_RATECONTROLMODE_CONSTANTBITRATE ((XAuint32) 0x00000001) 2633#define XA_RATECONTROLMODE_VARIABLEBITRATE ((XAuint32) 0x00000002) 2634 2635#define XA_AUDIOCODEC_PCM ((XAuint32) 0x00000001) 2636#define XA_AUDIOCODEC_MP3 ((XAuint32) 0x00000002) 2637#define XA_AUDIOCODEC_AMR ((XAuint32) 0x00000003) 2638#define XA_AUDIOCODEC_AMRWB ((XAuint32) 0x00000004) 2639#define XA_AUDIOCODEC_AMRWBPLUS ((XAuint32) 0x00000005) 2640#define XA_AUDIOCODEC_AAC ((XAuint32) 0x00000006) 2641#define XA_AUDIOCODEC_WMA ((XAuint32) 0x00000007) 2642#define XA_AUDIOCODEC_REAL ((XAuint32) 0x00000008) 2643#define XA_AUDIOCODEC_VORBIS ((XAuint32) 0x00000009) 2644 2645#define XA_AUDIOPROFILE_PCM ((XAuint32) 0x00000001) 2646 2647#define XA_AUDIOPROFILE_MPEG1_L3 ((XAuint32) 0x00000001) 2648#define XA_AUDIOPROFILE_MPEG2_L3 ((XAuint32) 0x00000002) 2649#define XA_AUDIOPROFILE_MPEG25_L3 ((XAuint32) 0x00000003) 2650 2651#define XA_AUDIOCHANMODE_MP3_MONO ((XAuint32) 0x00000001) 2652#define XA_AUDIOCHANMODE_MP3_STEREO ((XAuint32) 0x00000002) 2653#define XA_AUDIOCHANMODE_MP3_JOINTSTEREO ((XAuint32) 0x00000003) 2654#define XA_AUDIOCHANMODE_MP3_DUAL ((XAuint32) 0x00000004) 2655 2656#define XA_AUDIOPROFILE_AMR ((XAuint32) 0x00000001) 2657 2658#define XA_AUDIOSTREAMFORMAT_CONFORMANCE ((XAuint32) 0x00000001) 2659#define XA_AUDIOSTREAMFORMAT_IF1 ((XAuint32) 0x00000002) 2660#define XA_AUDIOSTREAMFORMAT_IF2 ((XAuint32) 0x00000003) 2661#define XA_AUDIOSTREAMFORMAT_FSF ((XAuint32) 0x00000004) 2662#define XA_AUDIOSTREAMFORMAT_RTPPAYLOAD ((XAuint32) 0x00000005) 2663#define XA_AUDIOSTREAMFORMAT_ITU ((XAuint32) 0x00000006) 2664 2665#define XA_AUDIOPROFILE_AMRWB ((XAuint32) 0x00000001) 2666 2667#define XA_AUDIOPROFILE_AMRWBPLUS ((XAuint32) 0x00000001) 2668 2669#define XA_AUDIOPROFILE_AAC_AAC ((XAuint32) 0x00000001) 2670 2671#define XA_AUDIOMODE_AAC_MAIN ((XAuint32) 0x00000001) 2672#define XA_AUDIOMODE_AAC_LC ((XAuint32) 0x00000002) 2673#define XA_AUDIOMODE_AAC_SSR ((XAuint32) 0x00000003) 2674#define XA_AUDIOMODE_AAC_LTP ((XAuint32) 0x00000004) 2675#define XA_AUDIOMODE_AAC_HE ((XAuint32) 0x00000005) 2676#define XA_AUDIOMODE_AAC_SCALABLE ((XAuint32) 0x00000006) 2677#define XA_AUDIOMODE_AAC_ERLC ((XAuint32) 0x00000007) 2678#define XA_AUDIOMODE_AAC_LD ((XAuint32) 0x00000008) 2679#define XA_AUDIOMODE_AAC_HE_PS ((XAuint32) 0x00000009) 2680#define XA_AUDIOMODE_AAC_HE_MPS ((XAuint32) 0x0000000A) 2681 2682#define XA_AUDIOSTREAMFORMAT_MP2ADTS ((XAuint32) 0x00000001) 2683#define XA_AUDIOSTREAMFORMAT_MP4ADTS ((XAuint32) 0x00000002) 2684#define XA_AUDIOSTREAMFORMAT_MP4LOAS ((XAuint32) 0x00000003) 2685#define XA_AUDIOSTREAMFORMAT_MP4LATM ((XAuint32) 0x00000004) 2686#define XA_AUDIOSTREAMFORMAT_ADIF ((XAuint32) 0x00000005) 2687#define XA_AUDIOSTREAMFORMAT_MP4FF ((XAuint32) 0x00000006) 2688#define XA_AUDIOSTREAMFORMAT_RAW ((XAuint32) 0x00000007) 2689 2690#define XA_AUDIOPROFILE_WMA7 ((XAuint32) 0x00000001) 2691#define XA_AUDIOPROFILE_WMA8 ((XAuint32) 0x00000002) 2692#define XA_AUDIOPROFILE_WMA9 ((XAuint32) 0x00000003) 2693#define XA_AUDIOPROFILE_WMA10 ((XAuint32) 0x00000004) 2694 2695#define XA_AUDIOMODE_WMA_LEVEL1 ((XAuint32) 0x00000001) 2696#define XA_AUDIOMODE_WMA_LEVEL2 ((XAuint32) 0x00000002) 2697#define XA_AUDIOMODE_WMA_LEVEL3 ((XAuint32) 0x00000003) 2698#define XA_AUDIOMODE_WMA_LEVEL4 ((XAuint32) 0x00000004) 2699#define XA_AUDIOMODE_WMAPRO_LEVELM0 ((XAuint32) 0x00000005) 2700#define XA_AUDIOMODE_WMAPRO_LEVELM1 ((XAuint32) 0x00000006) 2701#define XA_AUDIOMODE_WMAPRO_LEVELM2 ((XAuint32) 0x00000007) 2702#define XA_AUDIOMODE_WMAPRO_LEVELM3 ((XAuint32) 0x00000008) 2703 2704#define XA_AUDIOPROFILE_REALAUDIO ((XAuint32) 0x00000001) 2705 2706#define XA_AUDIOMODE_REALAUDIO_G2 ((XAuint32) 0x00000001) 2707#define XA_AUDIOMODE_REALAUDIO_8 ((XAuint32) 0x00000002) 2708#define XA_AUDIOMODE_REALAUDIO_10 ((XAuint32) 0x00000003) 2709#define XA_AUDIOMODE_REALAUDIO_SURROUND ((XAuint32) 0x00000004) 2710 2711#define XA_AUDIOPROFILE_VORBIS ((XAuint32) 0x00000001) 2712 2713#define XA_AUDIOMODE_VORBIS ((XAuint32) 0x00000001) 2714 2715 2716typedef struct XAAudioCodecDescriptor_ { 2717 XAuint32 maxChannels; 2718 XAuint32 minBitsPerSample; 2719 XAuint32 maxBitsPerSample; 2720 XAmilliHertz minSampleRate; 2721 XAmilliHertz maxSampleRate; 2722 XAboolean isFreqRangeContinuous; 2723 XAmilliHertz * pSampleRatesSupported; 2724 XAuint32 numSampleRatesSupported; 2725 XAuint32 minBitRate; 2726 XAuint32 maxBitRate; 2727 XAboolean isBitrateRangeContinuous; 2728 XAuint32 * pBitratesSupported; 2729 XAuint32 numBitratesSupported; 2730 XAuint32 profileSetting; 2731 XAuint32 modeSetting; 2732} XAAudioCodecDescriptor; 2733 2734typedef struct XAAudioEncoderSettings_ { 2735 XAuint32 encoderId; 2736 XAuint32 channelsIn; 2737 XAuint32 channelsOut; 2738 XAmilliHertz sampleRate; 2739 XAuint32 bitRate; 2740 XAuint32 bitsPerSample; 2741 XAuint32 rateControl; 2742 XAuint32 profileSetting; 2743 XAuint32 levelSetting; 2744 XAuint32 channelMode; 2745 XAuint32 streamFormat; 2746 XAuint32 encodeOptions; 2747 XAuint32 blockAlignment; 2748} XAAudioEncoderSettings; 2749 2750XA_API extern const XAInterfaceID XA_IID_AUDIODECODERCAPABILITIES; 2751 2752struct XAAudioDecoderCapabilitiesItf_; 2753typedef const struct XAAudioDecoderCapabilitiesItf_ 2754 * const * XAAudioDecoderCapabilitiesItf; 2755 2756struct XAAudioDecoderCapabilitiesItf_ { 2757 XAresult (*GetAudioDecoders) ( 2758 XAAudioDecoderCapabilitiesItf self, 2759 XAuint32 * pNumDecoders, 2760 XAuint32 * pDecoderIds 2761 ); 2762 XAresult (*GetAudioDecoderCapabilities) ( 2763 XAAudioDecoderCapabilitiesItf self, 2764 XAuint32 decoderId, 2765 XAuint32 * pIndex, 2766 XAAudioCodecDescriptor * pDescriptor 2767 ); 2768}; 2769 2770XA_API extern const XAInterfaceID XA_IID_AUDIOENCODER; 2771 2772struct XAAudioEncoderItf_; 2773typedef const struct XAAudioEncoderItf_ * const * XAAudioEncoderItf; 2774 2775struct XAAudioEncoderItf_ { 2776 XAresult (*SetEncoderSettings) ( 2777 XAAudioEncoderItf self, 2778 XAAudioEncoderSettings * pSettings 2779 ); 2780 XAresult (*GetEncoderSettings) ( 2781 XAAudioEncoderItf self, 2782 XAAudioEncoderSettings * pSettings 2783 ); 2784}; 2785 2786XA_API extern const XAInterfaceID XA_IID_AUDIOENCODERCAPABILITIES; 2787 2788struct XAAudioEncoderCapabilitiesItf_; 2789typedef const struct XAAudioEncoderCapabilitiesItf_ 2790 * const * XAAudioEncoderCapabilitiesItf; 2791 2792struct XAAudioEncoderCapabilitiesItf_ { 2793 XAresult (*GetAudioEncoders) ( 2794 XAAudioEncoderCapabilitiesItf self, 2795 XAuint32 * pNumEncoders, 2796 XAuint32 * pEncoderIds 2797 ); 2798 XAresult (*GetAudioEncoderCapabilities) ( 2799 XAAudioEncoderCapabilitiesItf self, 2800 XAuint32 encoderId, 2801 XAuint32 * pIndex, 2802 XAAudioCodecDescriptor * pDescriptor 2803 ); 2804}; 2805 2806/* IMAGE ENCODER AND IMAGE ENCODER/DECODER CAPABILITIES */ 2807 2808#define XA_IMAGECODEC_JPEG ((XAuint32) 0x00000001) 2809#define XA_IMAGECODEC_GIF ((XAuint32) 0x00000002) 2810#define XA_IMAGECODEC_BMP ((XAuint32) 0x00000003) 2811#define XA_IMAGECODEC_PNG ((XAuint32) 0x00000004) 2812#define XA_IMAGECODEC_TIFF ((XAuint32) 0x00000005) 2813#define XA_IMAGECODEC_RAW ((XAuint32) 0x00000006) 2814 2815typedef struct XAImageCodecDescriptor_ { 2816 XAuint32 codecId; 2817 XAuint32 maxWidth; 2818 XAuint32 maxHeight; 2819} XAImageCodecDescriptor; 2820 2821typedef struct XAImageSettings_ { 2822 XAuint32 encoderId; 2823 XAuint32 width; 2824 XAuint32 height; 2825 XApermille compressionLevel; 2826 XAuint32 colorFormat; 2827} XAImageSettings; 2828 2829XA_API extern const XAInterfaceID XA_IID_IMAGEENCODERCAPABILITIES; 2830 2831struct XAImageEncoderCapabilitiesItf_; 2832typedef const struct XAImageEncoderCapabilitiesItf_ 2833 * const * XAImageEncoderCapabilitiesItf; 2834 2835struct XAImageEncoderCapabilitiesItf_ { 2836 XAresult (*GetImageEncoderCapabilities) ( 2837 XAImageEncoderCapabilitiesItf self, 2838 XAuint32 * pEncoderId, 2839 XAImageCodecDescriptor * pDescriptor 2840 ); 2841 XAresult (*QueryColorFormats) ( 2842 const XAImageEncoderCapabilitiesItf self, 2843 XAuint32 * pIndex, 2844 XAuint32 * pColorFormat 2845 ); 2846}; 2847 2848XA_API extern const XAInterfaceID XA_IID_IMAGEDECODERCAPABILITIES; 2849 2850struct XAImageDecoderCapabilitiesItf_; 2851typedef const struct XAImageDecoderCapabilitiesItf_ 2852 * const * XAImageDecoderCapabilitiesItf; 2853 2854struct XAImageDecoderCapabilitiesItf_ { 2855 XAresult (*GetImageDecoderCapabilities) ( 2856 XAImageDecoderCapabilitiesItf self, 2857 XAuint32 * pDecoderId, 2858 XAImageCodecDescriptor * pDescriptor 2859 ); 2860 XAresult (*QueryColorFormats) ( 2861 const XAImageDecoderCapabilitiesItf self, 2862 XAuint32 * pIndex, 2863 XAuint32 * pColorFormat 2864 ); 2865}; 2866 2867XA_API extern const XAInterfaceID XA_IID_IMAGEENCODER; 2868 2869struct XAImageEncoderItf_; 2870typedef const struct XAImageEncoderItf_ * const * XAImageEncoderItf; 2871 2872struct XAImageEncoderItf_ { 2873 XAresult (*SetImageSettings) ( 2874 XAImageEncoderItf self, 2875 const XAImageSettings * pSettings 2876 ); 2877 XAresult (*GetImageSettings) ( 2878 XAImageEncoderItf self, 2879 XAImageSettings * pSettings 2880 ); 2881 XAresult (*GetSizeEstimate) ( 2882 XAImageEncoderItf self, 2883 XAuint32 * pSize 2884 ); 2885}; 2886 2887/* VIDEO ENCODER AND VIDEO ENCODER/DECODER CAPABILITIES */ 2888 2889#define XA_VIDEOCODEC_MPEG2 ((XAuint32) 0x00000001) 2890#define XA_VIDEOCODEC_H263 ((XAuint32) 0x00000002) 2891#define XA_VIDEOCODEC_MPEG4 ((XAuint32) 0x00000003) 2892#define XA_VIDEOCODEC_AVC ((XAuint32) 0x00000004) 2893#define XA_VIDEOCODEC_VC1 ((XAuint32) 0x00000005) 2894 2895#define XA_VIDEOPROFILE_MPEG2_SIMPLE ((XAuint32) 0x00000001) 2896#define XA_VIDEOPROFILE_MPEG2_MAIN ((XAuint32) 0x00000002) 2897#define XA_VIDEOPROFILE_MPEG2_422 ((XAuint32) 0x00000003) 2898#define XA_VIDEOPROFILE_MPEG2_SNR ((XAuint32) 0x00000004) 2899#define XA_VIDEOPROFILE_MPEG2_SPATIAL ((XAuint32) 0x00000005) 2900#define XA_VIDEOPROFILE_MPEG2_HIGH ((XAuint32) 0x00000006) 2901 2902#define XA_VIDEOLEVEL_MPEG2_LL ((XAuint32) 0x00000001) 2903#define XA_VIDEOLEVEL_MPEG2_ML ((XAuint32) 0x00000002) 2904#define XA_VIDEOLEVEL_MPEG2_H14 ((XAuint32) 0x00000003) 2905#define XA_VIDEOLEVEL_MPEG2_HL ((XAuint32) 0x00000004) 2906 2907#define XA_VIDEOPROFILE_H263_BASELINE ((XAuint32) 0x00000001) 2908#define XA_VIDEOPROFILE_H263_H320CODING ((XAuint32) 0x00000002) 2909#define XA_VIDEOPROFILE_H263_BACKWARDCOMPATIBLE ((XAuint32) 0x00000003) 2910#define XA_VIDEOPROFILE_H263_ISWV2 ((XAuint32) 0x00000004) 2911#define XA_VIDEOPROFILE_H263_ISWV3 ((XAuint32) 0x00000005) 2912#define XA_VIDEOPROFILE_H263_HIGHCOMPRESSION ((XAuint32) 0x00000006) 2913#define XA_VIDEOPROFILE_H263_INTERNET ((XAuint32) 0x00000007) 2914#define XA_VIDEOPROFILE_H263_INTERLACE ((XAuint32) 0x00000008) 2915#define XA_VIDEOPROFILE_H263_HIGHLATENCY ((XAuint32) 0x00000009) 2916 2917#define XA_VIDEOLEVEL_H263_10 ((XAuint32) 0x00000001) 2918#define XA_VIDEOLEVEL_H263_20 ((XAuint32) 0x00000002) 2919#define XA_VIDEOLEVEL_H263_30 ((XAuint32) 0x00000003) 2920#define XA_VIDEOLEVEL_H263_40 ((XAuint32) 0x00000004) 2921#define XA_VIDEOLEVEL_H263_45 ((XAuint32) 0x00000005) 2922#define XA_VIDEOLEVEL_H263_50 ((XAuint32) 0x00000006) 2923#define XA_VIDEOLEVEL_H263_60 ((XAuint32) 0x00000007) 2924#define XA_VIDEOLEVEL_H263_70 ((XAuint32) 0x00000008) 2925 2926#define XA_VIDEOPROFILE_MPEG4_SIMPLE ((XAuint32) 0x00000001) 2927#define XA_VIDEOPROFILE_MPEG4_SIMPLESCALABLE ((XAuint32) 0x00000002) 2928#define XA_VIDEOPROFILE_MPEG4_CORE ((XAuint32) 0x00000003) 2929#define XA_VIDEOPROFILE_MPEG4_MAIN ((XAuint32) 0x00000004) 2930#define XA_VIDEOPROFILE_MPEG4_NBIT ((XAuint32) 0x00000005) 2931#define XA_VIDEOPROFILE_MPEG4_SCALABLETEXTURE ((XAuint32) 0x00000006) 2932#define XA_VIDEOPROFILE_MPEG4_SIMPLEFACE ((XAuint32) 0x00000007) 2933#define XA_VIDEOPROFILE_MPEG4_SIMPLEFBA ((XAuint32) 0x00000008) 2934#define XA_VIDEOPROFILE_MPEG4_BASICANIMATED ((XAuint32) 0x00000009) 2935#define XA_VIDEOPROFILE_MPEG4_HYBRID ((XAuint32) 0x0000000A) 2936#define XA_VIDEOPROFILE_MPEG4_ADVANCEDREALTIME ((XAuint32) 0x0000000B) 2937#define XA_VIDEOPROFILE_MPEG4_CORESCALABLE ((XAuint32) 0x0000000C) 2938#define XA_VIDEOPROFILE_MPEG4_ADVANCEDCODING ((XAuint32) 0x0000000D) 2939#define XA_VIDEOPROFILE_MPEG4_ADVANCEDCORE ((XAuint32) 0x0000000E) 2940#define XA_VIDEOPROFILE_MPEG4_ADVANCEDSCALABLE ((XAuint32) 0x0000000F) 2941 2942#define XA_VIDEOLEVEL_MPEG4_0 ((XAuint32) 0x00000001) 2943#define XA_VIDEOLEVEL_MPEG4_0b ((XAuint32) 0x00000002) 2944#define XA_VIDEOLEVEL_MPEG4_1 ((XAuint32) 0x00000003) 2945#define XA_VIDEOLEVEL_MPEG4_2 ((XAuint32) 0x00000004) 2946#define XA_VIDEOLEVEL_MPEG4_3 ((XAuint32) 0x00000005) 2947#define XA_VIDEOLEVEL_MPEG4_4 ((XAuint32) 0x00000006) 2948#define XA_VIDEOLEVEL_MPEG4_4a ((XAuint32) 0x00000007) 2949#define XA_VIDEOLEVEL_MPEG4_5 ((XAuint32) 0x00000008) 2950 2951#define XA_VIDEOPROFILE_AVC_BASELINE ((XAuint32) 0x00000001) 2952#define XA_VIDEOPROFILE_AVC_MAIN ((XAuint32) 0x00000002) 2953#define XA_VIDEOPROFILE_AVC_EXTENDED ((XAuint32) 0x00000003) 2954#define XA_VIDEOPROFILE_AVC_HIGH ((XAuint32) 0x00000004) 2955#define XA_VIDEOPROFILE_AVC_HIGH10 ((XAuint32) 0x00000005) 2956#define XA_VIDEOPROFILE_AVC_HIGH422 ((XAuint32) 0x00000006) 2957#define XA_VIDEOPROFILE_AVC_HIGH444 ((XAuint32) 0x00000007) 2958 2959#define XA_VIDEOLEVEL_AVC_1 ((XAuint32) 0x00000001) 2960#define XA_VIDEOLEVEL_AVC_1B ((XAuint32) 0x00000002) 2961#define XA_VIDEOLEVEL_AVC_11 ((XAuint32) 0x00000003) 2962#define XA_VIDEOLEVEL_AVC_12 ((XAuint32) 0x00000004) 2963#define XA_VIDEOLEVEL_AVC_13 ((XAuint32) 0x00000005) 2964#define XA_VIDEOLEVEL_AVC_2 ((XAuint32) 0x00000006) 2965#define XA_VIDEOLEVEL_AVC_21 ((XAuint32) 0x00000007) 2966#define XA_VIDEOLEVEL_AVC_22 ((XAuint32) 0x00000008) 2967#define XA_VIDEOLEVEL_AVC_3 ((XAuint32) 0x00000009) 2968#define XA_VIDEOLEVEL_AVC_31 ((XAuint32) 0x0000000A) 2969#define XA_VIDEOLEVEL_AVC_32 ((XAuint32) 0x0000000B) 2970#define XA_VIDEOLEVEL_AVC_4 ((XAuint32) 0x0000000C) 2971#define XA_VIDEOLEVEL_AVC_41 ((XAuint32) 0x0000000D) 2972#define XA_VIDEOLEVEL_AVC_42 ((XAuint32) 0x0000000E) 2973#define XA_VIDEOLEVEL_AVC_5 ((XAuint32) 0x0000000F) 2974#define XA_VIDEOLEVEL_AVC_51 ((XAuint32) 0x00000010) 2975 2976#define XA_VIDEOLEVEL_VC1_SIMPLE ((XAuint32) 0x00000001) 2977#define XA_VIDEOLEVEL_VC1_MAIN ((XAuint32) 0x00000002) 2978#define XA_VIDEOLEVEL_VC1_ADVANCED ((XAuint32) 0x00000003) 2979 2980#define XA_VIDEOLEVEL_VC1_LOW ((XAuint32) 0x00000001) 2981#define XA_VIDEOLEVEL_VC1_MEDIUM ((XAuint32) 0x00000002) 2982#define XA_VIDEOLEVEL_VC1_HIGH ((XAuint32) 0x00000003) 2983#define XA_VIDEOLEVEL_VC1_L0 ((XAuint32) 0x00000004) 2984#define XA_VIDEOLEVEL_VC1_L1 ((XAuint32) 0x00000005) 2985#define XA_VIDEOLEVEL_VC1_L2 ((XAuint32) 0x00000006) 2986#define XA_VIDEOLEVEL_VC1_L3 ((XAuint32) 0x00000007) 2987#define XA_VIDEOLEVEL_VC1_L4 ((XAuint32) 0x00000008) 2988 2989typedef struct XAVideoCodecDescriptor_ { 2990 XAuint32 codecId; 2991 XAuint32 maxWidth; 2992 XAuint32 maxHeight; 2993 XAuint32 maxFrameRate; 2994 XAuint32 maxBitRate; 2995 XAuint32 rateControlSupported; 2996 XAuint32 profileSetting; 2997 XAuint32 levelSetting; 2998} XAVideoCodecDescriptor; 2999 3000typedef struct XAVideoSettings_ { 3001 XAuint32 encoderId; 3002 XAuint32 width; 3003 XAuint32 height; 3004 XAuint32 frameRate; 3005 XAuint32 bitRate; 3006 XAuint32 rateControl; 3007 XAuint32 profileSetting; 3008 XAuint32 levelSetting; 3009 XAuint32 keyFrameInterval; 3010} XAVideoSettings; 3011 3012XA_API extern const XAInterfaceID XA_IID_VIDEODECODERCAPABILITIES; 3013 3014struct XAVideoDecoderCapabilitiesItf_; 3015typedef const struct XAVideoDecoderCapabilitiesItf_ 3016 * const * XAVideoDecoderCapabilitiesItf; 3017 3018struct XAVideoDecoderCapabilitiesItf_ { 3019 XAresult (*GetVideoDecoders) ( 3020 XAVideoDecoderCapabilitiesItf self, 3021 XAuint32 * pNumDecoders, 3022 XAuint32 * pDecoderIds 3023 ); 3024 XAresult (*GetVideoDecoderCapabilities) ( 3025 XAVideoDecoderCapabilitiesItf self, 3026 XAuint32 decoderId, 3027 XAuint32 * pIndex, 3028 XAVideoCodecDescriptor * pDescriptor 3029 ); 3030}; 3031 3032XA_API extern const XAInterfaceID XA_IID_VIDEOENCODER; 3033 3034XA_API extern const XAInterfaceID XA_IID_VIDEOENCODERCAPABILITIES; 3035 3036struct XAVideoEncoderCapabilitiesItf_; 3037typedef const struct XAVideoEncoderCapabilitiesItf_ 3038 * const * XAVideoEncoderCapabilitiesItf; 3039 3040struct XAVideoEncoderCapabilitiesItf_ { 3041 XAresult (*GetVideoEncoders) ( 3042 XAVideoEncoderCapabilitiesItf self, 3043 XAuint32 * pNumEncoders, 3044 XAuint32 * pEncoderIds 3045 ); 3046 XAresult (*GetVideoEncoderCapabilities) ( 3047 XAVideoEncoderCapabilitiesItf self, 3048 XAuint32 encoderId, 3049 XAuint32 * pIndex, 3050 XAVideoCodecDescriptor * pDescriptor 3051 ); 3052}; 3053 3054struct XAVideoEncoderItf_; 3055typedef const struct XAVideoEncoderItf_ * const * XAVideoEncoderItf; 3056 3057struct XAVideoEncoderItf_ { 3058 XAresult (*SetVideoSettings) ( 3059 XAVideoEncoderItf self, 3060 XAVideoSettings * pSettings 3061 ); 3062 XAresult (*GetVideoSettings) ( 3063 XAVideoEncoderItf self, 3064 XAVideoSettings * pSettings 3065 ); 3066}; 3067 3068/* STREAM INFORMATION */ 3069 3070#define XA_DOMAINTYPE_AUDIO 0x00000001 3071#define XA_DOMAINTYPE_VIDEO 0x00000002 3072#define XA_DOMAINTYPE_IMAGE 0x00000003 3073#define XA_DOMAINTYPE_TIMEDTEXT 0x00000004 3074#define XA_DOMAINTYPE_MIDI 0x00000005 3075#define XA_DOMAINTYPE_VENDOR 0xFFFFFFFE 3076#define XA_DOMAINTYPE_UNKNOWN 0xFFFFFFFF 3077 3078#define XA_MIDIBANK_DEVICE 0x00000001 3079#define XA_MIDIBANK_CUSTOM 0x00000002 3080 3081#define XA_MIDI_UNKNOWN 0xFFFFFFFF 3082 3083#define XA_STREAMCBEVENT_PROPERTYCHANGE ((XAuint32) 0x00000001) 3084 3085typedef struct XAMediaContainerInformation_ { 3086 XAuint32 containerType; 3087 XAmillisecond mediaDuration; 3088 XAuint32 numStreams; 3089} XAMediaContainerInformation; 3090 3091typedef struct XAVideoStreamInformation_ { 3092 XAuint32 codecId; 3093 XAuint32 width; 3094 XAuint32 height; 3095 XAuint32 frameRate; 3096 XAuint32 bitRate; 3097 XAmillisecond duration; 3098} XAVideoStreamInformation; 3099 3100typedef struct XAAudioStreamInformation_ { 3101 XAuint32 codecId; 3102 XAuint32 channels; 3103 XAmilliHertz sampleRate; 3104 XAuint32 bitRate; 3105 XAchar langCountry[16]; 3106 XAmillisecond duration; 3107} XAAudioStreamInformation; 3108 3109typedef struct XAImageStreamInformation_ { 3110 XAuint32 codecId; 3111 XAuint32 width; 3112 XAuint32 height; 3113 XAmillisecond presentationDuration; 3114} XAImageStreamInformation; 3115 3116typedef struct XATimedTextStreamInformation_ { 3117 XAuint16 layer; 3118 XAuint32 width; 3119 XAuint32 height; 3120 XAuint16 tx; 3121 XAuint16 ty; 3122 XAuint32 bitrate; 3123 XAchar langCountry[16]; 3124 XAmillisecond duration; 3125} XATimedTextStreamInformation; 3126 3127typedef struct XAMIDIStreamInformation_ { 3128 XAuint32 channels; 3129 XAuint32 tracks; 3130 XAuint32 bankType; 3131 XAchar langCountry[16]; 3132 XAmillisecond duration; 3133} XAMIDIStreamInformation; 3134 3135typedef struct XAVendorStreamInformation_ { 3136 void *VendorStreamInfo; 3137} XAVendorStreamInformation; 3138 3139XA_API extern const XAInterfaceID XA_IID_STREAMINFORMATION; 3140 3141struct XAStreamInformationItf_; 3142typedef const struct XAStreamInformationItf_ * const * XAStreamInformationItf; 3143 3144typedef void (XAAPIENTRY * xaStreamEventChangeCallback) ( 3145 XAStreamInformationItf caller, 3146 XAuint32 eventId, 3147 XAuint32 streamIndex, 3148 void * pEventData, 3149 void * pContext 3150); 3151 3152struct XAStreamInformationItf_ { 3153 XAresult (*QueryMediaContainerInformation) ( 3154 XAStreamInformationItf self, 3155 XAMediaContainerInformation * info 3156 ); 3157 XAresult (*QueryStreamType) ( 3158 XAStreamInformationItf self, 3159 XAuint32 streamIndex, 3160 XAuint32 *domain 3161 ); 3162 XAresult (*QueryStreamInformation) ( 3163 XAStreamInformationItf self, 3164 XAuint32 streamIndex, 3165 void * info 3166 ); 3167 XAresult (*QueryStreamName) ( 3168 XAStreamInformationItf self, 3169 XAuint32 streamIndex, 3170 XAuint16 * pNameSize, 3171 XAchar * pName 3172 ); 3173 XAresult (*RegisterStreamChangeCallback) ( 3174 XAStreamInformationItf self, 3175 xaStreamEventChangeCallback callback, 3176 void * pContext 3177 ); 3178 XAresult (*QueryActiveStreams) ( 3179 XAStreamInformationItf self, 3180 XAuint32 *numStreams, 3181 XAboolean *activeStreams 3182 ); 3183 XAresult (*SetActiveStream) ( 3184 XAStreamInformationItf self, 3185 XAuint32 streamNum, 3186 XAboolean active, 3187 XAboolean commitNow 3188 ); 3189}; 3190 3191#ifdef __cplusplus 3192} /* extern "C" */ 3193#endif 3194 3195#endif /* _OPENMAXAL_H_ */ 3196