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