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