111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/*
211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Copyright (c) 2007-2010 The Khronos Group Inc.
311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * Permission is hereby granted, free of charge, to any person obtaining
511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * a copy of this software and/or associated documentation files (the
611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * "Materials "), to deal in the Materials without restriction, including
711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * without limitation the rights to use, copy, modify, merge, publish,
811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * distribute, sublicense, and/or sell copies of the Materials, and to
911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * permit persons to whom the Materials are furnished to do so, subject to
1011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * the following conditions:
1111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * The above copyright notice and this permission notice shall be included
1311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * in all copies or substantial portions of the Materials.
1411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
1511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
1811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
1911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
2011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
2111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
2211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
2311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert * OpenMAXAL.h - OpenMAX AL version 1.0.1
2411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert *
2511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert */
2611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
2711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************/
2811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* NOTE: This file is a standard OpenMAX AL header file and should not be   */
2911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* modified in any way.                                                     */
3011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/****************************************************************************/
3111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _OPENMAXAL_H_
3311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _OPENMAXAL_H_
3411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __cplusplus
3611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertextern "C" {
3711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
3811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
3911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#include "OpenMAXAL_Platform.h"
4011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
4311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /* TYPES                                                         */
4411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
4511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
4611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* remap common types to XA types for clarity */
4711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef xa_int8_t   XAint8;   /* 8 bit signed integer    */
4811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef xa_uint8_t  XAuint8;  /* 8 bit unsigned integer  */
4911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef xa_int16_t  XAint16;  /* 16 bit signed integer   */
5011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef xa_uint16_t XAuint16; /* 16 bit unsigned integer */
5111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef xa_int32_t  XAint32;  /* 32 bit signed integer   */
5211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef xa_uint32_t XAuint32; /* 32 bit unsigned integer */
5311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef xa_uint64_t XAuint64; /* 64 bit unsigned integer */
5411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
5511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef XAuint32    XAboolean;
5611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef XAuint8     XAchar;
5711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef XAint16     XAmillibel;
5811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef XAuint32    XAmillisecond;
5911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef XAuint32    XAmilliHertz;
6011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef XAint32     XAmillimeter;
6111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef XAint32     XAmillidegree;
6211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef XAint16     XApermille;
6311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef XAuint32    XAmicrosecond;
6411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef XAuint64    XAtime;
6511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef XAuint32    XAresult;
6611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
6711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_BOOLEAN_FALSE                    ((XAuint32) 0x00000000)
6811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_BOOLEAN_TRUE                     ((XAuint32) 0x00000001)
6911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_MILLIBEL_MAX                     ((XAmillibel) 0x7FFF)
7111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_MILLIBEL_MIN                     ((XAmillibel) (-XA_MILLIBEL_MAX-1))
7211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_MILLIHERTZ_MAX                   ((XAmilliHertz) 0xFFFFFFFF)
7411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_MILLIMETER_MAX                   ((XAmillimeter) 0x7FFFFFFF)
7611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
7911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
8011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /* RESULT CODES                                                  */
8111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
8211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
8311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_SUCCESS                   ((XAuint32) 0x00000000)
8411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_PRECONDITIONS_VIOLATED    ((XAuint32) 0x00000001)
8511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_PARAMETER_INVALID         ((XAuint32) 0x00000002)
8611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_MEMORY_FAILURE            ((XAuint32) 0x00000003)
8711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_RESOURCE_ERROR            ((XAuint32) 0x00000004)
8811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_RESOURCE_LOST             ((XAuint32) 0x00000005)
8911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_IO_ERROR                  ((XAuint32) 0x00000006)
9011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_BUFFER_INSUFFICIENT       ((XAuint32) 0x00000007)
9111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_CONTENT_CORRUPTED         ((XAuint32) 0x00000008)
9211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_CONTENT_UNSUPPORTED       ((XAuint32) 0x00000009)
9311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_CONTENT_NOT_FOUND         ((XAuint32) 0x0000000A)
9411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_PERMISSION_DENIED         ((XAuint32) 0x0000000B)
9511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_FEATURE_UNSUPPORTED       ((XAuint32) 0x0000000C)
9611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_INTERNAL_ERROR            ((XAuint32) 0x0000000D)
9711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_UNKNOWN_ERROR             ((XAuint32) 0x0000000E)
9811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_OPERATION_ABORTED         ((XAuint32) 0x0000000F)
9911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RESULT_CONTROL_LOST              ((XAuint32) 0x00000010)
10011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
10411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /* INTERFACE ID DEFINITION                                       */
10511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
10611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
10711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* Interface ID defined as a UUID */
10811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAInterfaceID_ {
10911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 time_low;
11011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint16 time_mid;
11111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint16 time_hi_and_version;
11211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint16 clock_seq;
11311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint8  node[6];
11411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} * XAInterfaceID;
11511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* NULL Interface */
11711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_NULL;
11811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
11911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
12211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /* GENERAL INTERFACES, STRUCTS AND DEFINES                       */
12311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
12411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* OBJECT */
12611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
12711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PRIORITY_LOWEST                      ((XAint32) (-0x7FFFFFFF-1))
12811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PRIORITY_VERYLOW                     ((XAint32) -0x60000000)
12911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PRIORITY_LOW                         ((XAint32) -0x40000000)
13011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PRIORITY_BELOWNORMAL                 ((XAint32) -0x20000000)
13111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PRIORITY_NORMAL                      ((XAint32) 0x00000000)
13211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PRIORITY_ABOVENORMAL                 ((XAint32) 0x20000000)
13311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PRIORITY_HIGH                        ((XAint32) 0x40000000)
13411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PRIORITY_VERYHIGH                    ((XAint32) 0x60000000)
13511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PRIORITY_HIGHEST                     ((XAint32) 0x7FFFFFFF)
13611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
13711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECT_EVENT_RUNTIME_ERROR           ((XAuint32) 0x00000001)
13811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECT_EVENT_ASYNC_TERMINATION       ((XAuint32) 0x00000002)
13911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECT_EVENT_RESOURCES_LOST          ((XAuint32) 0x00000003)
14011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECT_EVENT_RESOURCES_AVAILABLE     ((XAuint32) 0x00000004)
14111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECT_EVENT_ITF_CONTROL_TAKEN       ((XAuint32) 0x00000005)
14211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECT_EVENT_ITF_CONTROL_RETURNED    ((XAuint32) 0x00000006)
14311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECT_EVENT_ITF_PARAMETERS_CHANGED  ((XAuint32) 0x00000007)
14411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECT_STATE_UNREALIZED              ((XAuint32) 0x00000001)
14611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECT_STATE_REALIZED                ((XAuint32) 0x00000002)
14711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECT_STATE_SUSPENDED               ((XAuint32) 0x00000003)
14811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
14911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_OBJECT;
15111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAObjectItf_;
15311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAObjectItf_ * const * XAObjectItf;
15411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
15511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaObjectCallback) (
15611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAObjectItf caller,
15711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    const void * pContext,
15811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 event,
15911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult result,
16011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 param,
16111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pInterface
16211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
16311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
16411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAObjectItf_ {
16511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*Realize) (
16611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf self,
16711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean async
16811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
16911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*Resume) (
17011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf self,
17111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean async
17211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
17311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetState) (
17411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf self,
17511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pState
17611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
17711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetInterface) (
17811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf self,
17911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID iid,
18011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pInterface
18111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
18211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterCallback) (
18311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf self,
18411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaObjectCallback callback,
18511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
18611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
18711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void (*AbortAsyncOperation) (
18811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf self
18911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
19011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void (*Destroy) (
19111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf self
19211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
19311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetPriority) (
19411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf self,
19511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 priority,
19611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean preemptable
19711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
19811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetPriority) (
19911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf self,
20011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 * pPriority,
20111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pPreemptable
20211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
20311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetLossOfControlInterfaces) (
20411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf self,
20511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint16 numInterfaces,
20611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAInterfaceID * pInterfaceIDs,
20711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean enabled
20811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
20911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
21011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* CONFIG EXTENSION */
21211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_CONFIGEXTENSION;
21411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAConfigExtensionsItf_;
21611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAConfigExtensionsItf_
21711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XAConfigExtensionsItf;
21811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
21911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAConfigExtensionsItf_ {
22011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetConfiguration) (
22111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAConfigExtensionsItf self,
22211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAchar * configKey,
22311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 valueSize,
22411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const void * pConfigValue
22511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
22611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetConfiguration) (
22711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAConfigExtensionsItf self,
22811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAchar * configKey,
22911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pValueSize,
23011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pConfigValue
23111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
23211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
23311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* DYNAMIC INTERFACE MANAGEMENT */
23511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
23611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DYNAMIC_ITF_EVENT_RUNTIME_ERROR              ((XAuint32) 0x00000001)
23711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DYNAMIC_ITF_EVENT_ASYNC_TERMINATION          ((XAuint32) 0x00000002)
23811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DYNAMIC_ITF_EVENT_RESOURCES_LOST             ((XAuint32) 0x00000003)
23911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DYNAMIC_ITF_EVENT_RESOURCES_LOST_PERMANENTLY ((XAuint32) 0x00000004)
24011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DYNAMIC_ITF_EVENT_RESOURCES_AVAILABLE        ((XAuint32) 0x00000005)
24111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_DYNAMICINTERFACEMANAGEMENT;
24311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XADynamicInterfaceManagementItf_;
24511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XADynamicInterfaceManagementItf_
24611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XADynamicInterfaceManagementItf;
24711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
24811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaDynamicInterfaceManagementCallback) (
24911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XADynamicInterfaceManagementItf caller,
25011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
25111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 event,
25211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult result,
25311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    const XAInterfaceID iid
25411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
25511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
25611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XADynamicInterfaceManagementItf_ {
25711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*AddInterface) (
25811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADynamicInterfaceManagementItf self,
25911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID iid,
26011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean aysnc
26111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
26211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RemoveInterface) (
26311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADynamicInterfaceManagementItf self,
26411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID iid
26511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
26611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*ResumeInterface) (
26711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADynamicInterfaceManagementItf self,
26811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID iid,
26911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean aysnc
27011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
27111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterCallback) (
27211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADynamicInterfaceManagementItf self,
27311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaDynamicInterfaceManagementCallback callback,
27411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
27511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
27611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
27711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
27811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* DATA SOURCES/SINKS */
27911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
28011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DATAFORMAT_MIME              ((XAuint32) 0x00000001)
28111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DATAFORMAT_PCM               ((XAuint32) 0x00000002)
28211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DATAFORMAT_RAWIMAGE          ((XAuint32) 0x00000003)
28311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
28411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DATALOCATOR_URI              ((XAuint32) 0x00000001)
28511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DATALOCATOR_ADDRESS          ((XAuint32) 0x00000002)
28611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DATALOCATOR_IODEVICE         ((XAuint32) 0x00000003)
28711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DATALOCATOR_OUTPUTMIX        ((XAuint32) 0x00000004)
28811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DATALOCATOR_NATIVEDISPLAY    ((XAuint32) 0x00000005)
28911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DATALOCATOR_RESERVED6        ((XAuint32) 0x00000006)
29011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DATALOCATOR_RESERVED7        ((XAuint32) 0x00000007)
29111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XADataSink_ {
29311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pLocator;
29411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pFormat;
29511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XADataSink;
29611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
29711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XADataSource_ {
29811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pLocator;
29911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pFormat;
30011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XADataSource;
30111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
30211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_UNSPECIFIED    ((XAuint32) 0x00000001)
30311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_RAW            ((XAuint32) 0x00000002)
30411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_ASF            ((XAuint32) 0x00000003)
30511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_AVI            ((XAuint32) 0x00000004)
30611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_BMP            ((XAuint32) 0x00000005)
30711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_JPG            ((XAuint32) 0x00000006)
30811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_JPG2000        ((XAuint32) 0x00000007)
30911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_M4A            ((XAuint32) 0x00000008)
31011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_MP3            ((XAuint32) 0x00000009)
31111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_MP4            ((XAuint32) 0x0000000A)
31211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_MPEG_ES        ((XAuint32) 0x0000000B)
31311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_MPEG_PS        ((XAuint32) 0x0000000C)
31411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_MPEG_TS        ((XAuint32) 0x0000000D)
31511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_QT             ((XAuint32) 0x0000000E)
31611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_WAV            ((XAuint32) 0x0000000F)
31711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_XMF_0          ((XAuint32) 0x00000010)
31811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_XMF_1          ((XAuint32) 0x00000011)
31911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_XMF_2          ((XAuint32) 0x00000012)
32011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_XMF_3          ((XAuint32) 0x00000013)
32111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_XMF_GENERIC    ((XAuint32) 0x00000014)
32211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_AMR            ((XAuint32) 0x00000015)
32311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_AAC            ((XAuint32) 0x00000016)
32411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_3GPP           ((XAuint32) 0x00000017)
32511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_3GA            ((XAuint32) 0x00000018)
32611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_RM             ((XAuint32) 0x00000019)
32711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_DMF            ((XAuint32) 0x0000001A)
32811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_SMF            ((XAuint32) 0x0000001B)
32911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_MOBILE_DLS     ((XAuint32) 0x0000001C)
33011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CONTAINERTYPE_OGG            ((XAuint32) 0x0000001D)
33111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XADataFormat_MIME_ {
33311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 formatType;
33411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAchar * mimeType;
33511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 containerType;
33611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XADataFormat_MIME;
33711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
33811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_BYTEORDER_BIGENDIAN          ((XAuint32) 0x00000001)
33911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_BYTEORDER_LITTLEENDIAN       ((XAuint32) 0x00000002)
34011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
34111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_8               ((XAuint32)   8000000)
34211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_11_025          ((XAuint32)  11025000)
34311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_12              ((XAuint32)  12000000)
34411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_16              ((XAuint32)  16000000)
34511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_22_05           ((XAuint32)  22050000)
34611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_24              ((XAuint32)  24000000)
34711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_32              ((XAuint32)  32000000)
34811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_44_1            ((XAuint32)  44100000)
34911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_48              ((XAuint32)  48000000)
35011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_64              ((XAuint32)  64000000)
35111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_88_2            ((XAuint32)  88200000)
35211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_96              ((XAuint32)  96000000)
35311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SAMPLINGRATE_192             ((XAuint32) 192000000)
35411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
35511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_FRONT_LEFT               ((XAuint32) 0x00000001)
35611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_FRONT_RIGHT              ((XAuint32) 0x00000002)
35711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_FRONT_CENTER             ((XAuint32) 0x00000004)
35811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_LOW_FREQUENCY            ((XAuint32) 0x00000008)
35911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_BACK_LEFT                ((XAuint32) 0x00000010)
36011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_BACK_RIGHT               ((XAuint32) 0x00000020)
36111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_FRONT_LEFT_OF_CENTER     ((XAuint32) 0x00000040)
36211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_FRONT_RIGHT_OF_CENTER    ((XAuint32) 0x00000080)
36311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_BACK_CENTER              ((XAuint32) 0x00000100)
36411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_SIDE_LEFT                ((XAuint32) 0x00000200)
36511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_SIDE_RIGHT               ((XAuint32) 0x00000400)
36611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_TOP_CENTER               ((XAuint32) 0x00000800)
36711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_TOP_FRONT_LEFT           ((XAuint32) 0x00001000)
36811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_TOP_FRONT_CENTER         ((XAuint32) 0x00002000)
36911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_TOP_FRONT_RIGHT          ((XAuint32) 0x00004000)
37011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_TOP_BACK_LEFT            ((XAuint32) 0x00008000)
37111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_TOP_BACK_CENTER          ((XAuint32) 0x00010000)
37211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SPEAKER_TOP_BACK_RIGHT           ((XAuint32) 0x00020000)
37311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
37411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PCMSAMPLEFORMAT_FIXED_8          ((XAuint16) 0x0008)
37511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PCMSAMPLEFORMAT_FIXED_16         ((XAuint16) 0x0010)
37611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PCMSAMPLEFORMAT_FIXED_20         ((XAuint16) 0x0014)
37711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PCMSAMPLEFORMAT_FIXED_24         ((XAuint16) 0x0018)
37811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PCMSAMPLEFORMAT_FIXED_28         ((XAuint16) 0x001C)
37911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PCMSAMPLEFORMAT_FIXED_32         ((XAuint16) 0x0020)
38011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
38111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XADataFormat_PCM_ {
38211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 formatType;
38311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 numChannels;
38411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 samplesPerSec;
38511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 bitsPerSample;
38611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 containerSize;
38711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 channelMask;
38811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 endianness;
38911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XADataFormat_PCM;
39011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
39111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_UNUSED                   ((XAuint32) 0x00000000)
39211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_MONOCHROME               ((XAuint32) 0x00000001)
39311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_8BITRGB332               ((XAuint32) 0x00000002)
39411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_12BITRGB444              ((XAuint32) 0x00000003)
39511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_16BITARGB4444            ((XAuint32) 0x00000004)
39611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_16BITARGB1555            ((XAuint32) 0x00000005)
39711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_16BITRGB565              ((XAuint32) 0x00000006)
39811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_16BITBGR565              ((XAuint32) 0x00000007)
39911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_18BITRGB666              ((XAuint32) 0x00000008)
40011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_18BITARGB1665            ((XAuint32) 0x00000009)
40111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_19BITARGB1666            ((XAuint32) 0x0000000A)
40211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_24BITRGB888              ((XAuint32) 0x0000000B)
40311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_24BITBGR888              ((XAuint32) 0x0000000C)
40411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_24BITARGB1887            ((XAuint32) 0x0000000D)
40511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_25BITARGB1888            ((XAuint32) 0x0000000E)
40611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_32BITBGRA8888            ((XAuint32) 0x0000000F)
40711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_32BITARGB8888            ((XAuint32) 0x00000010)
40811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_YUV411PLANAR             ((XAuint32) 0x00000011)
40911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_YUV420PLANAR             ((XAuint32) 0x00000013)
41011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_YUV420SEMIPLANAR         ((XAuint32) 0x00000015)
41111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_YUV422PLANAR             ((XAuint32) 0x00000016)
41211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_YUV422SEMIPLANAR         ((XAuint32) 0x00000018)
41311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_YCBYCR                   ((XAuint32) 0x00000019)
41411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_YCRYCB                   ((XAuint32) 0x0000001A)
41511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_CBYCRY                   ((XAuint32) 0x0000001B)
41611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_CRYCBY                   ((XAuint32) 0x0000001C)
41711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_YUV444INTERLEAVED        ((XAuint32) 0x0000001D)
41811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_RAWBAYER8BIT             ((XAuint32) 0x0000001E)
41911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_RAWBAYER10BIT            ((XAuint32) 0x0000001F)
42011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_RAWBAYER8BITCOMPRESSED   ((XAuint32) 0x00000020)
42111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_L2                       ((XAuint32) 0x00000021)
42211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_L4                       ((XAuint32) 0x00000022)
42311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_L8                       ((XAuint32) 0x00000023)
42411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_L16                      ((XAuint32) 0x00000024)
42511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_L24                      ((XAuint32) 0x00000025)
42611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_L32                      ((XAuint32) 0x00000026)
42711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_18BITBGR666              ((XAuint32) 0x00000029)
42811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_24BITARGB6666            ((XAuint32) 0x0000002A)
42911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_COLORFORMAT_24BITABGR6666            ((XAuint32) 0x0000002B)
43011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
43111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XADataFormat_RawImage_ {
43211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 formatType;
43311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 colorFormat;
43411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 height;
43511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 width;
43611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 stride;
43711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XADataFormat_RawImage;
43811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
43911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XADataLocator_Address_ {
44011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 locatorType;
44111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pAddress;
44211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 length;
44311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XADataLocator_Address;
44411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
44511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IODEVICE_AUDIOINPUT          ((XAuint32) 0x00000001)
44611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IODEVICE_LEDARRAY            ((XAuint32) 0x00000002)
44711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IODEVICE_VIBRA               ((XAuint32) 0x00000003)
44811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IODEVICE_CAMERA              ((XAuint32) 0x00000004)
44911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IODEVICE_RADIO               ((XAuint32) 0x00000005)
45011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
45111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XADataLocator_IODevice_ {
45211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 locatorType;
45311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 deviceType;
45411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 deviceID;
45511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAObjectItf device;
45611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XADataLocator_IODevice;
45711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
45811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void * XANativeHandle;
45911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XADataLocator_NativeDisplay_{
46111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 locatorType;
46211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XANativeHandle hWindow;
46311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XANativeHandle hDisplay;
46411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XADataLocator_NativeDisplay;
46511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
46611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XADataLocator_OutputMix {
46711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 locatorType;
46811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAObjectItf outputMix;
46911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XADataLocator_OutputMix;
47011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
47111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XADataLocator_URI_ {
47211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 locatorType;
47311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAchar * URI;
47411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XADataLocator_URI;
47511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
47611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
47711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* ENGINE */
47811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
47911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEFAULTDEVICEID_AUDIOINPUT   ((XAuint32) 0xFFFFFFFF)
48011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEFAULTDEVICEID_AUDIOOUTPUT  ((XAuint32) 0xFFFFFFFE)
48111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEFAULTDEVICEID_LED          ((XAuint32) 0xFFFFFFFD)
48211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEFAULTDEVICEID_VIBRA        ((XAuint32) 0xFFFFFFFC)
48311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEFAULTDEVICEID_CAMERA       ((XAuint32) 0xFFFFFFFB)
48411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
48511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_ENGINEOPTION_THREADSAFE      ((XAuint32) 0x00000001)
48611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_ENGINEOPTION_LOSSOFCONTROL   ((XAuint32) 0x00000002)
48711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
48811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECTID_ENGINE              ((XAuint32) 0x00000001)
48911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECTID_LEDDEVICE           ((XAuint32) 0x00000002)
49011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECTID_VIBRADEVICE         ((XAuint32) 0x00000003)
49111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECTID_MEDIAPLAYER         ((XAuint32) 0x00000004)
49211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECTID_MEDIARECORDER       ((XAuint32) 0x00000005)
49311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECTID_RADIODEVICE         ((XAuint32) 0x00000006)
49411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECTID_OUTPUTMIX           ((XAuint32) 0x00000007)
49511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECTID_METADATAEXTRACTOR   ((XAuint32) 0x00000008)
49611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_OBJECTID_CAMERADEVICE        ((XAuint32) 0x00000009)
49711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
49811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PROFILES_MEDIA_PLAYER            ((XAint16) 0x0001)
49911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PROFILES_MEDIA_PLAYER_RECORDER   ((XAint16) 0x0002)
50011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PROFILES_PLUS_MIDI               ((XAint16) 0x0004)
50111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
50211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAEngineOption_ {
50311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 feature;
50411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 data;
50511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAEngineOption;
50611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
50711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API XAresult XAAPIENTRY xaCreateEngine(
50811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAObjectItf * pEngine,
50911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 numOptions,
51011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    const XAEngineOption * pEngineOptions,
51111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 numInterfaces,
51211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    const XAInterfaceID * pInterfaceIds,
51311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    const XAboolean * pInterfaceRequired
51411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
51511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
51611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API XAresult XAAPIENTRY xaQueryNumSupportedEngineInterfaces(
51711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 * pNumSupportedInterfaces
51811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
51911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
52011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API XAresult XAAPIENTRY xaQuerySupportedEngineInterfaces(
52111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 index,
52211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAInterfaceID * pInterfaceId
52311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
52411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
52511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XALEDDescriptor_ {
52611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint8 ledCount;
52711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint8 primaryLED;
52811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 colorMask;
52911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XALEDDescriptor;
53011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
53111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAVibraDescriptor_ {
53211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean supportsFrequency;
53311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean supportsIntensity;
53411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz minFrequency;
53511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz maxFrequency;
53611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAVibraDescriptor;
53711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
53811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
53911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_ENGINE;
54011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
54111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAEngineItf_;
54211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAEngineItf_ * const * XAEngineItf;
54311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
54411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAEngineItf_ {
54511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*CreateCameraDevice) (
54611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
54711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf * pDevice,
54811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 deviceID,
54911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 numInterfaces,
55011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID * pInterfaceIds,
55111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAboolean * pInterfaceRequired
55211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
55311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*CreateRadioDevice) (
55411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
55511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf * pDevice,
55611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 numInterfaces,
55711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID * pInterfaceIds,
55811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAboolean * pInterfaceRequired
55911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
56011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*CreateLEDDevice) (
56111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
56211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf * pDevice,
56311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 deviceID,
56411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 numInterfaces,
56511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID * pInterfaceIds,
56611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAboolean * pInterfaceRequired
56711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
56811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert       XAresult (*CreateVibraDevice) (
56911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
57011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf * pDevice,
57111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 deviceID,
57211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 numInterfaces,
57311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID * pInterfaceIds,
57411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAboolean * pInterfaceRequired
57511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
57611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*CreateMediaPlayer) (
57711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
57811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf * pPlayer,
57911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSource * pDataSrc,
58011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSource * pBankSrc,
58111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSink * pAudioSnk,
58211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSink * pImageVideoSnk,
58311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSink * pVibra,
58411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSink * pLEDArray,
58511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 numInterfaces,
58611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID * pInterfaceIds,
58711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAboolean * pInterfaceRequired
58811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
58911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*CreateMediaRecorder) (
59011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
59111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf * pRecorder,
59211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSource * pAudioSrc,
59311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSource * pImageVideoSrc,
59411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSink * pDataSnk,
59511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 numInterfaces,
59611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID * pInterfaceIds,
59711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAboolean * pInterfaceRequired
59811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
59911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*CreateOutputMix) (
60011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
60111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf * pMix,
60211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 numInterfaces,
60311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID * pInterfaceIds,
60411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAboolean * pInterfaceRequired
60511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
60611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*CreateMetadataExtractor) (
60711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
60811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf * pMetadataExtractor,
60911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSource * pDataSource,
61011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 numInterfaces,
61111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID * pInterfaceIds,
61211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAboolean * pInterfaceRequired
61311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
61411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*CreateExtensionObject) (
61511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
61611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAObjectItf * pObject,
61711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pParameters,
61811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 objectID,
61911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 numInterfaces,
62011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAInterfaceID * pInterfaceIds,
62111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAboolean * pInterfaceRequired
62211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
62311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetImplementationInfo) (
62411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
62511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMajor,
62611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMinor,
62711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pStep,
62811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAchar * pImplementationText
62911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
63011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QuerySupportedProfiles) (
63111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
63211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint16 * pProfilesSupported
63311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
63411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryNumSupportedInterfaces) (
63511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
63611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 objectID,
63711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumSupportedInterfaces
63811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
63911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QuerySupportedInterfaces) (
64011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
64111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 objectID,
64211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 index,
64311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAInterfaceID * pInterfaceId
64411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
64511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryNumSupportedExtensions) (
64611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
64711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumExtensions
64811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
64911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QuerySupportedExtension) (
65011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
65111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 index,
65211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAchar * pExtensionName,
65311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint16 * pNameLength
65411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
65511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*IsExtensionSupported) (
65611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
65711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAchar * pExtensionName,
65811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pSupported
65911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
66011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryLEDCapabilities) (
66111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
66211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 *pIndex,
66311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pLEDDeviceID,
66411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XALEDDescriptor * pDescriptor
66511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
66611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryVibraCapabilities) (
66711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEngineItf self,
66811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 *pIndex,
66911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pVibraDeviceID,
67011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVibraDescriptor * pDescriptor
67111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
67211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
67311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
67411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* THREAD SYNC */
67511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
67611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_THREADSYNC;
67711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
67811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAThreadSyncItf_;
67911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAThreadSyncItf_ * const * XAThreadSyncItf;
68011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
68111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAThreadSyncItf_ {
68211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*EnterCriticalSection) (
68311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAThreadSyncItf self
68411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
68511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*ExitCriticalSection) (
68611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAThreadSyncItf self
68711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
68811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
68911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
69011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
69111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
69211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
69311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /* PLAYBACK RELATED INTERFACES, STRUCTS AND DEFINES              */
69411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
69511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
69611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* PLAY */
69711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
69811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_TIME_UNKNOWN                     ((XAuint32) 0xFFFFFFFF)
69911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
70011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PLAYEVENT_HEADATEND              ((XAuint32) 0x00000001)
70111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PLAYEVENT_HEADATMARKER           ((XAuint32) 0x00000002)
70211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PLAYEVENT_HEADATNEWPOS           ((XAuint32) 0x00000004)
70311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PLAYEVENT_HEADMOVING             ((XAuint32) 0x00000008)
70411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PLAYEVENT_HEADSTALLED            ((XAuint32) 0x00000010)
70511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
70611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PLAYSTATE_STOPPED                ((XAuint32) 0x00000001)
70711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PLAYSTATE_PAUSED                 ((XAuint32) 0x00000002)
70811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PLAYSTATE_PLAYING                ((XAuint32) 0x00000003)
70911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
71011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PREFETCHEVENT_STATUSCHANGE       ((XAuint32) 0x00000001)
71111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PREFETCHEVENT_FILLLEVELCHANGE    ((XAuint32) 0x00000002)
71211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
71311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PREFETCHSTATUS_UNDERFLOW         ((XAuint32) 0x00000001)
71411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PREFETCHSTATUS_SUFFICIENTDATA    ((XAuint32) 0x00000002)
71511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_PREFETCHSTATUS_OVERFLOW          ((XAuint32) 0x00000003)
71611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
71711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SEEKMODE_FAST                    ((XAuint32) 0x0001)
71811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_SEEKMODE_ACCURATE                ((XAuint32) 0x0002)
71911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
72011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_PLAY;
72111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
72211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAPlayItf_;
72311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAPlayItf_ * const * XAPlayItf;
72411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
72511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaPlayCallback) (
72611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAPlayItf caller,
72711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
72811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 event
72911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
73011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
73111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAPlayItf_ {
73211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetPlayState) (
73311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlayItf self,
73411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 state
73511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
73611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetPlayState) (
73711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlayItf self,
73811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pState
73911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
74011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetDuration) (
74111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlayItf self,
74211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond * pMsec
74311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
74411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetPosition) (
74511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlayItf self,
74611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond * pMsec
74711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
74811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterCallback) (
74911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlayItf self,
75011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaPlayCallback callback,
75111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
75211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
75311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetCallbackEventsMask) (
75411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlayItf self,
75511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 eventFlags
75611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
75711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetCallbackEventsMask) (
75811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlayItf self,
75911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pEventFlags
76011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
76111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetMarkerPosition) (
76211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlayItf self,
76311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond mSec
76411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
76511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*ClearMarkerPosition) (
76611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlayItf self
76711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
76811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetMarkerPosition) (
76911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlayItf self,
77011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond * pMsec
77111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
77211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetPositionUpdatePeriod) (
77311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlayItf self,
77411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond mSec
77511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
77611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetPositionUpdatePeriod) (
77711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlayItf self,
77811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond * pMsec
77911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
78011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
78111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
78211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* PLAYBACK RATE */
78311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
78411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RATEPROP_STAGGEREDVIDEO      ((XAuint32) 0x00000001)
78511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RATEPROP_SMOOTHVIDEO         ((XAuint32) 0x00000002)
78611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RATEPROP_SILENTAUDIO         ((XAuint32) 0x00000100)
78711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RATEPROP_STAGGEREDAUDIO      ((XAuint32) 0x00000200)
78811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RATEPROP_NOPITCHCORAUDIO     ((XAuint32) 0x00000400)
78911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RATEPROP_PITCHCORAUDIO       ((XAuint32) 0x00000800)
79011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
79111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_PLAYBACKRATE;
79211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
79311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAPlaybackRateItf_;
79411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAPlaybackRateItf_ * const * XAPlaybackRateItf;
79511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
79611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAPlaybackRateItf_ {
79711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetRate) (
79811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlaybackRateItf self,
79911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille rate
80011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
80111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetRate) (
80211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlaybackRateItf self,
80311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pRate
80411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
80511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetPropertyConstraints) (
80611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlaybackRateItf self,
80711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 constraints
80811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
80911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetProperties) (
81011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlaybackRateItf self,
81111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pProperties
81211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
81311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetCapabilitiesOfRate) (
81411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlaybackRateItf self,
81511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille rate,
81611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pCapabilities
81711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
81811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetRateRange) (
81911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPlaybackRateItf self,
82011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint8 index,
82111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pMinRate,
82211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pMaxRate,
82311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pStepSize,
82411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pCapabilities
82511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
82611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
82711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
82811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* PREFETCH STATUS */
82911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
83011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_PREFETCHSTATUS;
83111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
83211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAPrefetchStatusItf_;
83311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAPrefetchStatusItf_
83411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XAPrefetchStatusItf;
83511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
83611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaPrefetchCallback) (
83711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAPrefetchStatusItf caller,
83811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
83911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 event
84011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
84111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
84211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAPrefetchStatusItf_ {
84311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetPrefetchStatus) (
84411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPrefetchStatusItf self,
84511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pStatus
84611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
84711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetFillLevel) (
84811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPrefetchStatusItf self,
84911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pLevel
85011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
85111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterCallback) (
85211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPrefetchStatusItf self,
85311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaPrefetchCallback callback,
85411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
85511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
85611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetCallbackEventsMask) (
85711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPrefetchStatusItf self,
85811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 eventFlags
85911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
86011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetCallbackEventsMask) (
86111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPrefetchStatusItf self,
86211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pEventFlags
86311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
86411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetFillUpdatePeriod) (
86511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPrefetchStatusItf self,
86611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille period
86711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
86811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetFillUpdatePeriod) (
86911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAPrefetchStatusItf self,
87011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pPeriod
87111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
87211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
87311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
87411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* SEEK */
87511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
87611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_SEEK;
87711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
87811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XASeekItf_;
87911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XASeekItf_ * const * XASeekItf;
88011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
88111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XASeekItf_ {
88211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetPosition) (
88311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XASeekItf self,
88411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond pos,
88511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 seekMode
88611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
88711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetLoop) (
88811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XASeekItf self,
88911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean loopEnable,
89011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond startPos,
89111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond endPos
89211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
89311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetLoop) (
89411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XASeekItf self,
89511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pLoopEnabled,
89611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond * pStartPos,
89711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond * pEndPos
89811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
89911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
90011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
90111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* VOLUME */
90211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
90311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_VOLUME;
90411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
90511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAVolumeItf_;
90611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAVolumeItf_ * const * XAVolumeItf;
90711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
90811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAVolumeItf_ {
90911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetVolumeLevel) (
91011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVolumeItf self,
91111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillibel level
91211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
91311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetVolumeLevel) (
91411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVolumeItf self,
91511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillibel * pLevel
91611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
91711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetMaxVolumeLevel) (
91811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVolumeItf self,
91911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillibel * pMaxLevel
92011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
92111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetMute) (
92211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVolumeItf self,
92311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean mute
92411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
92511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetMute) (
92611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVolumeItf self,
92711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pMute
92811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
92911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*EnableStereoPosition) (
93011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVolumeItf self,
93111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean enable
93211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
93311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*IsEnabledStereoPosition) (
93411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVolumeItf self,
93511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pEnable
93611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
93711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetStereoPosition) (
93811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVolumeItf self,
93911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille stereoPosition
94011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
94111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetStereoPosition) (
94211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVolumeItf self,
94311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pStereoPosition
94411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
94511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
94611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
94711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* IMAGE CONTROL */
94811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
94911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_IMAGECONTROLS;
95011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
95111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAImageControlsItf_;
95211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAImageControlsItf_ * const * XAImageControlsItf;
95311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
95411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAImageControlsItf_ {
95511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetBrightness) (
95611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageControlsItf self,
95711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 brightness
95811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
95911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetBrightness) (
96011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageControlsItf self,
96111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pBrightness
96211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
96311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetContrast) (
96411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageControlsItf self,
96511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 contrast
96611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
96711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetContrast) (
96811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageControlsItf self,
96911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 * pContrast
97011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
97111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetGamma) (
97211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageControlsItf self,
97311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille gamma
97411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
97511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetGamma) (
97611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageControlsItf self,
97711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pGamma
97811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
97911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetSupportedGammaSettings) (
98011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageControlsItf self,
98111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pMinValue,
98211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pMaxValue,
98311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumSettings,
98411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille ** ppSettings
98511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
98611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
98711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
98811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* IMAGE EFFECT */
98911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
99011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGEEFFECT_MONOCHROME       ((XAuint32) 0x00000001)
99111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGEEFFECT_NEGATIVE         ((XAuint32) 0x00000002)
99211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGEEFFECT_SEPIA            ((XAuint32) 0x00000003)
99311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGEEFFECT_EMBOSS           ((XAuint32) 0x00000004)
99411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGEEFFECT_PAINTBRUSH       ((XAuint32) 0x00000005)
99511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGEEFFECT_SOLARIZE         ((XAuint32) 0x00000006)
99611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGEEFFECT_CARTOON          ((XAuint32) 0x00000007)
99711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
99811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_IMAGEEFFECTS;
99911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
100011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAImageEffectsItf_;
100111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAImageEffectsItf_ * const * XAImageEffectsItf;
100211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
100311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAImageEffectsItf_ {
100411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QuerySupportedImageEffects) (
100511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageEffectsItf self,
100611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 index,
100711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pImageEffectId
100811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
100911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*EnableImageEffect) (
101011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageEffectsItf self,
101111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 imageEffectID
101211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
101311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*DisableImageEffect) (
101411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageEffectsItf self,
101511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 imageEffectID
101611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
101711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*IsImageEffectEnabled) (
101811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageEffectsItf self,
101911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 imageEffectID,
102011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pEnabled
102111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
102211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
102311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
102411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* VIDEO POST PROCESSING */
102511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
102611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOMIRROR_NONE             ((XAuint32) 0x00000001)
102711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOMIRROR_VERTICAL         ((XAuint32) 0x00000002)
102811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOMIRROR_HORIZONTAL       ((XAuint32) 0x00000003)
102911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOMIRROR_BOTH             ((XAuint32) 0x00000004)
103011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
103111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOSCALE_STRETCH           ((XAuint32) 0x00000001)
103211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOSCALE_FIT               ((XAuint32) 0x00000002)
103311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOSCALE_CROP              ((XAuint32) 0x00000003)
103411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
103511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RENDERINGHINT_NONE           ((XAuint32) 0x00000000)
103611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RENDERINGHINT_ANTIALIASING   ((XAuint32) 0x00000001)
103711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
103811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XARectangle_ {
103911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 left;
104011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 top;
104111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 width;
104211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 height;
104311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XARectangle;
104411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
104511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_VIDEOPOSTPROCESSING;
104611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
104711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAVideoPostProcessingItf_;
104811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAVideoPostProcessingItf_ * const * XAVideoPostProcessingItf;
104911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
105011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAVideoPostProcessingItf_ {
105111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetRotation) (
105211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoPostProcessingItf self,
105311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillidegree rotation
105411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
105511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*IsArbitraryRotationSupported) (
105611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoPostProcessingItf self,
105711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean *pSupported
105811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
105911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetScaleOptions) (
106011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoPostProcessingItf self,
106111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 scaleOptions,
106211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 backgroundColor,
106311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 renderingHints
106411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
106511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetSourceRectangle) (
106611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoPostProcessingItf self,
106711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XARectangle *pSrcRect
106811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
106911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetDestinationRectangle) (
107011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoPostProcessingItf self,
107111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XARectangle *pDestRect
107211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
107311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetMirror) (
107411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoPostProcessingItf self,
107511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 mirror
107611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
107711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*Commit) (
107811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoPostProcessingItf self
107911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
108011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
108111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
108211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
108311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
108411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
108511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /* CAPTURING INTERFACES, STRUCTS AND DEFINES                     */
108611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
108711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
108811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* RECORD */
108911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
109011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RECORDEVENT_HEADATLIMIT          ((XAuint32) 0x00000001)
109111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RECORDEVENT_HEADATMARKER         ((XAuint32) 0x00000002)
109211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RECORDEVENT_HEADATNEWPOS         ((XAuint32) 0x00000004)
109311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RECORDEVENT_HEADMOVING           ((XAuint32) 0x00000008)
109411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RECORDEVENT_HEADSTALLED          ((XAuint32) 0x00000010)
109511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RECORDEVENT_BUFFER_FULL          ((XAuint32) 0x00000020)
109611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
109711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RECORDSTATE_STOPPED          ((XAuint32) 0x00000001)
109811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RECORDSTATE_PAUSED           ((XAuint32) 0x00000002)
109911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RECORDSTATE_RECORDING        ((XAuint32) 0x00000003)
110011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
110111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_RECORD;
110211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
110311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XARecordItf_;
110411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XARecordItf_ * const * XARecordItf;
110511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
110611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaRecordCallback) (
110711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XARecordItf caller,
110811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
110911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 event
111011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
111111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
111211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XARecordItf_ {
111311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetRecordState) (
111411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARecordItf self,
111511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 state
111611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
111711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetRecordState) (
111811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARecordItf self,
111911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pState
112011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
112111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetDurationLimit) (
112211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARecordItf self,
112311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond msec
112411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
112511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetPosition) (
112611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARecordItf self,
112711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond * pMsec
112811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
112911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterCallback) (
113011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARecordItf self,
113111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaRecordCallback callback,
113211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
113311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
113411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetCallbackEventsMask) (
113511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARecordItf self,
113611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 eventFlags
113711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
113811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetCallbackEventsMask) (
113911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARecordItf self,
114011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pEventFlags
114111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
114211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetMarkerPosition) (
114311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARecordItf self,
114411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond mSec
114511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
114611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*ClearMarkerPosition) (
114711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARecordItf self
114811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
114911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetMarkerPosition) (
115011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARecordItf self,
115111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond * pMsec
115211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
115311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetPositionUpdatePeriod) (
115411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARecordItf self,
115511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond mSec
115611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
115711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetPositionUpdatePeriod) (
115811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARecordItf self,
115911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillisecond * pMsec
116011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
116111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
116211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
116311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* SNAPSHOT */
116411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
116511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_SNAPSHOT;
116611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
116711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XASnapshotItf_;
116811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XASnapshotItf_ * const * XASnapshotItf;
116911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
117011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaSnapshotInitiatedCallback) (
117111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XASnapshotItf caller,
117211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * context
117311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
117411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
117511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaSnapshotTakenCallback) (
117611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XASnapshotItf caller,
117711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * context,
117811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 numberOfPicsTaken,
117911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    const XADataSink * image
118011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
118111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
118211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XASnapshotItf_ {
118311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*InitiateSnapshot) (
118411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XASnapshotItf self,
118511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 numberOfPictures,
118611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 fps,
118711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean freezeViewFinder,
118811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSink sink,
118911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaSnapshotInitiatedCallback initiatedCallback,
119011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaSnapshotTakenCallback takenCallback,
119111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
119211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
119311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*TakeSnapshot) (
119411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XASnapshotItf self
119511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
119611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*CancelSnapshot) (
119711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XASnapshotItf self
119811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
119911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*ReleaseBuffers) (
120011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XASnapshotItf self,
120111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSink * image
120211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
120311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetMaxPicsPerBurst) (
120411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XASnapshotItf self,
120511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * maxNumberOfPictures
120611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
120711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetBurstFPSRange) (
120811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XASnapshotItf self,
120911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * minFPS,
121011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * maxFPS
121111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
121211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetShutterFeedback) (
121311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XASnapshotItf self,
121411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean enabled
121511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
121611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetShutterFeedback) (
121711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XASnapshotItf self,
121811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * enabled
121911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
122011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
122111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
122211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
122311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
122411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
122511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /* METADATA RELATED INTERFACES, STRUCTS AND DEFINES              */
122611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
122711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
122811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* METADATA (EXTRACTION, INSERTION, TRAVERSAL) */
122911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
123011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_NODE_PARENT                  ((XAuint32) 0xFFFFFFFF)
123111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
123211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_ROOT_NODE_ID                 ((XAint32) 0x7FFFFFFF)
123311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
123411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_NODETYPE_UNSPECIFIED         ((XAuint32) 0x00000001)
123511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_NODETYPE_AUDIO               ((XAuint32) 0x00000002)
123611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_NODETYPE_VIDEO               ((XAuint32) 0x00000003)
123711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_NODETYPE_IMAGE               ((XAuint32) 0x00000004)
123811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
123911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_UNKNOWN            ((XAuint32) 0x00000000)
124011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_BINARY             ((XAuint32) 0x00000001)
124111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ASCII              ((XAuint32) 0x00000002)
124211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_BIG5               ((XAuint32) 0x00000003)
124311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_CODEPAGE1252       ((XAuint32) 0x00000004)
124411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_GB2312             ((XAuint32) 0x00000005)
124511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_HZGB2312           ((XAuint32) 0x00000006)
124611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_GB12345            ((XAuint32) 0x00000007)
124711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_GB18030            ((XAuint32) 0x00000008)
124811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_GBK                ((XAuint32) 0x00000009)
124911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_IMAPUTF7           ((XAuint32) 0x0000000A)
125011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO2022JP          ((XAuint32) 0x0000000B)
125111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO2022JP1         ((XAuint32) 0x0000000B)
125211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO88591           ((XAuint32) 0x0000000C)
125311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO885910          ((XAuint32) 0x0000000D)
125411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO885913          ((XAuint32) 0x0000000E)
125511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO885914          ((XAuint32) 0x0000000F)
125611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO885915          ((XAuint32) 0x00000010)
125711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO88592           ((XAuint32) 0x00000011)
125811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO88593           ((XAuint32) 0x00000012)
125911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO88594           ((XAuint32) 0x00000013)
126011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO88595           ((XAuint32) 0x00000014)
126111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO88596           ((XAuint32) 0x00000015)
126211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO88597           ((XAuint32) 0x00000016)
126311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO88598           ((XAuint32) 0x00000017)
126411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISO88599           ((XAuint32) 0x00000018)
126511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_ISOEUCJP           ((XAuint32) 0x00000019)
126611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_SHIFTJIS           ((XAuint32) 0x0000001A)
126711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_SMS7BIT            ((XAuint32) 0x0000001B)
126811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_UTF7               ((XAuint32) 0x0000001C)
126911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_UTF8               ((XAuint32) 0x0000001D)
127011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_JAVACONFORMANTUTF8 ((XAuint32) 0x0000001E)
127111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_UTF16BE            ((XAuint32) 0x0000001F)
127211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CHARACTERENCODING_UTF16LE            ((XAuint32) 0x00000020)
127311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
127411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_METADATA_FILTER_KEY          ((XAuint8) 0x01)
127511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_METADATA_FILTER_LANG         ((XAuint8) 0x02)
127611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_METADATA_FILTER_ENCODING     ((XAuint8) 0x04)
127711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
127811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_METADATATRAVERSALMODE_ALL    ((XAuint32) 0x00000001)
127911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_METADATATRAVERSALMODE_NODE   ((XAuint32) 0x00000002)
128011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
128111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifndef _KHRONOS_KEYS_
128211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define _KHRONOS_KEYS_
128311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_TITLE                   "KhronosTitle"
128411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_ALBUM                   "KhronosAlbum"
128511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_TRACK_NUMBER            "KhronosTrackNumber"
128611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_ARTIST                  "KhronosArtist"
128711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_GENRE                   "KhronosGenre"
128811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_YEAR                    "KhronosYear"
128911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_COMMENT                 "KhronosComment"
129011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_ARTIST_URL              "KhronosArtistURL"
129111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_CONTENT_URL             "KhronosContentURL"
129211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_RATING                  "KhronosRating"
129311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_ALBUM_ART               "KhronosAlbumArt"
129411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define KHRONOS_COPYRIGHT               "KhronosCopyright"
129511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _KHRONOS_KEYS_ */
129611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
129711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
129811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAMetadataInfo_ {
129911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 size;
130011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 encoding;
130111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    const XAchar langCountry[16];
130211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint8 data[1];
130311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAMetadataInfo;
130411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
130511cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_METADATAEXTRACTION;
130611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
130711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAMetadataExtractionItf_;
130811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAMetadataExtractionItf_
130911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XAMetadataExtractionItf;
131011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
131111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAMetadataExtractionItf_ {
131211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetItemCount) (
131311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataExtractionItf self,
131411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pItemCount
131511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
131611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetKeySize) (
131711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataExtractionItf self,
131811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 index,
131911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pKeySize
132011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
132111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetKey) (
132211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataExtractionItf self,
132311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 index,
132411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 keySize,
132511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataInfo * pKey
132611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
132711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetValueSize) (
132811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataExtractionItf self,
132911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 index,
133011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pValueSize
133111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
133211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetValue) (
133311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataExtractionItf self,
133411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 index,
133511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 valueSize,
133611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataInfo * pValue
133711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
133811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*AddKeyFilter) (
133911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataExtractionItf self,
134011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 keySize,
134111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const void * pKey,
134211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 keyEncoding,
134311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAchar * pValueLangCountry,
134411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 valueEncoding,
134511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint8 filterMask
134611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
134711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*ClearKeyFilter) (
134811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataExtractionItf self
134911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
135011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
135111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
135211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
135311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_METADATAINSERTION;
135411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
135511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAMetadataInsertionItf_;
135611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAMetadataInsertionItf_
135711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XAMetadataInsertionItf;
135811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
135911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaMetadataInsertionCallback) (
136011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAMetadataInsertionItf caller,
136111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
136211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAMetadataInfo * pKey,
136311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAMetadataInfo * pValue,
136411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint32 nodeID,
136511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean result
136611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
136711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
136811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAMetadataInsertionItf_ {
136911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*CreateChildNode) (
137011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataInsertionItf self,
137111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 parentNodeID,
137211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 type,
137311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAchar * mimeType,
137411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 * pChildNodeID
137511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
137611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetSupportedKeysCount) (
137711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataInsertionItf self,
137811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 nodeID,
137911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pFreeKeys,
138011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pKeyCount,
138111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pEncodingCount
138211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
138311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetKeySize) (
138411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataInsertionItf self,
138511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 nodeID,
138611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 keyIndex,
138711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pKeySize
138811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
138911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetKey) (
139011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataInsertionItf self,
139111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 nodeID,
139211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 keyIndex,
139311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 keySize,
139411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataInfo * pKey
139511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
139611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetFreeKeysEncoding) (
139711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataInsertionItf self,
139811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 nodeID,
139911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 encodingIndex,
140011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pEncoding
140111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
140211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*InsertMetadataItem) (
140311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataInsertionItf self,
140411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 nodeID,
140511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataInfo * pKey,
140611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataInfo * pValue,
140711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean overwrite
140811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
140911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterCallback) (
141011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataInsertionItf self,
141111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaMetadataInsertionCallback callback,
141211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
141311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
141411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
141511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
141611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
141711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_METADATATRAVERSAL;
141811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
141911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAMetadataTraversalItf_;
142011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAMetadataTraversalItf_
142111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    *  const *  XAMetadataTraversalItf;
142211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
142311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAMetadataTraversalItf_ {
142411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetMode) (
142511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataTraversalItf self,
142611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 mode
142711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
142811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetChildCount) (
142911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataTraversalItf self,
143011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pCount
143111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
143211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetChildMIMETypeSize) (
143311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataTraversalItf self,
143411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 index,
143511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pSize
143611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
143711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetChildInfo) (
143811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataTraversalItf self,
143911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 index,
144011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 * pNodeID,
144111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pType,
144211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 size,
144311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAchar * pMimeType
144411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
144511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetActiveNode) (
144611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMetadataTraversalItf self,
144711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 index
144811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
144911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
145011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
145111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* DYNAMIC SOURCE */
145211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
145311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_DYNAMICSOURCE;
145411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
145511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XADynamicSourceItf_;
145611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XADynamicSourceItf_ * const * XADynamicSourceItf;
145711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
145811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XADynamicSourceItf_ {
145911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetSource) (
146011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADynamicSourceItf self,
146111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADataSource * pDataSource
146211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
146311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
146411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
146511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
146611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
146711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
146811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*  I/O DEVICES RELATED INTERFACES, STRUCTS AND DEFINES          */
146911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
147011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
147111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* CAMERA AND CAMERA CAPABILITIES */
147211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
147311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_APERTUREMODE_MANUAL               ((XAuint32) 0x00000001)
147411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_APERTUREMODE_AUTO                 ((XAuint32) 0x00000002)
147511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
147611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_AUTOEXPOSURESTATUS_SUCCESS        ((XAuint32) 0x00000001)
147711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_AUTOEXPOSURESTATUS_UNDEREXPOSURE  ((XAuint32) 0x00000002)
147811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_AUTOEXPOSURESTATUS_OVEREXPOSURE   ((XAuint32) 0x00000003)
147911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
148011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACBEVENT_ROTATION                   ((XAuint32) 0x00000001)
148111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACBEVENT_FLASHREADY                 ((XAuint32) 0x00000002)
148211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACBEVENT_FOCUSSTATUS                ((XAuint32) 0x00000003)
148311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACBEVENT_EXPOSURESTATUS             ((XAuint32) 0x00000004)
148411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACBEVENT_WHITEBALANCELOCKED         ((XAuint32) 0x00000005)
148511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACBEVENT_ZOOMSTATUS                 ((XAuint32) 0x00000006)
148611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
148711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_FLASH                          ((XAuint32) 0x00000001)
148811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_AUTOFOCUS                      ((XAuint32) 0x00000002)
148911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_CONTINUOUSAUTOFOCUS            ((XAuint32) 0x00000004)
149011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_MANUALFOCUS                    ((XAuint32) 0x00000008)
149111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_AUTOEXPOSURE                   ((XAuint32) 0x00000010)
149211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_MANUALEXPOSURE                 ((XAuint32) 0x00000020)
149311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_AUTOISOSENSITIVITY             ((XAuint32) 0x00000040)
149411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_MANUALISOSENSITIVITY           ((XAuint32) 0x00000080)
149511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_AUTOAPERTURE                   ((XAuint32) 0x00000100)
149611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_MANUALAPERTURE                 ((XAuint32) 0x00000200)
149711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_AUTOSHUTTERSPEED               ((XAuint32) 0x00000400)
149811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_MANUALSHUTTERSPEED             ((XAuint32) 0x00000800)
149911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_AUTOWHITEBALANCE               ((XAuint32) 0x00001000)
150011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_MANUALWHITEBALANCE             ((XAuint32) 0x00002000)
150111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_OPTICALZOOM                    ((XAuint32) 0x00004000)
150211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_DIGITALZOOM                    ((XAuint32) 0x00008000)
150311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_METERING                       ((XAuint32) 0x00010000)
150411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_BRIGHTNESS                     ((XAuint32) 0x00020000)
150511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_CONTRAST                       ((XAuint32) 0x00040000)
150611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERACAP_GAMMA                          ((XAuint32) 0x00080000)
150711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
150811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
150911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_EXPOSUREMODE_MANUAL               ((XAuint32) 0x00000001)
151011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_EXPOSUREMODE_AUTO                 ((XAuint32) 0x00000002)
151111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_EXPOSUREMODE_NIGHT                ((XAuint32) 0x00000004)
151211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_EXPOSUREMODE_BACKLIGHT            ((XAuint32) 0x00000008)
151311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_EXPOSUREMODE_SPOTLIGHT            ((XAuint32) 0x00000010)
151411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_EXPOSUREMODE_SPORTS               ((XAuint32) 0x00000020)
151511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_EXPOSUREMODE_SNOW                 ((XAuint32) 0x00000040)
151611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_EXPOSUREMODE_BEACH                ((XAuint32) 0x00000080)
151711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_EXPOSUREMODE_LARGEAPERTURE        ((XAuint32) 0x00000100)
151811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_EXPOSUREMODE_SMALLAPERTURE        ((XAuint32) 0x00000200)
151911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_EXPOSUREMODE_PORTRAIT             ((XAuint32) 0x0000400)
152011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_EXPOSUREMODE_NIGHTPORTRAIT        ((XAuint32) 0x00000800)
152111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
152211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FLASHMODE_OFF                     ((XAuint32) 0x00000001)
152311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FLASHMODE_ON                      ((XAuint32) 0x00000002)
152411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FLASHMODE_AUTO                    ((XAuint32) 0x00000004)
152511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FLASHMODE_REDEYEREDUCTION         ((XAuint32) 0x00000008)
152611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FLASHMODE_REDEYEREDUCTION_AUTO    ((XAuint32) 0x00000010)
152711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FLASHMODE_FILLIN                  ((XAuint32) 0x00000020)
152811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FLASHMODE_TORCH                   ((XAuint32) 0x00000040)
152911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
153011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FOCUSMODE_MANUAL                  ((XAuint32) 0x00000001)
153111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FOCUSMODE_AUTO                    ((XAuint32) 0x00000002)
153211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FOCUSMODE_CENTROID                ((XAuint32) 0x00000004)
153311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FOCUSMODE_CONTINUOUS_AUTO         ((XAuint32) 0x00000008)
153411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FOCUSMODE_CONTINUOUS_CENTROID     ((XAuint32) 0x00000010)
153511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
153611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FOCUSMODESTATUS_OFF               ((XAuint32) 0x00000001)
153711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FOCUSMODESTATUS_REQUEST           ((XAuint32) 0x00000002)
153811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FOCUSMODESTATUS_REACHED           ((XAuint32) 0x00000003)
153911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FOCUSMODESTATUS_UNABLETOREACH     ((XAuint32) 0x00000004)
154011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_FOCUSMODESTATUS_LOST              ((XAuint32) 0x00000005)
154111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
154211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_ISOSENSITIVITYMODE_MANUAL         ((XAuint32) 0x00000001)
154311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_ISOSENSITIVITYMODE_AUTO           ((XAuint32) 0x00000002)
154411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
154511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_LOCK_AUTOFOCUS                    ((XAuint32) 0x00000001)
154611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_LOCK_AUTOEXPOSURE                 ((XAuint32) 0x00000002)
154711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_LOCK_AUTOWHITEBALANCE             ((XAuint32) 0x00000004)
154811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
154911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_METERINGMODE_AVERAGE              ((XAuint32) 0x00000001)
155011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_METERINGMODE_SPOT                 ((XAuint32) 0x00000002)
155111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_METERINGMODE_MATRIX               ((XAuint32) 0x00000004)
155211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
155311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_SHUTTERSPEEDMODE_MANUAL           ((XAuint32) 0x00000001)
155411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_SHUTTERSPEEDMODE_AUTO             ((XAuint32) 0x00000002)
155511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
155611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_WHITEBALANCEMODE_MANUAL           ((XAuint32) 0x00000001)
155711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_WHITEBALANCEMODE_AUTO             ((XAuint32) 0x00000002)
155811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_WHITEBALANCEMODE_SUNLIGHT         ((XAuint32) 0x00000004)
155911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_WHITEBALANCEMODE_CLOUDY           ((XAuint32) 0x00000008)
156011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_WHITEBALANCEMODE_SHADE            ((XAuint32) 0x00000010)
156111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_WHITEBALANCEMODE_TUNGSTEN         ((XAuint32) 0x00000020)
156211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_WHITEBALANCEMODE_FLUORESCENT      ((XAuint32) 0x00000040)
156311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_WHITEBALANCEMODE_INCANDESCENT     ((XAuint32) 0x00000080)
156411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_WHITEBALANCEMODE_FLASH            ((XAuint32) 0x00000100)
156511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_WHITEBALANCEMODE_SUNSET           ((XAuint32) 0x00000200)
156611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
156711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_ZOOM_SLOW                         ((XAuint32) 50)
156811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_ZOOM_NORMAL                       ((XAuint32) 100)
156911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_ZOOM_FAST                         ((XAuint32) 200)
157011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_CAMERA_ZOOM_FASTEST                      ((XAuint32) 0xFFFFFFFF)
157111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
157211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FOCUSPOINTS_ONE                          ((XAuint32) 0x00000001)
157311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FOCUSPOINTS_THREE_3X1                    ((XAuint32) 0x00000002)
157411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FOCUSPOINTS_FIVE_CROSS                   ((XAuint32) 0x00000003)
157511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FOCUSPOINTS_SEVEN_CROSS                  ((XAuint32) 0x00000004)
157611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FOCUSPOINTS_NINE_SQUARE                  ((XAuint32) 0x00000005)
157711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FOCUSPOINTS_ELEVEN_CROSS                 ((XAuint32) 0x00000006)
157811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FOCUSPOINTS_TWELVE_3X4                   ((XAuint32) 0x00000007)
157911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FOCUSPOINTS_TWELVE_4X3                   ((XAuint32) 0x00000008)
158011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FOCUSPOINTS_SIXTEEN_SQUARE               ((XAuint32) 0x00000009)
158111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FOCUSPOINTS_CUSTOM                       ((XAuint32) 0x0000000A)
158211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
158311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAFocusPointPosition_ {
158411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 left;
158511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 top;
158611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 width;
158711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 height;
158811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAFocusPointPosition;
158911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
159011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_ORIENTATION_UNKNOWN                      ((XAuint32) 0x00000001)
159111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_ORIENTATION_OUTWARDS                     ((XAuint32) 0x00000002)
159211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_ORIENTATION_INWARDS                      ((XAuint32) 0x00000003)
159311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
159411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XACameraDescriptor_ {
159511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAchar * name;
159611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 maxWidth;
159711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 maxHeight;
159811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 orientation;
159911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 featuresSupported;
160011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 exposureModesSupported;
160111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 flashModesSupported;
160211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 focusModesSupported;
160311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 meteringModesSupported;
160411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 whiteBalanceModesSupported;
160511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XACameraDescriptor;
160611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
160711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_CAMERACAPABILITIES;
160811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
160911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XACameraCapabilitiesItf_;
161011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XACameraCapabilitiesItf_
161111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XACameraCapabilitiesItf;
161211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
161311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XACameraCapabilitiesItf_ {
161411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetCameraCapabilities) (
161511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraCapabilitiesItf self,
161611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 *pIndex,
161711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pCameraDeviceID,
161811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraDescriptor * pDescriptor
161911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
162011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryFocusRegionPatterns) (
162111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraCapabilitiesItf self,
162211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 cameraDeviceID,
162311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pPatternID,
162411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pFocusPattern,
162511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pCustomPoints1,
162611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pCustomPoints2
162711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
162811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetSupportedAutoLocks) (
162911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraCapabilitiesItf self,
163011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 cameraDeviceID,
163111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumCombinations,
163211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 ** ppLocks
163311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
163411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetSupportedFocusManualSettings) (
163511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraCapabilitiesItf self,
163611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 cameraDeviceID,
163711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean macroEnabled,
163811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillimeter * pMinValue,
163911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillimeter * pMaxValue,
164011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumSettings,
164111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillimeter ** ppSettings
164211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
164311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetSupportedISOSensitivitySettings) (
164411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraCapabilitiesItf self,
164511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 cameraDeviceID,
164611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMinValue,
164711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMaxValue,
164811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumSettings,
164911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 ** ppSettings
165011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
165111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetSupportedApertureManualSettings) (
165211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraCapabilitiesItf self,
165311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 cameraDeviceID,
165411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMinValue,
165511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMaxValue,
165611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumSettings,
165711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 ** ppSettings
165811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
165911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetSupportedShutterSpeedManualSettings) (
166011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraCapabilitiesItf self,
166111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 cameraDeviceID,
166211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmicrosecond * pMinValue,
166311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmicrosecond * pMaxValue,
166411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumSettings,
166511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmicrosecond ** ppSettings
166611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
166711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetSupportedWhiteBalanceManualSettings) (
166811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraCapabilitiesItf self,
166911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 cameraDeviceID,
167011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMinValue,
167111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMaxValue,
167211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumSettings,
167311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 ** ppSettings
167411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
167511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetSupportedZoomSettings) (
167611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraCapabilitiesItf self,
167711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 cameraDeviceID,
167811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean digitalEnabled,
167911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean macroEnabled,
168011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pMaxValue,
168111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumSettings,
168211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille ** ppSettings,
168311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pSpeedSupported
168411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
168511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
168611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
168711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
168811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_CAMERA;
168911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
169011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XACameraItf_;
169111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XACameraItf_ * const * XACameraItf;
169211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
169311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaCameraCallback) (
169411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XACameraItf caller,
169511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
169611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 eventId,
169711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 eventData
169811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
169911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
170011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XACameraItf_ {
170111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterCallback) (
170211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
170311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaCameraCallback callback,
170411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
170511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
170611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetFlashMode) (
170711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
170811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 flashMode
170911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
171011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetFlashMode) (
171111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
171211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pFlashMode
171311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
171411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*IsFlashReady) (
171511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
171611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pReady
171711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
171811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetFocusMode) (
171911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
172011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 focusMode,
172111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillimeter manualSetting,
172211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean macroEnabled
172311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
172411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetFocusMode) (
172511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
172611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pFocusMode,
172711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillimeter * pManualSetting,
172811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pMacroEnabled
172911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
173011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetFocusRegionPattern) (
173111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
173211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 focusPattern,
173311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 activePoints1,
173411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 activePoints2
173511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
173611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetFocusRegionPattern) (
173711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
173811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pFocusPattern,
173911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pActivePoints1,
174011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pActivePoints2
174111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
174211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetFocusRegionPositions) (
174311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
174411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumPositionEntries,
174511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAFocusPointPosition * pFocusPosition
174611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
174711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetFocusModeStatus) (
174811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
174911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pFocusStatus,
175011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pRegionStatus1,
175111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pRegionStatus2
175211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
175311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetMeteringMode) (
175411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
175511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 meteringMode
175611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
175711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetMeteringMode) (
175811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
175911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMeteringMode
176011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
176111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetExposureMode) (
176211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
176311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 exposure,
176411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 compensation
176511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
176611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetExposureMode) (
176711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
176811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pExposure,
176911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pCompensation
177011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
177111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetISOSensitivity) (
177211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
177311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 isoSensitivity,
177411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 manualSetting
177511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
177611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetISOSensitivity) (
177711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
177811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pIsoSensitivity,
177911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pManualSetting
178011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
178111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetAperture) (
178211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
178311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 aperture,
178411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 manualSetting
178511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
178611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetAperture) (
178711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
178811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pAperture,
178911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pManualSetting
179011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
179111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetShutterSpeed) (
179211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
179311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 shutterSpeed,
179411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmicrosecond manualSetting
179511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
179611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetShutterSpeed) (
179711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
179811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pShutterSpeed,
179911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmicrosecond * pManualSetting
180011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
180111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetWhiteBalance) (
180211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
180311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 whiteBalance,
180411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 manualSetting
180511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
180611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetWhiteBalance) (
180711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
180811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pWhiteBalance,
180911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pManualSetting
181011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
181111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetAutoLocks) (
181211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
181311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 locks
181411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
181511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetAutoLocks) (
181611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
181711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * locks
181811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
181911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetZoom) (
182011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
182111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille zoom,
182211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean digitalEnabled,
182311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 speed,
182411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean async
182511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
182611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetZoom) (
182711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XACameraItf self,
182811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pZoom,
182911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pDigital
183011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
183111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
183211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
183311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* AUDIO I/O DEVICE CAPABILITIES */
183411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
183511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEVCONNECTION_INTEGRATED                 ((XAint16) 0x0001)
183611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEVCONNECTION_ATTACHED_WIRED             ((XAint16) 0x0100)
183711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEVCONNECTION_ATTACHED_WIRELESS          ((XAint16) 0x0200)
183811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEVCONNECTION_NETWORK                    ((XAint16) 0x0400)
183911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
184011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEVLOCATION_HANDSET                      ((XAint16) 0x0001)
184111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEVLOCATION_HEADSET                      ((XAint16) 0x0002)
184211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEVLOCATION_CARKIT                       ((XAint16) 0x0003)
184311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEVLOCATION_DOCK                         ((XAint16) 0x0004)
184411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEVLOCATION_REMOTE                       ((XAint16) 0x0005)
184511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
184611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEVSCOPE_UNKNOWN                         ((XAint16) 0x0001)
184711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEVSCOPE_ENVIRONMENT                     ((XAint16) 0x0002)
184811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DEVSCOPE_USER                            ((XAint16) 0x0003)
184911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
185011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAAudioInputDescriptor_ {
185111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAchar * deviceName;
185211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint16 deviceConnection;
185311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint16 deviceScope;
185411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint16 deviceLocation;
185511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean isForTelephony;
185611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz minSampleRate;
185711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz maxSampleRate;
185811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean isFreqRangeContinuous;
185911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz * samplingRatesSupported;
186011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint16 numOfSamplingRatesSupported;
186111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint16 maxChannels;
186211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAAudioInputDescriptor;
186311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
186411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAAudioOutputDescriptor_ {
186511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAchar *pDeviceName;
186611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint16 deviceConnection;
186711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint16 deviceScope;
186811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint16 deviceLocation;
186911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean isForTelephony;
187011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz minSampleRate;
187111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz maxSampleRate;
187211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean isFreqRangeContinuous;
187311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz *samplingRatesSupported;
187411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint16 numOfSamplingRatesSupported;
187511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint16 maxChannels;
187611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAAudioOutputDescriptor;
187711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
187811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_AUDIOIODEVICECAPABILITIES;
187911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
188011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAAudioIODeviceCapabilitiesItf_;
188111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAAudioIODeviceCapabilitiesItf_
188211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XAAudioIODeviceCapabilitiesItf;
188311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
188411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaAvailableAudioInputsChangedCallback) (
188511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAAudioIODeviceCapabilitiesItf caller,
188611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
188711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 deviceID,
188811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint32 numInputs,
188911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean isNew
189011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
189111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
189211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaAvailableAudioOutputsChangedCallback) (
189311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAAudioIODeviceCapabilitiesItf caller,
189411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
189511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 deviceID,
189611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint32 numOutputs,
189711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean isNew
189811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
189911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
190011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaDefaultDeviceIDMapChangedCallback) (
190111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAAudioIODeviceCapabilitiesItf caller,
190211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
190311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert	XAboolean isOutput,
190411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint32 numDevices
190511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
190611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
190711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAAudioIODeviceCapabilitiesItf_ {
190811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetAvailableAudioInputs) (
190911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioIODeviceCapabilitiesItf self,
191011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 * pNumInputs,
191111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pInputDeviceIDs
191211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
191311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryAudioInputCapabilities) (
191411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioIODeviceCapabilitiesItf self,
191511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 deviceID,
191611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioInputDescriptor * pDescriptor
191711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
191811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterAvailableAudioInputsChangedCallback) (
191911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioIODeviceCapabilitiesItf self,
192011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaAvailableAudioInputsChangedCallback callback,
192111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
192211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
192311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetAvailableAudioOutputs) (
192411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioIODeviceCapabilitiesItf self,
192511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 * pNumOutputs,
192611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pOutputDeviceIDs
192711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
192811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryAudioOutputCapabilities) (
192911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioIODeviceCapabilitiesItf self,
193011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 deviceID,
193111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioOutputDescriptor * pDescriptor
193211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
193311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterAvailableAudioOutputsChangedCallback) (
193411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioIODeviceCapabilitiesItf self,
193511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaAvailableAudioOutputsChangedCallback callback,
193611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
193711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
193811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterDefaultDeviceIDMapChangedCallback) (
193911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioIODeviceCapabilitiesItf self,
194011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaDefaultDeviceIDMapChangedCallback callback,
194111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
194211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
194311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetAssociatedAudioInputs) (
194411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioIODeviceCapabilitiesItf self,
194511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 deviceID,
194611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 * pNumAudioInputs,
194711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pAudioInputDeviceIDs
194811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
194911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetAssociatedAudioOutputs) (
195011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioIODeviceCapabilitiesItf self,
195111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 deviceID,
195211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 * pNumAudioOutputs,
195311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pAudioOutputDeviceIDs
195411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
195511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetDefaultAudioDevices) (
195611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioIODeviceCapabilitiesItf self,
195711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 defaultDeviceID,
195811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 *pNumAudioDevices,
195911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 *pAudioDeviceIDs
196011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
196111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QuerySampleFormatsSupported) (
196211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioIODeviceCapabilitiesItf self,
196311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 deviceID,
196411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmilliHertz samplingRate,
196511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 *pSampleFormats,
196611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 *pNumOfSampleFormats
196711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
196811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
196911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
197011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* DEVICE VOLUME */
197111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
197211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_DEVICEVOLUME;
197311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
197411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XADeviceVolumeItf_;
197511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XADeviceVolumeItf_ * const * XADeviceVolumeItf;
197611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
197711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XADeviceVolumeItf_ {
197811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetVolumeScale) (
197911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADeviceVolumeItf self,
198011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 deviceID,
198111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 * pMinValue,
198211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 * pMaxValue,
198311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pIsMillibelScale
198411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
198511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetVolume) (
198611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADeviceVolumeItf self,
198711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 deviceID,
198811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 volume
198911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
199011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetVolume) (
199111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XADeviceVolumeItf self,
199211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 deviceID,
199311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 * pVolume
199411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
199511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
199611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
199711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* EQUALIZER */
199811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
199911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_EQUALIZER_UNDEFINED    ((XAuint16) 0xFFFF)
200011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
200111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_EQUALIZER;
200211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
200311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAEqualizerItf_;
200411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAEqualizerItf_ * const * XAEqualizerItf;
200511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
200611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAEqualizerItf_ {
200711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetEnabled) (
200811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
200911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean enabled
201011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
201111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*IsEnabled) (
201211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
201311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pEnabled
201411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
201511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetNumberOfBands) (
201611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
201711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 * pNumBands
201811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
201911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetBandLevelRange) (
202011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
202111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillibel * pMin,
202211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillibel * pMax
202311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
202411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetBandLevel) (
202511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
202611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 band,
202711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillibel level
202811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
202911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetBandLevel) (
203011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
203111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 band,
203211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmillibel * pLevel
203311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
203411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetCenterFreq) (
203511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
203611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 band,
203711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmilliHertz * pCenter
203811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
203911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetBandFreqRange) (
204011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
204111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 band,
204211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmilliHertz * pMin,
204311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmilliHertz * pMax
204411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
204511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetBand) (
204611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
204711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmilliHertz frequency,
204811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 * pBand
204911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
205011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetCurrentPreset) (
205111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
205211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 * pPreset
205311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
205411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*UsePreset) (
205511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
205611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 index
205711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
205811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetNumberOfPresets) (
205911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
206011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 * pNumPresets
206111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
206211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetPresetName) (
206311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAEqualizerItf self,
206411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 index,
206511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAchar ** ppName
206611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
206711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
206811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
206911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* OUTPUT MIX */
207011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
207111cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_OUTPUTMIX;
207211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
207311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAOutputMixItf_;
207411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAOutputMixItf_ * const * XAOutputMixItf;
207511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
207611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaMixDeviceChangeCallback) (
207711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAOutputMixItf caller,
207811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext
207911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
208011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
208111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAOutputMixItf_ {
208211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetDestinationOutputDeviceIDs) (
208311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAOutputMixItf self,
208411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 * pNumDevices,
208511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pDeviceIDs
208611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
208711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterDeviceChangeCallback) (
208811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAOutputMixItf self,
208911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaMixDeviceChangeCallback callback,
209011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
209111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
209211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*ReRoute) (
209311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAOutputMixItf self,
209411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint32 numOutputDevices,
209511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pOutputDeviceIDs
209611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
209711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
209811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
209911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* RADIO */
210011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
210111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FREQRANGE_FMEUROAMERICA                  ((XAuint8) 0x01)
210211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FREQRANGE_FMJAPAN                        ((XAuint8) 0x02)
210311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FREQRANGE_AMLW                           ((XAuint8) 0x03)
210411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FREQRANGE_AMMW                           ((XAuint8) 0x04)
210511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_FREQRANGE_AMSW                           ((XAuint8) 0x05)
210611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
210711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RADIO_EVENT_ANTENNA_STATUS_CHANGED       ((XAuint32) 0x00000001)
210811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RADIO_EVENT_FREQUENCY_CHANGED            ((XAuint32) 0x00000002)
210911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RADIO_EVENT_FREQUENCY_RANGE_CHANGED      ((XAuint32) 0x00000003)
211011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RADIO_EVENT_PRESET_CHANGED               ((XAuint32) 0x00000004)
211111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RADIO_EVENT_SEEK_COMPLETED               ((XAuint32) 0x00000005)
211211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
211311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_STEREOMODE_MONO                          ((XAuint32) 0x00000000)
211411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_STEREOMODE_STEREO                        ((XAuint32) 0x00000001)
211511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_STEREOMODE_AUTO                          ((XAuint32) 0x00000002)
211611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
211711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_RADIO;
211811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
211911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XARadioItf_;
212011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XARadioItf_ * const * XARadioItf;
212111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
212211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaRadioCallback) (
212311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XARadioItf caller,
212411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
212511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 event,
212611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 eventIntData,
212711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean eventBooleanData
212811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
212911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
213011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XARadioItf_ {
213111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetFreqRange) (
213211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
213311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint8 range
213411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
213511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetFreqRange) (
213611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
213711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint8 * pRange
213811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
213911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*IsFreqRangeSupported) (
214011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
214111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint8 range,
214211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pSupported
214311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
214411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetFreqRangeProperties) (
214511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
214611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint8 range,
214711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMinFreq,
214811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMaxFreq,
214911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pFreqInterval
215011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
215111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetFrequency) (
215211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
215311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 freq
215411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
215511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*CancelSetFrequency) (
215611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self
215711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
215811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetFrequency) (
215911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
216011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pFreq
216111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
216211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetSquelch) (
216311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
216411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean squelch
216511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
216611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetSquelch) (
216711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
216811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pSquelch
216911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
217011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetStereoMode) (
217111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
217211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 mode
217311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
217411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetStereoMode) (
217511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
217611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMode
217711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
217811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetSignalStrength) (
217911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
218011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pStrength
218111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
218211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*Seek) (
218311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
218411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean upwards
218511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
218611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*StopSeeking) (
218711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self
218811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
218911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetNumberOfPresets) (
219011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
219111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumPresets
219211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
219311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetPreset) (
219411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
219511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 preset,
219611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 freq,
219711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint8 range,
219811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 mode,
219911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAchar * pName
220011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
220111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetPreset) (
220211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
220311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 preset,
220411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pFreq,
220511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint8 * pRange,
220611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pMode,
220711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAchar * pName,
220811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 * pNameLength
220911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
221011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterRadioCallback) (
221111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARadioItf self,
221211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaRadioCallback callback,
221311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
221411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
221511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
221611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
221711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* RDS */
221811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
221911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDS_EVENT_NEW_PI                         ((XAuint16) 0x0001)
222011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDS_EVENT_NEW_PTY                        ((XAuint16) 0x0002)
222111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDS_EVENT_NEW_PS                         ((XAuint16) 0x0004)
222211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDS_EVENT_NEW_RT                         ((XAuint16) 0x0008)
222311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDS_EVENT_NEW_RT_PLUS                    ((XAuint16) 0x0010)
222411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDS_EVENT_NEW_CT                         ((XAuint16) 0x0020)
222511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDS_EVENT_NEW_TA                         ((XAuint16) 0x0040)
222611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDS_EVENT_NEW_TP                         ((XAuint16) 0x0080)
222711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDS_EVENT_NEW_ALARM                      ((XAuint16) 0x0100)
222811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
222911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_NONE \
223011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000000)
223111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_NEWS \
223211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000001)
223311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_CURRENTAFFAIRS \
223411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000002)
223511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_INFORMATION \
223611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000003)
223711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_SPORT \
223811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000004)
223911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_EDUCATION \
224011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000005)
224111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_DRAMA \
224211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000006)
224311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_CULTURE \
224411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000007)
224511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_SCIENCE \
224611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000008)
224711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_VARIEDSPEECH \
224811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000009)
224911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_POPMUSIC \
225011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000000A)
225111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_ROCKMUSIC \
225211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000000B)
225311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_EASYLISTENING \
225411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000000C)
225511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_LIGHTCLASSICAL \
225611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000000D)
225711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_SERIOUSCLASSICAL \
225811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000000E)
225911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_OTHERMUSIC \
226011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000000F)
226111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_WEATHER \
226211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000010)
226311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_FINANCE \
226411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000011)
226511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_CHILDRENSPROGRAMMES \
226611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000012)
226711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_SOCIALAFFAIRS \
226811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000013)
226911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_RELIGION \
227011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000014)
227111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_PHONEIN \
227211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000015)
227311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_TRAVEL \
227411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000016)
227511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_LEISURE \
227611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000017)
227711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_JAZZMUSIC \
227811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000018)
227911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_COUNTRYMUSIC \
228011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000019)
228111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_NATIONALMUSIC \
228211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000001A)
228311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_OLDIESMUSIC \
228411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000001B)
228511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_FOLKMUSIC \
228611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000001C)
228711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_DOCUMENTARY \
228811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000001D)
228911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_ALARMTEST \
229011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000001E)
229111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RDSPTY_ALARM \
229211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000001F)
229311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
229411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_NONE \
229511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000000)
229611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_NEWS \
229711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000001)
229811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_INFORMATION \
229911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000002)
230011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_SPORTS \
230111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000003)
230211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_TALK \
230311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000004)
230411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_ROCK \
230511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000005)
230611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_CLASSICROCK \
230711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000006)
230811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_ADULTHITS \
230911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000007)
231011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_SOFTROCK \
231111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000008)
231211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_TOP40 \
231311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000009)
231411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_COUNTRY \
231511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000000A)
231611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_OLDIES \
231711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000000B)
231811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_SOFT \
231911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000000C)
232011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_NOSTALGIA \
232111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000000D)
232211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_JAZZ \
232311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000000E)
232411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_CLASSICAL \
232511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000000F)
232611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_RHYTHMANDBLUES \
232711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000010)
232811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_SOFTRHYTHMANDBLUES \
232911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000011)
233011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_LANGUAGE \
233111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000012)
233211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_RELIGIOUSMUSIC \
233311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000013)
233411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_RELIGIOUSTALK \
233511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000014)
233611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_PERSONALITY \
233711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000015)
233811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_PUBLIC \
233911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000016)
234011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_COLLEGE \
234111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000017)
234211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED1 \
234311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000018)
234411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED2 \
234511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x00000019)
234611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED3 \
234711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000001A)
234811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED4 \
234911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000001B)
235011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_UNASSIGNED5 \
235111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000001C)
235211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_WEATHER \
235311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000001D)
235411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_EMERGENCYTEST \
235511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000001E)
235611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSPROGRAMMETYPE_RBDSPTY_EMERGENCY \
235711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    ((XAuint32) 0x0000001F)
235811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
235911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_ITEMTITLE              ((XAuint8) 0x01)
236011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_ITEMALBUM              ((XAuint8) 0x02)
236111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_ITEMTRACKNUMBER        ((XAuint8) 0x03)
236211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_ITEMARTIST             ((XAuint8) 0x04)
236311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_ITEMCOMPOSITION        ((XAuint8) 0x05)
236411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_ITEMMOVEMENT           ((XAuint8) 0x06)
236511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_ITEMCONDUCTOR          ((XAuint8) 0x07)
236611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_ITEMCOMPOSER           ((XAuint8) 0x08)
236711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_ITEMBAND               ((XAuint8) 0x09)
236811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_ITEMCOMMENT            ((XAuint8) 0x0A)
236911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_ITEMGENRE              ((XAuint8) 0x0B)
237011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFONEWS               ((XAuint8) 0x0C)
237111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFONEWSLOCAL          ((XAuint8) 0x0D)
237211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOSTOCKMARKET        ((XAuint8) 0x0E)
237311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOSPORT              ((XAuint8) 0x0F)
237411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOLOTTERY            ((XAuint8) 0x10)
237511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOHOROSCOPE          ((XAuint8) 0x11)
237611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFODAILYDIVERSION     ((XAuint8) 0x12)
237711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOHEALTH             ((XAuint8) 0x13)
237811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOEVENT              ((XAuint8) 0x14)
237911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOSZENE              ((XAuint8) 0x15)
238011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOCINEMA             ((XAuint8) 0x16)
238111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOTV                 ((XAuint8) 0x17)
238211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFODATETIME           ((XAuint8) 0x18)
238311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOWEATHER            ((XAuint8) 0x19)
238411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOTRAFFIC            ((XAuint8) 0x1A)
238511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOALARM              ((XAuint8) 0x1B)
238611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOADVISERTISEMENT    ((XAuint8) 0x1C)
238711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOURL                ((XAuint8) 0x1D)
238811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_INFOOTHER              ((XAuint8) 0x1E)
238911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_STATIONNAMESHORT       ((XAuint8) 0x1F)
239011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_STATIONNAMELONG        ((XAuint8) 0x20)
239111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PROGRAMNOW             ((XAuint8) 0x21)
239211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PROGRAMNEXT            ((XAuint8) 0x22)
239311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PROGRAMPART            ((XAuint8) 0x23)
239411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PROGRAMHOST            ((XAuint8) 0x24)
239511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PROFRAMEDITORIALSTAFF  ((XAuint8) 0x25)
239611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PROGRAMFREQUENCY       ((XAuint8) 0x26)
239711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PROGRAMHOMEPAGE        ((XAuint8) 0x27)
239811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PROGRAMSUBCHANNEL      ((XAuint8) 0x28)
239911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PHONEHOTLINE           ((XAuint8) 0x29)
240011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PHONESTUDIO            ((XAuint8) 0x2A)
240111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PHONEOTHER             ((XAuint8) 0x2B)
240211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_SMSSTUDIO              ((XAuint8) 0x2C)
240311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_SMSOTHER               ((XAuint8) 0x2D)
240411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_EMAILHOTLINE           ((XAuint8) 0x2E)
240511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_EMAILSTUDIO            ((XAuint8) 0x2F)
240611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_EMAILOTHER             ((XAuint8) 0x30)
240711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_MMSOTHER               ((XAuint8) 0x31)
240811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_CHAT                   ((XAuint8) 0x32)
240911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_CHATCENTER             ((XAuint8) 0x33)
241011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_VOTEQUESTION           ((XAuint8) 0x34)
241111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_VOTECENTER             ((XAuint8) 0x35)
241211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_OPENCLASS45            ((XAuint8) 0x36)
241311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_OPENCLASS55            ((XAuint8) 0x37)
241411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_OPENCLASS56            ((XAuint8) 0x38)
241511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_OPENCLASS57            ((XAuint8) 0x39)
241611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_OPENCLASS58            ((XAuint8) 0x3A)
241711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PLACE                  ((XAuint8) 0x3B)
241811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_APPOINTMENT            ((XAuint8) 0x3C)
241911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_IDENTIFIER             ((XAuint8) 0x3D)
242011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_PURCHASE               ((XAuint8) 0x3E)
242111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RDSRTPLUS_GETDATA                ((XAuint8) 0x3F)
242211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
242311cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_RDS;
242411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
242511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XARDSItf_;
242611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XARDSItf_ * const * XARDSItf;
242711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
242811cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaGetODAGroupCallback) (
242911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XARadioItf caller,
243011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
243111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean success,
243211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint16 group,
243311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint16 message
243411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
243511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
243611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaNewODADataCallback) (
243711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XARDSItf caller,
243811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
243911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAint16 group,
244011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint64 data
244111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
244211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
244311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaRDSCallback) (
244411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XARDSItf caller,
244511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext,
244611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint16 event,
244711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint8 eventData
244811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
244911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
245011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XARDSItf_ {
245111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryRDSSignal) (
245211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
245311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * isSignal
245411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
245511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetProgrammeServiceName) (
245611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
245711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAchar * ps
245811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
245911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetRadioText) (
246011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
246111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAchar * rt
246211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
246311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetRadioTextPlus) (
246411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
246511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint8 contentType,
246611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAchar * informationElement,
246711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAchar * descriptor,
246811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint8 * descriptorContentType
246911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
247011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetProgrammeType) (
247111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
247211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pty
247311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
247411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetProgrammeTypeString) (
247511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
247611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean isLengthMax16,
247711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAchar * pty
247811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
247911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetProgrammeIdentificationCode) (
248011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
248111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint16 * pi
248211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
248311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetClockTime) (
248411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
248511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAtime * dateAndTime
248611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
248711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetTrafficAnnouncement) (
248811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
248911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * ta
249011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
249111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetTrafficProgramme) (
249211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
249311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * tp
249411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
249511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SeekByProgrammeType) (
249611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
249711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 pty,
249811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean upwards
249911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
250011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SeekTrafficAnnouncement) (
250111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
250211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean upwards
250311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
250411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SeekTrafficProgramme) (
250511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
250611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean upwards
250711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
250811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetAutomaticSwitching) (
250911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
251011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean automatic
251111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
251211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetAutomaticSwitching) (
251311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
251411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * automatic
251511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
251611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetAutomaticTrafficAnnouncement) (
251711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
251811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean automatic
251911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
252011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetAutomaticTrafficAnnouncement) (
252111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
252211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * automatic
252311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
252411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetODAGroup) (
252511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
252611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 AID,
252711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaGetODAGroupCallback callback,
252811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
252911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
253011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SubscribeODAGroup) (
253111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
253211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint16 group,
253311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean useErrorCorrection
253411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
253511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*UnsubscribeODAGroup) (
253611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
253711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint16 group
253811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
253911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*ListODAGroupSubscriptions) (
254011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
254111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAint16* pGroups,
254211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32* pLength
254311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
254411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterRDSCallback) (
254511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
254611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaRDSCallback callback,
254711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
254811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
254911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterODADataCallback) (
255011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XARDSItf self,
255111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaNewODADataCallback callback,
255211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
255311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
255411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
255511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
255611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* VIBRA */
255711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
255811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_VIBRA;
255911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
256011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAVibraItf_;
256111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAVibraItf_ * const * XAVibraItf;
256211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
256311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAVibraItf_ {
256411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*Vibrate) (
256511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVibraItf self,
256611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean vibrate
256711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
256811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*IsVibrating) (
256911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVibraItf self,
257011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean * pVibrating
257111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
257211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetFrequency) (
257311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVibraItf self,
257411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmilliHertz frequency
257511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
257611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetFrequency) (
257711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVibraItf self,
257811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAmilliHertz * pFrequency
257911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
258011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetIntensity) (
258111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVibraItf self,
258211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille intensity
258311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
258411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetIntensity) (
258511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVibraItf self,
258611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XApermille * pIntensity
258711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
258811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
258911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
259011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* LED ARRAY */
259111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
259211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAHSL_ {
259311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmillidegree hue;
259411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XApermille saturation;
259511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XApermille lightness;
259611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAHSL;
259711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
259811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_LED;
259911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
260011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XALEDArrayItf_;
260111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XALEDArrayItf_ * const * XALEDArrayItf;
260211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
260311cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XALEDArrayItf_ {
260411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*ActivateLEDArray) (
260511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XALEDArrayItf self,
260611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 lightMask
260711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
260811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*IsLEDArrayActivated) (
260911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XALEDArrayItf self,
261011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pLightMask
261111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
261211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetColor) (
261311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XALEDArrayItf self,
261411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint8 index,
261511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAHSL * pColor
261611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
261711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetColor) (
261811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XALEDArrayItf self,
261911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint8 index,
262011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAHSL * pColor
262111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
262211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
262311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
262411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
262511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
262611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
262711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /* CODEC RELATED INTERFACES, STRUCTS AND DEFINES                 */
262811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert  /*****************************************************************/
262911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
263011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* AUDIO ENCODER AND AUDIO ENCODER/DECODER CAPABILITIES */
263111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
263211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RATECONTROLMODE_CONSTANTBITRATE  ((XAuint32) 0x00000001)
263311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_RATECONTROLMODE_VARIABLEBITRATE  ((XAuint32) 0x00000002)
263411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
263511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCODEC_PCM                   ((XAuint32) 0x00000001)
263611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCODEC_MP3                   ((XAuint32) 0x00000002)
263711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCODEC_AMR                   ((XAuint32) 0x00000003)
263811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCODEC_AMRWB                 ((XAuint32) 0x00000004)
263911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCODEC_AMRWBPLUS             ((XAuint32) 0x00000005)
264011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCODEC_AAC                   ((XAuint32) 0x00000006)
264111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCODEC_WMA                   ((XAuint32) 0x00000007)
264211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCODEC_REAL                  ((XAuint32) 0x00000008)
264311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCODEC_VORBIS                ((XAuint32) 0x00000009)
264411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
264511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_PCM                 ((XAuint32) 0x00000001)
264611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
264711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_MPEG1_L3            ((XAuint32) 0x00000001)
264811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_MPEG2_L3            ((XAuint32) 0x00000002)
264911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_MPEG25_L3           ((XAuint32) 0x00000003)
265011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
265111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCHANMODE_MP3_MONO           ((XAuint32) 0x00000001)
265211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCHANMODE_MP3_STEREO         ((XAuint32) 0x00000002)
265311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCHANMODE_MP3_JOINTSTEREO    ((XAuint32) 0x00000003)
265411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOCHANMODE_MP3_DUAL           ((XAuint32) 0x00000004)
265511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
265611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_AMR                 ((XAuint32) 0x00000001)
265711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
265811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_CONFORMANCE    ((XAuint32) 0x00000001)
265911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_IF1            ((XAuint32) 0x00000002)
266011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_IF2            ((XAuint32) 0x00000003)
266111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_FSF            ((XAuint32) 0x00000004)
266211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_RTPPAYLOAD     ((XAuint32) 0x00000005)
266311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_ITU            ((XAuint32) 0x00000006)
266411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
266511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_AMRWB               ((XAuint32) 0x00000001)
266611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
266711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_AMRWBPLUS           ((XAuint32) 0x00000001)
266811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
266911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_AAC_AAC             ((XAuint32) 0x00000001)
267011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
267111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_AAC_MAIN               ((XAuint32) 0x00000001)
267211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_AAC_LC                 ((XAuint32) 0x00000002)
267311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_AAC_SSR                ((XAuint32) 0x00000003)
267411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_AAC_LTP                ((XAuint32) 0x00000004)
267511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_AAC_HE                 ((XAuint32) 0x00000005)
267611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_AAC_SCALABLE           ((XAuint32) 0x00000006)
267711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_AAC_ERLC               ((XAuint32) 0x00000007)
267811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_AAC_LD                 ((XAuint32) 0x00000008)
267911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_AAC_HE_PS              ((XAuint32) 0x00000009)
268011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_AAC_HE_MPS             ((XAuint32) 0x0000000A)
268111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
268211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_MP2ADTS        ((XAuint32) 0x00000001)
268311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_MP4ADTS        ((XAuint32) 0x00000002)
268411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_MP4LOAS        ((XAuint32) 0x00000003)
268511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_MP4LATM        ((XAuint32) 0x00000004)
268611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_ADIF           ((XAuint32) 0x00000005)
268711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_MP4FF          ((XAuint32) 0x00000006)
268811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOSTREAMFORMAT_RAW            ((XAuint32) 0x00000007)
268911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
269011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_WMA7                ((XAuint32) 0x00000001)
269111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_WMA8                ((XAuint32) 0x00000002)
269211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_WMA9                ((XAuint32) 0x00000003)
269311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_WMA10               ((XAuint32) 0x00000004)
269411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
269511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_WMA_LEVEL1             ((XAuint32) 0x00000001)
269611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_WMA_LEVEL2             ((XAuint32) 0x00000002)
269711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_WMA_LEVEL3             ((XAuint32) 0x00000003)
269811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_WMA_LEVEL4             ((XAuint32) 0x00000004)
269911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_WMAPRO_LEVELM0         ((XAuint32) 0x00000005)
270011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_WMAPRO_LEVELM1         ((XAuint32) 0x00000006)
270111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_WMAPRO_LEVELM2         ((XAuint32) 0x00000007)
270211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_WMAPRO_LEVELM3         ((XAuint32) 0x00000008)
270311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
270411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_REALAUDIO           ((XAuint32) 0x00000001)
270511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
270611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_REALAUDIO_G2           ((XAuint32) 0x00000001)
270711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_REALAUDIO_8            ((XAuint32) 0x00000002)
270811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_REALAUDIO_10           ((XAuint32) 0x00000003)
270911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_REALAUDIO_SURROUND     ((XAuint32) 0x00000004)
271011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
271111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOPROFILE_VORBIS              ((XAuint32) 0x00000001)
271211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
271311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_AUDIOMODE_VORBIS                 ((XAuint32) 0x00000001)
271411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
271511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
271611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAAudioCodecDescriptor_ {
271711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 maxChannels;
271811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 minBitsPerSample;
271911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 maxBitsPerSample;
272011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz minSampleRate;
272111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz maxSampleRate;
272211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean isFreqRangeContinuous;
272311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz * pSampleRatesSupported;
272411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 numSampleRatesSupported;
272511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 minBitRate;
272611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 maxBitRate;
272711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAboolean isBitrateRangeContinuous;
272811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 * pBitratesSupported;
272911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 numBitratesSupported;
273011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 profileSetting;
273111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 modeSetting;
273211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAAudioCodecDescriptor;
273311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
273411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAAudioEncoderSettings_ {
273511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 encoderId;
273611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 channelsIn;
273711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 channelsOut;
273811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz sampleRate;
273911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 bitRate;
274011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 bitsPerSample;
274111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 rateControl;
274211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 profileSetting;
274311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 levelSetting;
274411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 channelMode;
274511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 streamFormat;
274611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 encodeOptions;
274711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 blockAlignment;
274811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAAudioEncoderSettings;
274911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
275011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_AUDIODECODERCAPABILITIES;
275111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
275211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAAudioDecoderCapabilitiesItf_;
275311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAAudioDecoderCapabilitiesItf_
275411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XAAudioDecoderCapabilitiesItf;
275511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
275611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAAudioDecoderCapabilitiesItf_ {
275711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetAudioDecoders) (
275811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioDecoderCapabilitiesItf self,
275911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumDecoders,
276011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pDecoderIds
276111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
276211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetAudioDecoderCapabilities) (
276311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioDecoderCapabilitiesItf self,
276411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 decoderId,
276511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pIndex,
276611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioCodecDescriptor * pDescriptor
276711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
276811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
276911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
277011cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_AUDIOENCODER;
277111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
277211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAAudioEncoderItf_;
277311cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAAudioEncoderItf_ * const * XAAudioEncoderItf;
277411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
277511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAAudioEncoderItf_ {
277611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetEncoderSettings) (
277711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioEncoderItf self,
277811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioEncoderSettings * pSettings
277911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
278011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetEncoderSettings) (
278111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioEncoderItf self,
278211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioEncoderSettings * pSettings
278311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
278411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
278511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
278611cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_AUDIOENCODERCAPABILITIES;
278711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
278811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAAudioEncoderCapabilitiesItf_;
278911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAAudioEncoderCapabilitiesItf_
279011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XAAudioEncoderCapabilitiesItf;
279111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
279211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAAudioEncoderCapabilitiesItf_ {
279311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetAudioEncoders) (
279411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioEncoderCapabilitiesItf self,
279511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumEncoders,
279611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pEncoderIds
279711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
279811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetAudioEncoderCapabilities) (
279911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioEncoderCapabilitiesItf self,
280011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 encoderId,
280111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pIndex,
280211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAAudioCodecDescriptor * pDescriptor
280311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
280411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
280511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
280611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* IMAGE ENCODER AND IMAGE ENCODER/DECODER CAPABILITIES */
280711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
280811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGECODEC_JPEG              ((XAuint32) 0x00000001)
280911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGECODEC_GIF               ((XAuint32) 0x00000002)
281011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGECODEC_BMP               ((XAuint32) 0x00000003)
281111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGECODEC_PNG               ((XAuint32) 0x00000004)
281211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGECODEC_TIFF              ((XAuint32) 0x00000005)
281311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_IMAGECODEC_RAW               ((XAuint32) 0x00000006)
281411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
281511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAImageCodecDescriptor_ {
281611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 codecId;
281711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 maxWidth;
281811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 maxHeight;
281911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAImageCodecDescriptor;
282011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
282111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAImageSettings_ {
282211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 encoderId;
282311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 width;
282411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 height;
282511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XApermille compressionLevel;
282611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 colorFormat;
282711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAImageSettings;
282811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
282911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_IMAGEENCODERCAPABILITIES;
283011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
283111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAImageEncoderCapabilitiesItf_;
283211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAImageEncoderCapabilitiesItf_
283311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XAImageEncoderCapabilitiesItf;
283411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
283511cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAImageEncoderCapabilitiesItf_ {
283611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetImageEncoderCapabilities) (
283711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageEncoderCapabilitiesItf self,
283811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pEncoderId,
283911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageCodecDescriptor * pDescriptor
284011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
284111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryColorFormats) (
284211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAImageEncoderCapabilitiesItf self,
284311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pIndex,
284411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pColorFormat
284511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
284611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
284711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
284811cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_IMAGEDECODERCAPABILITIES;
284911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
285011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAImageDecoderCapabilitiesItf_;
285111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAImageDecoderCapabilitiesItf_
285211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XAImageDecoderCapabilitiesItf;
285311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
285411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAImageDecoderCapabilitiesItf_ {
285511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetImageDecoderCapabilities) (
285611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageDecoderCapabilitiesItf self,
285711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pDecoderId,
285811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageCodecDescriptor * pDescriptor
285911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
286011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryColorFormats) (
286111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAImageDecoderCapabilitiesItf self,
286211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pIndex,
286311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pColorFormat
286411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
286511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
286611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
286711cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_IMAGEENCODER;
286811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
286911cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAImageEncoderItf_;
287011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAImageEncoderItf_ * const * XAImageEncoderItf;
287111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
287211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAImageEncoderItf_ {
287311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetImageSettings) (
287411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageEncoderItf self,
287511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        const XAImageSettings * pSettings
287611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
287711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetImageSettings) (
287811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageEncoderItf self,
287911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageSettings * pSettings
288011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
288111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetSizeEstimate) (
288211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAImageEncoderItf self,
288311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pSize
288411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
288511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
288611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
288711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* VIDEO ENCODER AND VIDEO ENCODER/DECODER CAPABILITIES */
288811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
288911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOCODEC_MPEG2                     ((XAuint32) 0x00000001)
289011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOCODEC_H263                      ((XAuint32) 0x00000002)
289111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOCODEC_MPEG4                     ((XAuint32) 0x00000003)
289211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOCODEC_AVC                       ((XAuint32) 0x00000004)
289311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOCODEC_VC1                       ((XAuint32) 0x00000005)
289411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
289511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG2_SIMPLE            ((XAuint32) 0x00000001)
289611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG2_MAIN              ((XAuint32) 0x00000002)
289711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG2_422               ((XAuint32) 0x00000003)
289811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG2_SNR               ((XAuint32) 0x00000004)
289911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG2_SPATIAL           ((XAuint32) 0x00000005)
290011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG2_HIGH              ((XAuint32) 0x00000006)
290111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
290211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_MPEG2_LL                  ((XAuint32) 0x00000001)
290311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_MPEG2_ML                  ((XAuint32) 0x00000002)
290411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_MPEG2_H14                 ((XAuint32) 0x00000003)
290511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_MPEG2_HL                  ((XAuint32) 0x00000004)
290611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
290711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_H263_BASELINE           ((XAuint32) 0x00000001)
290811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_H263_H320CODING         ((XAuint32) 0x00000002)
290911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_H263_BACKWARDCOMPATIBLE ((XAuint32) 0x00000003)
291011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_H263_ISWV2              ((XAuint32) 0x00000004)
291111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_H263_ISWV3              ((XAuint32) 0x00000005)
291211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_H263_HIGHCOMPRESSION    ((XAuint32) 0x00000006)
291311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_H263_INTERNET           ((XAuint32) 0x00000007)
291411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_H263_INTERLACE          ((XAuint32) 0x00000008)
291511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_H263_HIGHLATENCY        ((XAuint32) 0x00000009)
291611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
291711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_H263_10                   ((XAuint32) 0x00000001)
291811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_H263_20                   ((XAuint32) 0x00000002)
291911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_H263_30                   ((XAuint32) 0x00000003)
292011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_H263_40                   ((XAuint32) 0x00000004)
292111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_H263_45                   ((XAuint32) 0x00000005)
292211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_H263_50                   ((XAuint32) 0x00000006)
292311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_H263_60                   ((XAuint32) 0x00000007)
292411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_H263_70                   ((XAuint32) 0x00000008)
292511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
292611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_SIMPLE            ((XAuint32) 0x00000001)
292711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_SIMPLESCALABLE    ((XAuint32) 0x00000002)
292811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_CORE              ((XAuint32) 0x00000003)
292911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_MAIN              ((XAuint32) 0x00000004)
293011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_NBIT              ((XAuint32) 0x00000005)
293111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_SCALABLETEXTURE   ((XAuint32) 0x00000006)
293211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_SIMPLEFACE        ((XAuint32) 0x00000007)
293311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_SIMPLEFBA         ((XAuint32) 0x00000008)
293411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_BASICANIMATED     ((XAuint32) 0x00000009)
293511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_HYBRID            ((XAuint32) 0x0000000A)
293611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_ADVANCEDREALTIME  ((XAuint32) 0x0000000B)
293711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_CORESCALABLE      ((XAuint32) 0x0000000C)
293811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_ADVANCEDCODING    ((XAuint32) 0x0000000D)
293911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_ADVANCEDCORE      ((XAuint32) 0x0000000E)
294011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_MPEG4_ADVANCEDSCALABLE  ((XAuint32) 0x0000000F)
294111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
294211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_MPEG4_0                   ((XAuint32) 0x00000001)
294311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_MPEG4_0b                  ((XAuint32) 0x00000002)
294411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_MPEG4_1                   ((XAuint32) 0x00000003)
294511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_MPEG4_2                   ((XAuint32) 0x00000004)
294611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_MPEG4_3                   ((XAuint32) 0x00000005)
294711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_MPEG4_4                   ((XAuint32) 0x00000006)
294811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_MPEG4_4a                  ((XAuint32) 0x00000007)
294911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_MPEG4_5                   ((XAuint32) 0x00000008)
295011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
295111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_AVC_BASELINE            ((XAuint32) 0x00000001)
295211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_AVC_MAIN                ((XAuint32) 0x00000002)
295311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_AVC_EXTENDED            ((XAuint32) 0x00000003)
295411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_AVC_HIGH                ((XAuint32) 0x00000004)
295511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_AVC_HIGH10              ((XAuint32) 0x00000005)
295611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_AVC_HIGH422             ((XAuint32) 0x00000006)
295711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOPROFILE_AVC_HIGH444             ((XAuint32) 0x00000007)
295811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
295911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_1                     ((XAuint32) 0x00000001)
296011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_1B                    ((XAuint32) 0x00000002)
296111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_11                    ((XAuint32) 0x00000003)
296211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_12                    ((XAuint32) 0x00000004)
296311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_13                    ((XAuint32) 0x00000005)
296411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_2                     ((XAuint32) 0x00000006)
296511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_21                    ((XAuint32) 0x00000007)
296611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_22                    ((XAuint32) 0x00000008)
296711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_3                     ((XAuint32) 0x00000009)
296811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_31                    ((XAuint32) 0x0000000A)
296911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_32                    ((XAuint32) 0x0000000B)
297011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_4                     ((XAuint32) 0x0000000C)
297111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_41                    ((XAuint32) 0x0000000D)
297211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_42                    ((XAuint32) 0x0000000E)
297311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_5                     ((XAuint32) 0x0000000F)
297411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_AVC_51                    ((XAuint32) 0x00000010)
297511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
297611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_VC1_SIMPLE                ((XAuint32) 0x00000001)
297711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_VC1_MAIN                  ((XAuint32) 0x00000002)
297811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_VC1_ADVANCED              ((XAuint32) 0x00000003)
297911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
298011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_VC1_LOW                   ((XAuint32) 0x00000001)
298111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_VC1_MEDIUM                ((XAuint32) 0x00000002)
298211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_VC1_HIGH                  ((XAuint32) 0x00000003)
298311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_VC1_L0                    ((XAuint32) 0x00000004)
298411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_VC1_L1                    ((XAuint32) 0x00000005)
298511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_VC1_L2                    ((XAuint32) 0x00000006)
298611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_VC1_L3                    ((XAuint32) 0x00000007)
298711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_VIDEOLEVEL_VC1_L4                    ((XAuint32) 0x00000008)
298811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
298911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAVideoCodecDescriptor_ {
299011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 codecId;
299111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 maxWidth;
299211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 maxHeight;
299311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 maxFrameRate;
299411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 maxBitRate;
299511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 rateControlSupported;
299611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 profileSetting;
299711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 levelSetting;
299811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAVideoCodecDescriptor;
299911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
300011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAVideoSettings_ {
300111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 encoderId;
300211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 width;
300311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 height;
300411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 frameRate;
300511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 bitRate;
300611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 rateControl;
300711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 profileSetting;
300811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 levelSetting;
300911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 keyFrameInterval;
301011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAVideoSettings;
301111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
301211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_VIDEODECODERCAPABILITIES;
301311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
301411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAVideoDecoderCapabilitiesItf_;
301511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAVideoDecoderCapabilitiesItf_
301611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XAVideoDecoderCapabilitiesItf;
301711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
301811cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAVideoDecoderCapabilitiesItf_ {
301911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetVideoDecoders) (
302011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoDecoderCapabilitiesItf self,
302111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumDecoders,
302211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pDecoderIds
302311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
302411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetVideoDecoderCapabilities) (
302511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoDecoderCapabilitiesItf self,
302611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 decoderId,
302711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pIndex,
302811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoCodecDescriptor * pDescriptor
302911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
303011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
303111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
303211cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_VIDEOENCODER;
303311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
303411cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_VIDEOENCODERCAPABILITIES;
303511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
303611cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAVideoEncoderCapabilitiesItf_;
303711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAVideoEncoderCapabilitiesItf_
303811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    * const * XAVideoEncoderCapabilitiesItf;
303911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
304011cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAVideoEncoderCapabilitiesItf_ {
304111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetVideoEncoders) (
304211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoEncoderCapabilitiesItf self,
304311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pNumEncoders,
304411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pEncoderIds
304511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
304611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetVideoEncoderCapabilities) (
304711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoEncoderCapabilitiesItf self,
304811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 encoderId,
304911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 * pIndex,
305011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoCodecDescriptor * pDescriptor
305111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
305211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
305311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
305411cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAVideoEncoderItf_;
305511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAVideoEncoderItf_ * const * XAVideoEncoderItf;
305611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
305711cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAVideoEncoderItf_ {
305811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetVideoSettings) (
305911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoEncoderItf self,
306011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoSettings * pSettings
306111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
306211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*GetVideoSettings) (
306311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoEncoderItf self,
306411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAVideoSettings * pSettings
306511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
306611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
306711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
306811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert/* STREAM INFORMATION */
306911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
307011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DOMAINTYPE_AUDIO     0x00000001
307111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DOMAINTYPE_VIDEO     0x00000002
307211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DOMAINTYPE_IMAGE     0x00000003
307311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DOMAINTYPE_TIMEDTEXT 0x00000004
307411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DOMAINTYPE_MIDI      0x00000005
307511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DOMAINTYPE_VENDOR    0xFFFFFFFE
307611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_DOMAINTYPE_UNKNOWN   0xFFFFFFFF
307711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
307811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_MIDIBANK_DEVICE      0x00000001
307911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_MIDIBANK_CUSTOM      0x00000002
308011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
308111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_MIDI_UNKNOWN         0xFFFFFFFF
308211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
308311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#define XA_STREAMCBEVENT_PROPERTYCHANGE     ((XAuint32) 0x00000001)
308411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
308511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAMediaContainerInformation_ {
308611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 containerType;
308711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmillisecond mediaDuration;
308811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 numStreams;
308911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAMediaContainerInformation;
309011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
309111cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAVideoStreamInformation_ {
309211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 codecId;
309311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 width;
309411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 height;
309511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 frameRate;
309611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 bitRate;
309711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmillisecond duration;
309811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAVideoStreamInformation;
309911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
310011cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAAudioStreamInformation_ {
310111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 codecId;
310211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 channels;
310311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmilliHertz sampleRate;
310411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 bitRate;
310511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAchar langCountry[16];
310611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmillisecond duration;
310711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAAudioStreamInformation;
310811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
310911cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAImageStreamInformation_ {
311011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 codecId;
311111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 width;
311211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 height;
311311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmillisecond presentationDuration;
311411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAImageStreamInformation;
311511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
311611cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XATimedTextStreamInformation_ {
311711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint16 layer;
311811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 width;
311911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 height;
312011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint16 tx;
312111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint16 ty;
312211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 bitrate;
312311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAchar langCountry[16];
312411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmillisecond duration;
312511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XATimedTextStreamInformation;
312611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
312711cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAMIDIStreamInformation_ {
312811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 channels;
312911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 tracks;
313011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 bankType;
313111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAchar langCountry[16];
313211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAmillisecond duration;
313311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAMIDIStreamInformation;
313411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
313511cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef struct XAVendorStreamInformation_ {
313611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void *VendorStreamInfo;
313711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} XAVendorStreamInformation;
313811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
313911cd02dfb91661c65134cac258cf5924270e9d2Dan AlbertXA_API extern const XAInterfaceID XA_IID_STREAMINFORMATION;
314011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
314111cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAStreamInformationItf_;
314211cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef const struct XAStreamInformationItf_ * const * XAStreamInformationItf;
314311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
314411cd02dfb91661c65134cac258cf5924270e9d2Dan Alberttypedef void (XAAPIENTRY * xaStreamEventChangeCallback) (
314511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAStreamInformationItf caller,
314611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 eventId,
314711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAuint32 streamIndex,
314811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pEventData,
314911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    void * pContext
315011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert);
315111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
315211cd02dfb91661c65134cac258cf5924270e9d2Dan Albertstruct XAStreamInformationItf_ {
315311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryMediaContainerInformation) (
315411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAStreamInformationItf self,
315511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAMediaContainerInformation * info
315611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
315711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryStreamType) (
315811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAStreamInformationItf self,
315911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 streamIndex,
316011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 *domain
316111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
316211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryStreamInformation) (
316311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAStreamInformationItf self,
316411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 streamIndex,
316511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * info
316611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
316711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryStreamName) (
316811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAStreamInformationItf self,
316911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 streamIndex,
317011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint16 * pNameSize,
317111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAchar * pName
317211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
317311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*RegisterStreamChangeCallback) (
317411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAStreamInformationItf self,
317511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        xaStreamEventChangeCallback callback,
317611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        void * pContext
317711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
317811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*QueryActiveStreams) (
317911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAStreamInformationItf self,
318011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32 *numStreams,
318111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean *activeStreams
318211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
318311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    XAresult (*SetActiveStream) (
318411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAStreamInformationItf self,
318511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAuint32   streamNum,
318611cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean  active,
318711cd02dfb91661c65134cac258cf5924270e9d2Dan Albert        XAboolean  commitNow
318811cd02dfb91661c65134cac258cf5924270e9d2Dan Albert    );
318911cd02dfb91661c65134cac258cf5924270e9d2Dan Albert};
319011cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
319111cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#ifdef __cplusplus
319211cd02dfb91661c65134cac258cf5924270e9d2Dan Albert} /* extern "C" */
319311cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif
319411cd02dfb91661c65134cac258cf5924270e9d2Dan Albert
319511cd02dfb91661c65134cac258cf5924270e9d2Dan Albert#endif /* _OPENMAXAL_H_ */
3196