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 36 extern "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 */ 47 typedef xa_int8_t XAint8; /* 8 bit signed integer */ 48 typedef xa_uint8_t XAuint8; /* 8 bit unsigned integer */ 49 typedef xa_int16_t XAint16; /* 16 bit signed integer */ 50 typedef xa_uint16_t XAuint16; /* 16 bit unsigned integer */ 51 typedef xa_int32_t XAint32; /* 32 bit signed integer */ 52 typedef xa_uint32_t XAuint32; /* 32 bit unsigned integer */ 53 typedef xa_uint64_t XAuint64; /* 64 bit unsigned integer */ 54 55 typedef XAuint32 XAboolean; 56 typedef XAuint8 XAchar; 57 typedef XAint16 XAmillibel; 58 typedef XAuint32 XAmillisecond; 59 typedef XAuint32 XAmilliHertz; 60 typedef XAint32 XAmillimeter; 61 typedef XAint32 XAmillidegree; 62 typedef XAint16 XApermille; 63 typedef XAuint32 XAmicrosecond; 64 typedef XAuint64 XAtime; 65 typedef 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 */ 108 typedef 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 */ 117 XA_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 150 XA_API extern const XAInterfaceID XA_IID_OBJECT; 151 152 struct XAObjectItf_; 153 typedef const struct XAObjectItf_ * const * XAObjectItf; 154 155 typedef void (XAAPIENTRY * xaObjectCallback) ( 156 XAObjectItf caller, 157 const void * pContext, 158 XAuint32 event, 159 XAresult result, 160 XAuint32 param, 161 void * pInterface 162 ); 163 164 struct 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 213 XA_API extern const XAInterfaceID XA_IID_CONFIGEXTENSION; 214 215 struct XAConfigExtensionsItf_; 216 typedef const struct XAConfigExtensionsItf_ 217 * const * XAConfigExtensionsItf; 218 219 struct 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 242 XA_API extern const XAInterfaceID XA_IID_DYNAMICINTERFACEMANAGEMENT; 243 244 struct XADynamicInterfaceManagementItf_; 245 typedef const struct XADynamicInterfaceManagementItf_ 246 * const * XADynamicInterfaceManagementItf; 247 248 typedef void (XAAPIENTRY * xaDynamicInterfaceManagementCallback) ( 249 XADynamicInterfaceManagementItf caller, 250 void * pContext, 251 XAuint32 event, 252 XAresult result, 253 const XAInterfaceID iid 254 ); 255 256 struct 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 292 typedef struct XADataSink_ { 293 void * pLocator; 294 void * pFormat; 295 } XADataSink; 296 297 typedef 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 332 typedef 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 381 typedef 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 431 typedef struct XADataFormat_RawImage_ { 432 XAuint32 formatType; 433 XAuint32 colorFormat; 434 XAuint32 height; 435 XAuint32 width; 436 XAuint32 stride; 437 } XADataFormat_RawImage; 438 439 typedef 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 451 typedef struct XADataLocator_IODevice_ { 452 XAuint32 locatorType; 453 XAuint32 deviceType; 454 XAuint32 deviceID; 455 XAObjectItf device; 456 } XADataLocator_IODevice; 457 458 typedef void * XANativeHandle; 459 460 typedef struct XADataLocator_NativeDisplay_{ 461 XAuint32 locatorType; 462 XANativeHandle hWindow; 463 XANativeHandle hDisplay; 464 } XADataLocator_NativeDisplay; 465 466 typedef struct XADataLocator_OutputMix { 467 XAuint32 locatorType; 468 XAObjectItf outputMix; 469 } XADataLocator_OutputMix; 470 471 typedef 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 502 typedef struct XAEngineOption_ { 503 XAuint32 feature; 504 XAuint32 data; 505 } XAEngineOption; 506 507 XA_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 516 XA_API XAresult XAAPIENTRY xaQueryNumSupportedEngineInterfaces( 517 XAuint32 * pNumSupportedInterfaces 518 ); 519 520 XA_API XAresult XAAPIENTRY xaQuerySupportedEngineInterfaces( 521 XAuint32 index, 522 XAInterfaceID * pInterfaceId 523 ); 524 525 typedef struct XALEDDescriptor_ { 526 XAuint8 ledCount; 527 XAuint8 primaryLED; 528 XAuint32 colorMask; 529 } XALEDDescriptor; 530 531 typedef struct XAVibraDescriptor_ { 532 XAboolean supportsFrequency; 533 XAboolean supportsIntensity; 534 XAmilliHertz minFrequency; 535 XAmilliHertz maxFrequency; 536 } XAVibraDescriptor; 537 538 539 XA_API extern const XAInterfaceID XA_IID_ENGINE; 540 541 struct XAEngineItf_; 542 typedef const struct XAEngineItf_ * const * XAEngineItf; 543 544 struct 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 676 XA_API extern const XAInterfaceID XA_IID_THREADSYNC; 677 678 struct XAThreadSyncItf_; 679 typedef const struct XAThreadSyncItf_ * const * XAThreadSyncItf; 680 681 struct 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 720 XA_API extern const XAInterfaceID XA_IID_PLAY; 721 722 struct XAPlayItf_; 723 typedef const struct XAPlayItf_ * const * XAPlayItf; 724 725 typedef void (XAAPIENTRY * xaPlayCallback) ( 726 XAPlayItf caller, 727 void * pContext, 728 XAuint32 event 729 ); 730 731 struct 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 791 XA_API extern const XAInterfaceID XA_IID_PLAYBACKRATE; 792 793 struct XAPlaybackRateItf_; 794 typedef const struct XAPlaybackRateItf_ * const * XAPlaybackRateItf; 795 796 struct 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 830 XA_API extern const XAInterfaceID XA_IID_PREFETCHSTATUS; 831 832 struct XAPrefetchStatusItf_; 833 typedef const struct XAPrefetchStatusItf_ 834 * const * XAPrefetchStatusItf; 835 836 typedef void (XAAPIENTRY * xaPrefetchCallback) ( 837 XAPrefetchStatusItf caller, 838 void * pContext, 839 XAuint32 event 840 ); 841 842 struct 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 876 XA_API extern const XAInterfaceID XA_IID_SEEK; 877 878 struct XASeekItf_; 879 typedef const struct XASeekItf_ * const * XASeekItf; 880 881 struct 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 903 XA_API extern const XAInterfaceID XA_IID_VOLUME; 904 905 struct XAVolumeItf_; 906 typedef const struct XAVolumeItf_ * const * XAVolumeItf; 907 908 struct 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 949 XA_API extern const XAInterfaceID XA_IID_IMAGECONTROLS; 950 951 struct XAImageControlsItf_; 952 typedef const struct XAImageControlsItf_ * const * XAImageControlsItf; 953 954 struct 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 998 XA_API extern const XAInterfaceID XA_IID_IMAGEEFFECTS; 999 1000 struct XAImageEffectsItf_; 1001 typedef const struct XAImageEffectsItf_ * const * XAImageEffectsItf; 1002 1003 struct 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 1038 typedef struct XARectangle_ { 1039 XAuint32 left; 1040 XAuint32 top; 1041 XAuint32 width; 1042 XAuint32 height; 1043 } XARectangle; 1044 1045 XA_API extern const XAInterfaceID XA_IID_VIDEOPOSTPROCESSING; 1046 1047 struct XAVideoPostProcessingItf_; 1048 typedef const struct XAVideoPostProcessingItf_ * const * XAVideoPostProcessingItf; 1049 1050 struct 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 1101 XA_API extern const XAInterfaceID XA_IID_RECORD; 1102 1103 struct XARecordItf_; 1104 typedef const struct XARecordItf_ * const * XARecordItf; 1105 1106 typedef void (XAAPIENTRY * xaRecordCallback) ( 1107 XARecordItf caller, 1108 void * pContext, 1109 XAuint32 event 1110 ); 1111 1112 struct 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 1165 XA_API extern const XAInterfaceID XA_IID_SNAPSHOT; 1166 1167 struct XASnapshotItf_; 1168 typedef const struct XASnapshotItf_ * const * XASnapshotItf; 1169 1170 typedef void (XAAPIENTRY * xaSnapshotInitiatedCallback) ( 1171 XASnapshotItf caller, 1172 void * context 1173 ); 1174 1175 typedef void (XAAPIENTRY * xaSnapshotTakenCallback) ( 1176 XASnapshotItf caller, 1177 void * context, 1178 XAuint32 numberOfPicsTaken, 1179 const XADataSink * image 1180 ); 1181 1182 struct 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 1298 typedef struct XAMetadataInfo_ { 1299 XAuint32 size; 1300 XAuint32 encoding; 1301 const XAchar langCountry[16]; 1302 XAuint8 data[1]; 1303 } XAMetadataInfo; 1304 1305 XA_API extern const XAInterfaceID XA_IID_METADATAEXTRACTION; 1306 1307 struct XAMetadataExtractionItf_; 1308 typedef const struct XAMetadataExtractionItf_ 1309 * const * XAMetadataExtractionItf; 1310 1311 struct 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 1353 XA_API extern const XAInterfaceID XA_IID_METADATAINSERTION; 1354 1355 struct XAMetadataInsertionItf_; 1356 typedef const struct XAMetadataInsertionItf_ 1357 * const * XAMetadataInsertionItf; 1358 1359 typedef void (XAAPIENTRY * xaMetadataInsertionCallback) ( 1360 XAMetadataInsertionItf caller, 1361 void * pContext, 1362 XAMetadataInfo * pKey, 1363 XAMetadataInfo * pValue, 1364 XAint32 nodeID, 1365 XAboolean result 1366 ); 1367 1368 struct 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 1417 XA_API extern const XAInterfaceID XA_IID_METADATATRAVERSAL; 1418 1419 struct XAMetadataTraversalItf_; 1420 typedef const struct XAMetadataTraversalItf_ 1421 * const * XAMetadataTraversalItf; 1422 1423 struct 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 1453 XA_API extern const XAInterfaceID XA_IID_DYNAMICSOURCE; 1454 1455 struct XADynamicSourceItf_; 1456 typedef const struct XADynamicSourceItf_ * const * XADynamicSourceItf; 1457 1458 struct 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 1583 typedef 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 1594 typedef 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 1607 XA_API extern const XAInterfaceID XA_IID_CAMERACAPABILITIES; 1608 1609 struct XACameraCapabilitiesItf_; 1610 typedef const struct XACameraCapabilitiesItf_ 1611 * const * XACameraCapabilitiesItf; 1612 1613 struct 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 1688 XA_API extern const XAInterfaceID XA_IID_CAMERA; 1689 1690 struct XACameraItf_; 1691 typedef const struct XACameraItf_ * const * XACameraItf; 1692 1693 typedef void (XAAPIENTRY * xaCameraCallback) ( 1694 XACameraItf caller, 1695 void * pContext, 1696 XAuint32 eventId, 1697 XAuint32 eventData 1698 ); 1699 1700 struct 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 1850 typedef 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 1864 typedef 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 1878 XA_API extern const XAInterfaceID XA_IID_AUDIOIODEVICECAPABILITIES; 1879 1880 struct XAAudioIODeviceCapabilitiesItf_; 1881 typedef const struct XAAudioIODeviceCapabilitiesItf_ 1882 * const * XAAudioIODeviceCapabilitiesItf; 1883 1884 typedef void (XAAPIENTRY * xaAvailableAudioInputsChangedCallback) ( 1885 XAAudioIODeviceCapabilitiesItf caller, 1886 void * pContext, 1887 XAuint32 deviceID, 1888 XAint32 numInputs, 1889 XAboolean isNew 1890 ); 1891 1892 typedef void (XAAPIENTRY * xaAvailableAudioOutputsChangedCallback) ( 1893 XAAudioIODeviceCapabilitiesItf caller, 1894 void * pContext, 1895 XAuint32 deviceID, 1896 XAint32 numOutputs, 1897 XAboolean isNew 1898 ); 1899 1900 typedef void (XAAPIENTRY * xaDefaultDeviceIDMapChangedCallback) ( 1901 XAAudioIODeviceCapabilitiesItf caller, 1902 void * pContext, 1903 XAboolean isOutput, 1904 XAint32 numDevices 1905 ); 1906 1907 struct 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 1972 XA_API extern const XAInterfaceID XA_IID_DEVICEVOLUME; 1973 1974 struct XADeviceVolumeItf_; 1975 typedef const struct XADeviceVolumeItf_ * const * XADeviceVolumeItf; 1976 1977 struct 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 2001 XA_API extern const XAInterfaceID XA_IID_EQUALIZER; 2002 2003 struct XAEqualizerItf_; 2004 typedef const struct XAEqualizerItf_ * const * XAEqualizerItf; 2005 2006 struct 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 2071 XA_API extern const XAInterfaceID XA_IID_OUTPUTMIX; 2072 2073 struct XAOutputMixItf_; 2074 typedef const struct XAOutputMixItf_ * const * XAOutputMixItf; 2075 2076 typedef void (XAAPIENTRY * xaMixDeviceChangeCallback) ( 2077 XAOutputMixItf caller, 2078 void * pContext 2079 ); 2080 2081 struct 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 2117 XA_API extern const XAInterfaceID XA_IID_RADIO; 2118 2119 struct XARadioItf_; 2120 typedef const struct XARadioItf_ * const * XARadioItf; 2121 2122 typedef void (XAAPIENTRY * xaRadioCallback) ( 2123 XARadioItf caller, 2124 void * pContext, 2125 XAuint32 event, 2126 XAuint32 eventIntData, 2127 XAboolean eventBooleanData 2128 ); 2129 2130 struct 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 2423 XA_API extern const XAInterfaceID XA_IID_RDS; 2424 2425 struct XARDSItf_; 2426 typedef const struct XARDSItf_ * const * XARDSItf; 2427 2428 typedef void (XAAPIENTRY * xaGetODAGroupCallback) ( 2429 XARadioItf caller, 2430 void * pContext, 2431 XAboolean success, 2432 XAint16 group, 2433 XAuint16 message 2434 ); 2435 2436 typedef void (XAAPIENTRY * xaNewODADataCallback) ( 2437 XARDSItf caller, 2438 void * pContext, 2439 XAint16 group, 2440 XAuint64 data 2441 ); 2442 2443 typedef void (XAAPIENTRY * xaRDSCallback) ( 2444 XARDSItf caller, 2445 void * pContext, 2446 XAuint16 event, 2447 XAuint8 eventData 2448 ); 2449 2450 struct 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 2558 XA_API extern const XAInterfaceID XA_IID_VIBRA; 2559 2560 struct XAVibraItf_; 2561 typedef const struct XAVibraItf_ * const * XAVibraItf; 2562 2563 struct 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 2592 typedef struct XAHSL_ { 2593 XAmillidegree hue; 2594 XApermille saturation; 2595 XApermille lightness; 2596 } XAHSL; 2597 2598 XA_API extern const XAInterfaceID XA_IID_LED; 2599 2600 struct XALEDArrayItf_; 2601 typedef const struct XALEDArrayItf_ * const * XALEDArrayItf; 2602 2603 struct 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 2716 typedef 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 2734 typedef 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 2750 XA_API extern const XAInterfaceID XA_IID_AUDIODECODERCAPABILITIES; 2751 2752 struct XAAudioDecoderCapabilitiesItf_; 2753 typedef const struct XAAudioDecoderCapabilitiesItf_ 2754 * const * XAAudioDecoderCapabilitiesItf; 2755 2756 struct 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 2770 XA_API extern const XAInterfaceID XA_IID_AUDIOENCODER; 2771 2772 struct XAAudioEncoderItf_; 2773 typedef const struct XAAudioEncoderItf_ * const * XAAudioEncoderItf; 2774 2775 struct XAAudioEncoderItf_ { 2776 XAresult (*SetEncoderSettings) ( 2777 XAAudioEncoderItf self, 2778 XAAudioEncoderSettings * pSettings 2779 ); 2780 XAresult (*GetEncoderSettings) ( 2781 XAAudioEncoderItf self, 2782 XAAudioEncoderSettings * pSettings 2783 ); 2784 }; 2785 2786 XA_API extern const XAInterfaceID XA_IID_AUDIOENCODERCAPABILITIES; 2787 2788 struct XAAudioEncoderCapabilitiesItf_; 2789 typedef const struct XAAudioEncoderCapabilitiesItf_ 2790 * const * XAAudioEncoderCapabilitiesItf; 2791 2792 struct 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 2815 typedef struct XAImageCodecDescriptor_ { 2816 XAuint32 codecId; 2817 XAuint32 maxWidth; 2818 XAuint32 maxHeight; 2819 } XAImageCodecDescriptor; 2820 2821 typedef struct XAImageSettings_ { 2822 XAuint32 encoderId; 2823 XAuint32 width; 2824 XAuint32 height; 2825 XApermille compressionLevel; 2826 XAuint32 colorFormat; 2827 } XAImageSettings; 2828 2829 XA_API extern const XAInterfaceID XA_IID_IMAGEENCODERCAPABILITIES; 2830 2831 struct XAImageEncoderCapabilitiesItf_; 2832 typedef const struct XAImageEncoderCapabilitiesItf_ 2833 * const * XAImageEncoderCapabilitiesItf; 2834 2835 struct 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 2848 XA_API extern const XAInterfaceID XA_IID_IMAGEDECODERCAPABILITIES; 2849 2850 struct XAImageDecoderCapabilitiesItf_; 2851 typedef const struct XAImageDecoderCapabilitiesItf_ 2852 * const * XAImageDecoderCapabilitiesItf; 2853 2854 struct 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 2867 XA_API extern const XAInterfaceID XA_IID_IMAGEENCODER; 2868 2869 struct XAImageEncoderItf_; 2870 typedef const struct XAImageEncoderItf_ * const * XAImageEncoderItf; 2871 2872 struct 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 2989 typedef 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 3000 typedef 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 3012 XA_API extern const XAInterfaceID XA_IID_VIDEODECODERCAPABILITIES; 3013 3014 struct XAVideoDecoderCapabilitiesItf_; 3015 typedef const struct XAVideoDecoderCapabilitiesItf_ 3016 * const * XAVideoDecoderCapabilitiesItf; 3017 3018 struct 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 3032 XA_API extern const XAInterfaceID XA_IID_VIDEOENCODER; 3033 3034 XA_API extern const XAInterfaceID XA_IID_VIDEOENCODERCAPABILITIES; 3035 3036 struct XAVideoEncoderCapabilitiesItf_; 3037 typedef const struct XAVideoEncoderCapabilitiesItf_ 3038 * const * XAVideoEncoderCapabilitiesItf; 3039 3040 struct 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 3054 struct XAVideoEncoderItf_; 3055 typedef const struct XAVideoEncoderItf_ * const * XAVideoEncoderItf; 3056 3057 struct 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 3085 typedef struct XAMediaContainerInformation_ { 3086 XAuint32 containerType; 3087 XAmillisecond mediaDuration; 3088 XAuint32 numStreams; 3089 } XAMediaContainerInformation; 3090 3091 typedef struct XAVideoStreamInformation_ { 3092 XAuint32 codecId; 3093 XAuint32 width; 3094 XAuint32 height; 3095 XAuint32 frameRate; 3096 XAuint32 bitRate; 3097 XAmillisecond duration; 3098 } XAVideoStreamInformation; 3099 3100 typedef struct XAAudioStreamInformation_ { 3101 XAuint32 codecId; 3102 XAuint32 channels; 3103 XAmilliHertz sampleRate; 3104 XAuint32 bitRate; 3105 XAchar langCountry[16]; 3106 XAmillisecond duration; 3107 } XAAudioStreamInformation; 3108 3109 typedef struct XAImageStreamInformation_ { 3110 XAuint32 codecId; 3111 XAuint32 width; 3112 XAuint32 height; 3113 XAmillisecond presentationDuration; 3114 } XAImageStreamInformation; 3115 3116 typedef 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 3127 typedef struct XAMIDIStreamInformation_ { 3128 XAuint32 channels; 3129 XAuint32 tracks; 3130 XAuint32 bankType; 3131 XAchar langCountry[16]; 3132 XAmillisecond duration; 3133 } XAMIDIStreamInformation; 3134 3135 typedef struct XAVendorStreamInformation_ { 3136 void *VendorStreamInfo; 3137 } XAVendorStreamInformation; 3138 3139 XA_API extern const XAInterfaceID XA_IID_STREAMINFORMATION; 3140 3141 struct XAStreamInformationItf_; 3142 typedef const struct XAStreamInformationItf_ * const * XAStreamInformationItf; 3143 3144 typedef void (XAAPIENTRY * xaStreamEventChangeCallback) ( 3145 XAStreamInformationItf caller, 3146 XAuint32 eventId, 3147 XAuint32 streamIndex, 3148 void * pEventData, 3149 void * pContext 3150 ); 3151 3152 struct 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