Files
handleaiuinew/env/Dalsa/include/capidef.h
T
2024-05-18 23:53:26 +08:00

1043 lines
47 KiB
C

//
// Coreco API definitions.
//
#ifndef _CAPIDEF_H_
#define _CAPIDEF_H_
#include <corstat.h>
#include <corpack.h>
#include "cpackd.h"
#define CORAPIFUNC
#define CORAPIEXPORT
#if COR_WIN32 && !defined(HOST_FIRMWARE) && !defined(_CORAPI_LOAD_MANUAL_)
#undef CORAPIFUNC
#undef CORAPIEXPORT
#ifdef CORAPI_DEFINE_EXPORT
#define CORAPIFUNC __declspec(dllexport) __stdcall
#define CORAPIEXPORT __declspec(dllexport)
#else
#define CORAPIFUNC __declspec(dllimport) __stdcall
#define CORAPIEXPORT __declspec(dllimport)
#endif
#endif
#define CORPTR_FREE( ptr) \
if( ptr != NULL)\
{\
CorFree( ptr);\
ptr = NULL;\
}
typedef struct COR_PACK
{
ULONG_PTR phys;
PVOID pLinear;
} CORADDRESS;
/* Generic id */
#define CORHANDLE_TYPE_GENERIC 0xCCCC0000
/* Server id */
#define CORHANDLE_TYPE_SERVER 0xCCCC0040
/* Active resources handles id */
#define CORHANDLE_TYPE_SUBS_ACQ 0xCCCC0080
#define CORHANDLE_TYPE_SUBS_DISPLAY 0xCCCC0081
#define CORHANDLE_TYPE_SUBS_GRAB 0xCCCC0082
#define CORHANDLE_TYPE_SUBS_GRAPHIC 0xCCCC0083
#define CORHANDLE_TYPE_SUBS_PRO 0xCCCC0084
#define CORHANDLE_TYPE_SUBS_VIEW 0xCCCC0085
#define CORHANDLE_TYPE_SUBS_VIP 0xCCCC0086
#define CORHANDLE_TYPE_SUBS_XFER 0xCCCC0087
#define CORHANDLE_TYPE_SUBS_CAB 0xCCCC0088
#define CORHANDLE_TYPE_SUBS_PIXPRO 0xCCCC0089
#define CORHANDLE_TYPE_SUBS_GIO 0xCCCC008a
#define CORHANDLE_TYPE_SUBS_COUNTER 0xCCCC008b
#define CORHANDLE_TYPE_SUBS_ACQ2 0xCCCC008c
#define CORHANDLE_TYPE_SUBS_SERIAL 0xCCCC008d
#define CORHANDLE_TYPE_SUBS_ACQDEVICE 0xCCCC008e
/* Passive resource handles id */
#define CORHANDLE_TYPE_RES_VIC 0xCCCC0100
#define CORHANDLE_TYPE_RES_BUFFER 0xCCCC0101
#define CORHANDLE_TYPE_RES_CAM 0xCCCC0102
#define CORHANDLE_TYPE_RES_KERNEL 0xCCCC0103
#define CORHANDLE_TYPE_RES_LUT 0xCCCC0104
#define CORHANDLE_TYPE_RES_VOC 0xCCCC0106
#define CORHANDLE_TYPE_RES_FILE 0xCCCC0107
#define CORHANDLE_TYPE_RES_OBJECT 0xCCCC0108
#define CORHANDLE_TYPE_RES_STREAM 0xCCCC0109
#define CORHANDLE_TYPE_RES_PARAM 0xCCCC010A
#define CORHANDLE_TYPE_RES_EVENTINFO 0xCCCC010B
#define CORHANDLE_TYPE_RES_FEATURE 0xCCCC010C
#define CORHANDLE_TYPE_RES_MULTIBUFFER 0xCCCC010D
/* Pci resource handle id */
#define CORHANDLE_TYPE_RES_PCI_DEVICE 0xCCCC0200
#define CORHANDLE_NULL NULL
#define CORHANDLE_IS_EQUAL( handle1, handle2)\
(memcmp( handle1, handle2, sizeof( _CORHANDLE) - sizeof( void *)) == 0)
#define CORHANDLE_IS_BAD_PTR( handle)\
((handle) == CORHANDLE_NULL || CorIsBadReadPtr((handle), sizeof(_CORHANDLE)))
#define CORHANDLE_IS_NULL( handle)\
(CORHANDLE_IS_BAD_PTR( handle) || CORHANDLE_TYPE( handle) == 0)
#define CORHANDLE_ALLOC_EX( handle, extraSize, module) \
{\
if( (*(handle)= CorCalloc( 1, sizeof( _CORHANDLE) + extraSize)) == NULL)\
{\
CORMANLOG_AND_RETURN( CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_NO_MEMORY, CORSTATUS_MODULE_SERVER, module));\
}\
else\
{\
(*(handle))->localAddress= *(handle);\
}\
}
#define CORHANDLE_ALLOC_MULTI_EX( handle, count, extraSize, module) \
{\
if( (handle[0]= CorCalloc( count, sizeof( _CORHANDLE) + extraSize)) == NULL)\
{\
CORMANLOG_AND_RETURN( CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_NO_MEMORY, CORSTATUS_MODULE_SERVER, module));\
}\
else\
{\
UINT32 _i = 0;\
for(_i = 0; _i < (count); _i++)\
{\
handle[_i] = (_CORHANDLE*)((char*)handle[0] + ((sizeof( _CORHANDLE) + extraSize) * _i));\
handle[_i]->localAddress= handle[_i];\
}\
}\
}
#define CORHANDLE_ALLOC( handle, module) \
CORHANDLE_ALLOC_EX( handle, 0, module)
#define CORHANDLE_ALLOC_MULTI( handle, count, module) \
CORHANDLE_ALLOC_MULTI_EX(handle, count, 0, module)
#define CORHANDLE_FREE( handle) \
{\
CorFree( handle);\
handle= CORHANDLE_NULL;\
}
#define CORHANDLE_COPY( pDst, pSrc)\
{\
if( pDst != NULL && pSrc == NULL)\
memset( pDst, 0, sizeof( _CORHANDLE));\
else if( pDst != NULL && pSrc != NULL)\
memcpy( pDst, pSrc, sizeof( _CORHANDLE));\
}
#define CORHANDLE_LOCATION( hHandle) \
((hHandle)->location)
#define CORHANDLE_TYPE( hHandle) \
((hHandle)->type)
#define CORHANDLE_INFO( hHandle) \
((hHandle)->address.pLinear)
#define CORHANDLE_INFO_PHYSADDR( hHandle) \
((hHandle)->address.phys)
#define CORHANDLE_LOCAL_ADDRESS( hHandle) \
((hHandle)->localAddress)
#define CORHANDLE_LOCAL_INFO( hHandle) \
((void *)((hHandle)+1))
#define CORHANDLE_ADDRESS( hHandle) \
hHandle
// Note: This macro might need to be adapted in future versions of Sapera
#if COR_I960
#define CORHANDLE_BOARD_INDEX(x) (0)
#else
#define CORHANDLE_BOARD_INDEX(x) (CorManIsSystemHandle(x) ? 0: (CorManIsMambaHandle(x) ? 0: (((CORHANDLE_LOCATION(x) >> 8) & 0xFF) - 1)))
#endif
#define CHECK_HANDLE_GENERIC( hHandle, module)\
{\
if( CORHANDLE_IS_BAD_PTR( hHandle) || CORHANDLE_TYPE( hHandle) != CORHANDLE_TYPE_GENERIC)\
CORMANLOG_AND_RETURN( CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_INVALID_HANDLE, 0, module));\
}
#define CHECK_HANDLE_SERVER( hServer, module)\
{\
if( CORHANDLE_IS_BAD_PTR( hServer) || CORHANDLE_TYPE( hServer) != CORHANDLE_TYPE_SERVER)\
CORMANLOG_AND_RETURN( CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_INVALID_HANDLE, CORSTATUS_MODULE_SERVER, module));\
}
#define CHECK_HANDLE( hHandle, hType, moduleId, module)\
{\
if( CORHANDLE_IS_BAD_PTR( hHandle) || CORHANDLE_TYPE( hHandle) != hType || CORHANDLE_INFO( hHandle) == 0)\
CORMANLOG_AND_RETURN( CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_INVALID_HANDLE, moduleId, module));\
}
#define CHECK_HANDLE_TYPE( hHandle, hType, moduleId, module)\
{\
if( CORHANDLE_IS_BAD_PTR( hHandle) || CORHANDLE_TYPE( hHandle) != hType)\
CORMANLOG_AND_RETURN( CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_INVALID_HANDLE, moduleId, module));\
}
#define CHECK_HANDLE_ANY_TYPE( hHandle, module)\
{\
if( CORHANDLE_IS_BAD_PTR( hHandle))\
CORMANLOG_AND_RETURN( CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_INVALID_HANDLE, 0, module));\
}
// Use these macros ONLY to check a handle inside its own module, otherwise use the VALIDATE macros.
#define CHECK_HANDLE_ACQ( hAcq) CHECK_HANDLE( hAcq, CORHANDLE_TYPE_SUBS_ACQ, CORSTATUS_MODULE_ACQ, CORSTATUS_MODULE_ACQ)
#define CHECK_HANDLE_DISPLAY( hDisplay) CHECK_HANDLE( hDisplay, CORHANDLE_TYPE_SUBS_DISPLAY, CORSTATUS_MODULE_DISPLAY, CORSTATUS_MODULE_DISPLAY)
#define CHECK_HANDLE_GRAPHIC( hGraphic) CHECK_HANDLE( hGraphic, CORHANDLE_TYPE_SUBS_GRAPHIC, CORSTATUS_MODULE_GRAPHIC, CORSTATUS_MODULE_GRAPHIC)
#define CHECK_HANDLE_PRO( hPro) CHECK_HANDLE( hPro, CORHANDLE_TYPE_SUBS_PRO, CORSTATUS_MODULE_PRO, CORSTATUS_MODULE_PRO)
#define CHECK_HANDLE_XFER( hXfer) CHECK_HANDLE( hXfer, CORHANDLE_TYPE_SUBS_XFER, CORSTATUS_MODULE_XFER, CORSTATUS_MODULE_XFER)
#define CHECK_HANDLE_CAB( hCAB) CHECK_HANDLE( hCAB, CORHANDLE_TYPE_SUBS_CAB, CORSTATUS_MODULE_CAB, CORSTATUS_MODULE_CAB)
#define CHECK_HANDLE_PIXPRO( hPixPro) CHECK_HANDLE( hPixPro, CORHANDLE_TYPE_SUBS_PIXPRO, CORSTATUS_MODULE_PIXPRO, CORSTATUS_MODULE_PIXPRO)
#define CHECK_HANDLE_VIC( hVIC) CHECK_HANDLE( hVIC, CORHANDLE_TYPE_RES_VIC, CORSTATUS_MODULE_VIC, CORSTATUS_MODULE_VIC)
#define CHECK_HANDLE_BUFFER( hBuffer) CHECK_HANDLE( hBuffer, CORHANDLE_TYPE_RES_BUFFER, CORSTATUS_MODULE_BUFFER, CORSTATUS_MODULE_BUFFER)
#define CHECK_HANDLE_CAM( hCam) CHECK_HANDLE( hCam, CORHANDLE_TYPE_RES_CAM, CORSTATUS_MODULE_CAM, CORSTATUS_MODULE_CAM)
#define CHECK_HANDLE_KERNEL( hKernel) CHECK_HANDLE( hKernel, CORHANDLE_TYPE_RES_KERNEL, CORSTATUS_MODULE_KERNEL, CORSTATUS_MODULE_KERNEL)
#define CHECK_HANDLE_LUT( hLut) CHECK_HANDLE( hLut, CORHANDLE_TYPE_RES_LUT, CORSTATUS_MODULE_LUT, CORSTATUS_MODULE_LUT)
#define CHECK_HANDLE_VIEW( hView) CHECK_HANDLE( hView, CORHANDLE_TYPE_SUBS_VIEW, CORSTATUS_MODULE_VIEW, CORSTATUS_MODULE_VIEW)
#define CHECK_HANDLE_VOC( hVOC) CHECK_HANDLE( hVOC, CORHANDLE_TYPE_RES_VOC, CORSTATUS_MODULE_VOC, CORSTATUS_MODULE_VOC)
#define CHECK_HANDLE_PCI_DEVICE( hPciDevice) CHECK_HANDLE_TYPE( hPciDevice, CORHANDLE_TYPE_RES_PCI_DEVICE, CORSTATUS_MODULE_PCI, CORSTATUS_MODULE_PCI)
#define CHECK_HANDLE_FILE( hFile) CHECK_HANDLE( hFile, CORHANDLE_TYPE_RES_FILE, CORSTATUS_MODULE_FILE, CORSTATUS_MODULE_FILE)
#define CHECK_HANDLE_GIO( hGio) CHECK_HANDLE( hGio, CORHANDLE_TYPE_SUBS_GIO, CORSTATUS_MODULE_GIO, CORSTATUS_MODULE_GIO)
#define CHECK_HANDLE_COUNTER( hCounter) CHECK_HANDLE( hCounter, CORHANDLE_TYPE_SUBS_COUNTER, CORSTATUS_MODULE_COUNTER, CORSTATUS_MODULE_COUNTER)
#define CHECK_HANDLE_OBJECT( hObject) CHECK_HANDLE( hObject, CORHANDLE_TYPE_RES_OBJECT, CORSTATUS_MODULE_OBJECT, CORSTATUS_MODULE_OBJECT)
#define CHECK_HANDLE_STREAM( hStream) CHECK_HANDLE( hStream, CORHANDLE_TYPE_RES_STREAM, CORSTATUS_MODULE_STREAM, CORSTATUS_MODULE_STREAM)
#define CHECK_HANDLE_PARAM( hParam) CHECK_HANDLE( hParam, CORHANDLE_TYPE_RES_PARAM, CORSTATUS_MODULE_STREAM, CORSTATUS_MODULE_PARAM)
#define CHECK_HANDLE_SERIAL( hSerial) CHECK_HANDLE( hSerial, CORHANDLE_TYPE_SUBS_SERIAL, CORSTATUS_MODULE_SERIAL, CORSTATUS_MODULE_SERIAL)
#define CHECK_HANDLE_EVENTINFO( hEventInfo) CHECK_HANDLE( hEventInfo, CORHANDLE_TYPE_RES_EVENTINFO, CORSTATUS_MODULE_EVENTINFO, CORSTATUS_MODULE_EVENTINFO)
#define CHECK_HANDLE_FEATURE( hFeature) CHECK_HANDLE( hFeature, CORHANDLE_TYPE_RES_FEATURE, CORSTATUS_MODULE_FEATURE, CORSTATUS_MODULE_FEATURE)
#define CHECK_HANDLE_ACQDEVICE( hAcqDevice) CHECK_HANDLE( hAcqDevice, CORHANDLE_TYPE_SUBS_ACQDEVICE, CORSTATUS_MODULE_ACQDEVICE, CORSTATUS_MODULE_ACQDEVICE)
// Use these macros when checking a handle inside or outside its own module.
#define CHECK_HANDLE_ACQ_MOD( hAcq, module) CHECK_HANDLE( hAcq, CORHANDLE_TYPE_SUBS_ACQ, CORSTATUS_MODULE_ACQ, module)
#define CHECK_HANDLE_DISPLAY_MOD( hDisplay, module) CHECK_HANDLE( hDisplay, CORHANDLE_TYPE_SUBS_DISPLAY, CORSTATUS_MODULE_DISPLAY, module)
#define CHECK_HANDLE_GRAPHIC_MOD( hGraphic, module) CHECK_HANDLE( hGraphic, CORHANDLE_TYPE_SUBS_GRAPHIC, CORSTATUS_MODULE_GRAPHIC, module)
#define CHECK_HANDLE_PRO_MOD( hPro, module) CHECK_HANDLE( hPro, CORHANDLE_TYPE_SUBS_PRO, CORSTATUS_MODULE_PRO, module)
#define CHECK_HANDLE_XFER_MOD( hXfer, module) CHECK_HANDLE( hXfer, CORHANDLE_TYPE_SUBS_XFER, CORSTATUS_MODULE_XFER, module)
#define CHECK_HANDLE_CAB_MOD( hCAB, module) CHECK_HANDLE( hCAB, CORHANDLE_TYPE_SUBS_CAB, CORSTATUS_MODULE_CAB, module)
#define CHECK_HANDLE_PIXPRO_MOD( hPixPro, module) CHECK_HANDLE( hPixPro, CORHANDLE_TYPE_SUBS_PIXPRO, CORSTATUS_MODULE_PIXPRO, module)
#define CHECK_HANDLE_VIC_MOD( hVIC, module) CHECK_HANDLE( hVIC, CORHANDLE_TYPE_RES_VIC, CORSTATUS_MODULE_VIC, module)
#define CHECK_HANDLE_BUFFER_MOD( hBuffer, module) CHECK_HANDLE( hBuffer, CORHANDLE_TYPE_RES_BUFFER, CORSTATUS_MODULE_BUFFER, module)
#define CHECK_HANDLE_CAM_MOD( hCam, module) CHECK_HANDLE( hCam, CORHANDLE_TYPE_RES_CAM, CORSTATUS_MODULE_CAM, module)
#define CHECK_HANDLE_KERNEL_MOD( hKernel, module) CHECK_HANDLE( hKernel, CORHANDLE_TYPE_RES_KERNEL, CORSTATUS_MODULE_KERNEL, module)
#define CHECK_HANDLE_LUT_MOD( hLut, module) CHECK_HANDLE( hLut, CORHANDLE_TYPE_RES_LUT, CORSTATUS_MODULE_LUT, module)
#define CHECK_HANDLE_VIEW_MOD( hView, module) CHECK_HANDLE( hView, CORHANDLE_TYPE_SUBS_VIEW, CORSTATUS_MODULE_VIEW, module)
#define CHECK_HANDLE_VOC_MOD( hVOC, module) CHECK_HANDLE( hVOC, CORHANDLE_TYPE_RES_VOC, CORSTATUS_MODULE_VOC, module)
#define CHECK_HANDLE_PCI_DEVICE_MOD( hPciDevice, module) CHECK_HANDLE_TYPE( hPciDevice, CORHANDLE_TYPE_RES_PCI_DEVICE, CORSTATUS_MODULE_PCI, module)
#define CHECK_HANDLE_FILE_MOD( hFile, module) CHECK_HANDLE( hFile, CORHANDLE_TYPE_RES_FILE, CORSTATUS_MODULE_FILE, module)
#define CHECK_HANDLE_GIO_MOD( hGio, module) CHECK_HANDLE( hGio, CORHANDLE_TYPE_SUBS_GIO, CORSTATUS_MODULE_GIO, module)
#define CHECK_HANDLE_COUNTER_MOD( hCounter, module) CHECK_HANDLE( hCounter, CORHANDLE_TYPE_SUBS_COUNTER, CORSTATUS_MODULE_COUNTER, module)
#define CHECK_HANDLE_OBJECT_MOD( hObject, module) CHECK_HANDLE( hObject, CORHANDLE_TYPE_RES_OBJECT, CORSTATUS_MODULE_OBJECT, module)
#define CHECK_HANDLE_STREAM_MOD( hStream, module) CHECK_HANDLE( hStream, CORHANDLE_TYPE_RES_STREAM, CORSTATUS_MODULE_STREAM, module)
#define CHECK_HANDLE_PARAM_MOD( hParam, module) CHECK_HANDLE( hParam, CORHANDLE_TYPE_RES_PARAM, CORSTATUS_MODULE_PARAM, module)
#define CHECK_HANDLE_SERIAL_MOD( hSerial, module) CHECK_HANDLE( hSerial, CORHANDLE_TYPE_SUBS_SERIAL, CORSTATUS_MODULE_SERIAL, module)
#define CHECK_HANDLE_EVENTINFO_MOD( hEventInfo, module) CHECK_HANDLE( hEventInfo, CORHANDLE_TYPE_RES_EVENTINFO, CORSTATUS_MODULE_EVENTINFO, module)
#define CHECK_HANDLE_FEATURE_MOD( hFeature, module) CHECK_HANDLE( hFeature, CORHANDLE_TYPE_RES_FEATURE, CORSTATUS_MODULE_FEATURE, module)
#define CHECK_HANDLE_ACQDEVICE_MOD( hAcqDevice, module) CHECK_HANDLE( hAcqDevice, CORHANDLE_TYPE_SUBS_ACQDEVICE, CORSTATUS_MODULE_ACQDEVICE, module)
#define CHECK_HANDLE_ISLOCAL( hHandle, nArg, module)\
{\
if( CorManIsSameLocation( hHandle) == FALSE)\
CORMANLOG_AND_RETURN( CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_ARG_INVALID, nArg, module));\
}
#define CHECK_HANDLE_IS_ACCESSIBLE( hHandle, nArg, module)\
{\
if( CorManIsAccessibleLocation( hHandle) == FALSE)\
CORMANLOG_AND_RETURN( CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_ARG_INVALID, nArg, module));\
}
// Use these macros ONLY to check a handle inside its own module, otherwise use the VALIDATE macros.
#define CHECK_HANDLE_ISLOCAL_ACQ( hAcq, nArg) CHECK_HANDLE_ISLOCAL( hAcq, nArg, CORSTATUS_MODULE_ACQ)
#define CHECK_HANDLE_ISLOCAL_DISPLAY( hDisplay, nArg) CHECK_HANDLE_ISLOCAL( hDisplay, nArg, CORSTATUS_MODULE_DISPLAY)
#define CHECK_HANDLE_ISLOCAL_GRAPHIC( hGraphic, nArg) CHECK_HANDLE_ISLOCAL( hGraphic, nArg, CORSTATUS_MODULE_GRAPHIC)
#define CHECK_HANDLE_ISLOCAL_PRO( hPro, nArg) CHECK_HANDLE_ISLOCAL( hPro, nArg, CORSTATUS_MODULE_PRO)
#define CHECK_HANDLE_ISLOCAL_XFER( hXfer, nArg) CHECK_HANDLE_ISLOCAL( hXfer, nArg, CORSTATUS_MODULE_XFER)
#define CHECK_HANDLE_ISLOCAL_CAB( hCAB, nArg) CHECK_HANDLE_ISLOCAL( hCAB, nArg, CORSTATUS_MODULE_CAB)
#define CHECK_HANDLE_ISLOCAL_PIXPRO( hPixPro, nArg) CHECK_HANDLE_ISLOCAL( hPixPro, nArg, CORSTATUS_MODULE_PIXPRO)
#define CHECK_HANDLE_ISLOCAL_VIC( hVIC, nArg) CHECK_HANDLE_ISLOCAL( hVIC, nArg, CORSTATUS_MODULE_VIC)
#define CHECK_HANDLE_ISLOCAL_BUFFER( hBuffer, nArg) CHECK_HANDLE_ISLOCAL( hBuffer, nArg, CORSTATUS_MODULE_BUFFER)
#define CHECK_HANDLE_ISLOCAL_CAM( hCam, nArg) CHECK_HANDLE_ISLOCAL( hCam, nArg, CORSTATUS_MODULE_CAM)
#define CHECK_HANDLE_ISLOCAL_KERNEL( hKernel, nArg) CHECK_HANDLE_ISLOCAL( hKernel, nArg, CORSTATUS_MODULE_KERNEL)
#define CHECK_HANDLE_ISLOCAL_LUT( hLut, nArg) CHECK_HANDLE_ISLOCAL( hLut, nArg, CORSTATUS_MODULE_LUT)
#define CHECK_HANDLE_ISLOCAL_VIEW( hView, nArg) CHECK_HANDLE_ISLOCAL( hView, nArg, CORSTATUS_MODULE_VIEW)
#define CHECK_HANDLE_ISLOCAL_VOC( hVOC, nArg) CHECK_HANDLE_ISLOCAL( hVOC, nArg, CORSTATUS_MODULE_VOC)
#define CHECK_HANDLE_ISLOCAL_GIO( hGio, nArg) CHECK_HANDLE_ISLOCAL( hGio, nArg, CORSTATUS_MODULE_GIO)
#define CHECK_HANDLE_ISLOCAL_COUNTER( hCounter, nArg) CHECK_HANDLE_ISLOCAL( hCounter, nArg, CORSTATUS_MODULE_COUNTER)
#define CHECK_HANDLE_ISLOCAL_OBJECT( hObject, nArg) CHECK_HANDLE_ISLOCAL( hObject, nArg, CORSTATUS_MODULE_OBJECT)
#define CHECK_HANDLE_ISLOCAL_STREAM( hStream, nArg) CHECK_HANDLE_ISLOCAL( hStream, nArg, CORSTATUS_MODULE_STREAM)
#define CHECK_HANDLE_ISLOCAL_PARAM( hParam, nArg) CHECK_HANDLE_ISLOCAL( hParam, nArg, CORSTATUS_MODULE_PARAM)
#define CHECK_HANDLE_ISLOCAL_SERIAL( hSerial, nArg) CHECK_HANDLE_ISLOCAL( hSerial, nArg, CORSTATUS_MODULE_SERIAL)
#define CHECK_HANDLE_ISLOCAL_EVENTINFO( hEventInfo, nArg) CHECK_HANDLE_ISLOCAL( hEventInfo, nArg, CORSTATUS_MODULE_EVENTINFO)
#define CHECK_HANDLE_ISLOCAL_FEATURE( hFeature, nArg) CHECK_HANDLE_ISLOCAL( hFeature, nArg, CORSTATUS_MODULE_FEATURE)
#define CHECK_HANDLE_ISLOCAL_ACQDEVICE( hAcqDevice, nArg) CHECK_HANDLE_ISLOCAL( hAcqDevice, nArg, CORSTATUS_MODULE_ACQDEVICE)
#define CHECK_HANDLE_IS_ACCESSIBLE_BUFFER( hBuffer, nArg) CHECK_HANDLE_IS_ACCESSIBLE( hBuffer, nArg, CORSTATUS_MODULE_BUFFER)
// Use these macros when checking a handle inside or outside its own module.
#define CHECK_HANDLE_ISLOCAL_MOD( hAcq, nArg, module) CHECK_HANDLE_ISLOCAL( hAcq, nArg, module)
//
// New method to be used
// Example: status = VALIDATE_HANDLE( handle, type)
//
#define VALIDATE_HANDLE_GENERIC( hHandle)\
(CORHANDLE_IS_BAD_PTR( hHandle) || (CORHANDLE_TYPE( hHandle) != CORHANDLE_TYPE_GENERIC) ?\
CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_INVALID_HANDLE, CORHANDLE_TYPE_GENERIC, 0):\
CORSTATUS_OK)
#define VALIDATE_HANDLE_SERVER( hHandle)\
(CORHANDLE_IS_BAD_PTR( hHandle) || (CORHANDLE_TYPE( hHandle) != CORHANDLE_TYPE_SERVER) ?\
CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_INVALID_HANDLE, CORHANDLE_TYPE_SERVER, 0):\
CORSTATUS_OK)
#define VALIDATE_HANDLE( hHandle, hType)\
(CORHANDLE_IS_BAD_PTR( hHandle) || (CORHANDLE_TYPE( hHandle) != hType || CORHANDLE_INFO( hHandle) == 0) ?\
CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_INVALID_HANDLE, hType, 0):\
CORSTATUS_OK)
#define VALIDATE_HANDLE_TYPE( hHandle, hType)\
(CORHANDLE_IS_BAD_PTR( hHandle) || (CORHANDLE_TYPE( hHandle) != hType) ?\
CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_INVALID_HANDLE, hType, 0):\
CORSTATUS_OK)
#define VALIDATE_HANDLE_ANY_TYPE( hHandle)\
(CORHANDLE_IS_BAD_PTR( hHandle) ?\
CORSTATUS_BUILD( CORSTATUS_LEVEL_ERR, CORSTATUS_INVALID_HANDLE, 0, 0):\
CORSTATUS_OK)
#define VALIDATE_HANDLE_ACQ2( hAcq) VALIDATE_HANDLE( hAcq, CORHANDLE_TYPE_SUBS_ACQ2)
#define VALIDATE_HANDLE_ACQ1( hAcq) VALIDATE_HANDLE( hAcq, CORHANDLE_TYPE_SUBS_ACQ)
#define VALIDATE_HANDLE_ACQ( hAcq) ((VALIDATE_HANDLE_ACQ1(hAcq)!=CORSTATUS_OK) ? VALIDATE_HANDLE_ACQ2(hAcq) : CORSTATUS_OK)
#define VALIDATE_HANDLE_DISPLAY( hDisplay) VALIDATE_HANDLE( hDisplay, CORHANDLE_TYPE_SUBS_DISPLAY)
#define VALIDATE_HANDLE_GRAPHIC( hGraphic) VALIDATE_HANDLE( hGraphic, CORHANDLE_TYPE_SUBS_GRAPHIC)
#define VALIDATE_HANDLE_PRO( hPro) VALIDATE_HANDLE( hPro, CORHANDLE_TYPE_SUBS_PRO)
#define VALIDATE_HANDLE_XFER( hXfer) VALIDATE_HANDLE( hXfer, CORHANDLE_TYPE_SUBS_XFER)
#define VALIDATE_HANDLE_CAB( hCAB) VALIDATE_HANDLE( hCAB, CORHANDLE_TYPE_SUBS_CAB)
#define VALIDATE_HANDLE_PIXPRO( hPixPro) VALIDATE_HANDLE( hPixPro, CORHANDLE_TYPE_SUBS_PIXPRO)
#define VALIDATE_HANDLE_VIC( hVIC) VALIDATE_HANDLE( hVIC, CORHANDLE_TYPE_RES_VIC)
#define VALIDATE_HANDLE_BUFFER( hBuffer) VALIDATE_HANDLE( hBuffer, CORHANDLE_TYPE_RES_BUFFER)
#define VALIDATE_HANDLE_MULTIBUFFER(hBuffer) VALIDATE_HANDLE( hBuffer, CORHANDLE_TYPE_RES_MULTIBUFFER)
#define VALIDATE_HANDLE_CAM( hCam) VALIDATE_HANDLE( hCam, CORHANDLE_TYPE_RES_CAM)
#define VALIDATE_HANDLE_KERNEL( hKernel) VALIDATE_HANDLE( hKernel, CORHANDLE_TYPE_RES_KERNEL)
#define VALIDATE_HANDLE_LUT( hLut) VALIDATE_HANDLE( hLut, CORHANDLE_TYPE_RES_LUT)
#define VALIDATE_HANDLE_VIEW( hView) VALIDATE_HANDLE( hView, CORHANDLE_TYPE_SUBS_VIEW)
#define VALIDATE_HANDLE_VOC( hVOC) VALIDATE_HANDLE( hVOC, CORHANDLE_TYPE_RES_VOC)
#define VALIDATE_HANDLE_PCI_DEVICE( hPciDevice) VALIDATE_HANDLE_TYPE( hPciDevice, CORHANDLE_TYPE_RES_PCI_DEVICE)
#define VALIDATE_HANDLE_FILE( hFile) VALIDATE_HANDLE( hFile, CORHANDLE_TYPE_RES_FILE)
#define VALIDATE_HANDLE_GIO( hGio) VALIDATE_HANDLE( hGio, CORHANDLE_TYPE_SUBS_GIO)
#define VALIDATE_HANDLE_COUNTER( hCounter) VALIDATE_HANDLE( hCounter, CORHANDLE_TYPE_SUBS_COUNTER)
#define VALIDATE_HANDLE_OBJECT( hObject) VALIDATE_HANDLE( hObject, CORHANDLE_TYPE_RES_OBJECT)
#define VALIDATE_HANDLE_STREAM( hStream) VALIDATE_HANDLE( hStream, CORHANDLE_TYPE_RES_STREAM)
#define VALIDATE_HANDLE_PARAM( hParam) VALIDATE_HANDLE( hParam, CORHANDLE_TYPE_RES_PARAM)
#define VALIDATE_HANDLE_SERIAL( hSerial) VALIDATE_HANDLE( hSerial, CORHANDLE_TYPE_SUBS_SERIAL)
#define VALIDATE_HANDLE_EVENTINFO( hEventInfo) VALIDATE_HANDLE( hEventInfo, CORHANDLE_TYPE_RES_EVENTINFO)
#define VALIDATE_HANDLE_FEATURE( hFeature) VALIDATE_HANDLE( hFeature, CORHANDLE_TYPE_RES_FEATURE)
#define VALIDATE_HANDLE_ACQDEVICE( hAcqDevice) VALIDATE_HANDLE( hAcqDevice, CORHANDLE_TYPE_SUBS_ACQDEVICE)
//#define VALIDATE_HANDLE_MULTIBUFFER( hMultiBuffer) VALIDATE_HANDLE( hMultiBuffer, CORHANDLE_TYPE_RES_MULTIBUFFER)
typedef struct COR_PACK __CORHANDLE
{
UINT32 location;
CORADDRESS address;
UINT32 type;
struct __CORHANDLE * localAddress;
} _CORHANDLE, *CORHANDLE, **PCORHANDLE;
typedef struct COR_PACK
{
UINT32 left;
UINT32 top;
UINT32 height;
UINT32 length;
} CORWINDOW, *PCORWINDOW;
typedef _CORHANDLE _CORSERVER, *CORSERVER, **PCORSERVER;
typedef _CORHANDLE _CORPCIDEVICE, *CORPCIDEVICE, **PCORPCIDEVICE;
#define CORSERVER_MAX_NUMBER 1024
#define CORSERVER_MAX_STRLEN 30
#define CORHANDLE_MAX_NUMBER 256
#define CORHANDLE_MAX_STRLEN 30
/* Subsystems */
typedef _CORHANDLE _CORACQ, *CORACQ, **PCORACQ;
typedef _CORHANDLE _CORDISPLAY, *CORDISPLAY, **PCORDISPLAY;
typedef _CORHANDLE _CORGRAPHIC, *CORGRAPHIC, **PCORGRAPHIC;
typedef _CORHANDLE _CORPRO, *CORPRO, **PCORPRO;
typedef _CORHANDLE _CORXFER, *CORXFER, **PCORXFER;
typedef _CORHANDLE _CORCAB, *CORCAB, **PCORCAB;
typedef _CORHANDLE _CORPIXPRO, *CORPIXPRO, **PCORPIXPRO;
typedef _CORHANDLE _CORGIO, *CORGIO, **PCORGIO;
typedef _CORHANDLE _CORCOUNTER, *CORCOUNTER, **PCORCOUNTER;
typedef _CORHANDLE _CORSERIAL, *CORSERIAL, **PCORSERIAL;
typedef _CORHANDLE _CORACQDEVICE, *CORACQDEVICE, **PCORACQDEVICE;
/* Passives ressources */
typedef _CORHANDLE _CORBUFFER, *CORBUFFER, **PCORBUFFER;
typedef _CORHANDLE _CORBUFFERMULTI, *CORBUFFERMULTI, **PCORBUFFERMULTI;
typedef _CORHANDLE _CORVIC, *CORVIC, **PCORVIC;
typedef _CORHANDLE _CORCAM, *CORCAM, **PCORCAM;
typedef _CORHANDLE _CORKERNEL, *CORKERNEL, **PCORKERNEL;
typedef _CORHANDLE _CORLUT, *CORLUT, **PCORLUT;
typedef _CORHANDLE _CORVIEW, *CORVIEW, **PCORVIEW;
typedef _CORHANDLE _CORFILE, *CORFILE, **PCORFILE;
typedef _CORHANDLE _COROBJECT, *COROBJECT, **PCOROBJECT;
typedef _CORHANDLE _CORARRAY, *CORARRAY, **PCORARRAY; // obsolete
typedef _CORHANDLE _CORSTREAM, *CORSTREAM, **PCORSTREAM;
typedef _CORHANDLE _CORPARAM, *CORPARAM, **PCORPARAM;
typedef _CORHANDLE _COREVENTINFO, *COREVENTINFO, **PCOREVENTINFO;
typedef _CORHANDLE _CORFEATURE, *CORFEATURE, **PCORFEATURE;
/* General data types definitions */
typedef UINT32 CORINFOMSGTYPE;
typedef ULONG_PTR CORTRANSAC;
typedef void* CORFUNCHANDLER;
typedef HANDLE COREVENT;
typedef CORSTATUS (CCONV *PCORCALLBACK)( void *context, UINT32 eventType, UINT32 eventCount);
typedef CORSTATUS (CCONV *PCORMANCALLBACK)( UINT32 cmd, void *inData, UINT32 inDataSize, void *outData, UINT32 outDataSize);
typedef CORSTATUS (CCONV *PCORMSGCALLBACK)( UINT32 cmd, void *inData, UINT32 inDataSize, void *outData, UINT32 outDataSize, void *context);
typedef CORSTATUS (CCONV *PCOREVENTINFOCALLBACK)(void* context, COREVENTINFO hEventInfo);
/* Buffer data types definitions */
// (32-bit format descriptor)
//-------------------------------------------------------------------------------
// Bits Description
//-------------------------------------------------------------------------------
// 0-7: WiT compatible type (used by Sapera Processing 4.2 and previous)
// 8-15: Number of bits per pixel
// 16-21: Index (used by internal implementation as an index to function table)
// 22-23: Planar type (specifies the type color space on planar formats)
// 22-23: Color alignement for bicolor and bayer format
// 24-27: Number of pages (specifies the number of pages of planar formats)
// 24-27: Number of formats (for multi-format buffer types like RGB-IR)
// 28: Sign (used by monochrome formats)
// 29: Interlacing (used by LUT formats)
// 30: Color (true if it's a color format)
// 31: Not used
//-------------------------------------------------------------------------------
#define CORDATA_FORMAT_MAX 36
#define CORDATA_FORMAT( nPages, index, nBits)\
(((nPages) << 24) | ((index) << 16) | (nBits << 8))
// Bit fields
// Color: bit 30
#define CORDATA_FORMAT_MONO 0x00000000
#define CORDATA_FORMAT_COLOR 0x40000000
// Interlacing: bit 29
#define CORDATA_FORMAT_NINTRL 0x00000000
#define CORDATA_FORMAT_INTRL 0x20000000
// Sign: bit 28
#define CORDATA_FORMAT_UNSIGNED 0x00000000
#define CORDATA_FORMAT_SIGNED 0x10000000
// Planar type: bits 22-23
#define CORDATA_FORMAT_PLANAR_TYPE_RGB 0x00000000 // 00
#define CORDATA_FORMAT_PLANAR_TYPE_YUV 0x00400000 // 01
#define CORDATA_FORMAT_PLANAR_TYPE_HSV 0x00800000 // 10
#define CORDATA_FORMAT_PLANAR_TYPE_HSI 0x00C00000 // 11
// Note that we only have two bits for the planar type definition. Since the HSV format
// is currently not used in Sapera LT, we use the two bits for LAB instead. If we ever
// need a planar HSV format, however, we will have a problem, as the CORDATA_FORMAT
// values for planar HSV and planar LAB are the same.
#define CORDATA_FORMAT_PLANAR_TYPE_LAB CORDATA_FORMAT_PLANAR_TYPE_HSV
#define CORDATA_FORMAT_COLORI (CORDATA_FORMAT_COLOR | CORDATA_FORMAT_INTRL)
#define CORDATA_FORMAT_COLORNI (CORDATA_FORMAT_COLOR | CORDATA_FORMAT_NINTRL)
// Monochrome data formats
#define CORDATA_FORMAT_MONO8 CORDATA_FORMAT( 1, 1, 8)
#define CORDATA_FORMAT_INT8 (CORDATA_FORMAT_MONO8 | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_UINT8 (CORDATA_FORMAT_MONO8 | CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_MONO16 CORDATA_FORMAT( 1, 2, 16)
#define CORDATA_FORMAT_INT16 (CORDATA_FORMAT_MONO16 | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_UINT16 (CORDATA_FORMAT_MONO16 | CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_MONO24 CORDATA_FORMAT( 1, 3, 24)
#define CORDATA_FORMAT_INT24 (CORDATA_FORMAT_MONO24 | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_UINT24 (CORDATA_FORMAT_MONO24 | CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_MONO32 CORDATA_FORMAT( 1, 4, 32)
#define CORDATA_FORMAT_INT32 (CORDATA_FORMAT_MONO32 | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_UINT32 (CORDATA_FORMAT_MONO32 | CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_MONO64 CORDATA_FORMAT( 1, 5, 64)
#define CORDATA_FORMAT_INT64 (CORDATA_FORMAT_MONO64 | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_UINT64 (CORDATA_FORMAT_MONO64 | CORDATA_FORMAT_UNSIGNED)
// Color RGB data formats
#define CORDATA_FORMAT_RGB5551 (CORDATA_FORMAT( 1, 6, 16) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_RGB565 (CORDATA_FORMAT( 1, 7, 16) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_RGB888 (CORDATA_FORMAT( 1, 8, 24) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_RGB8888 (CORDATA_FORMAT( 1, 9, 32) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_RGB101010 (CORDATA_FORMAT( 1, 10, 32) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_RGB161616 (CORDATA_FORMAT( 1, 11, 48) | CORDATA_FORMAT_COLORI)
// CORDATA_FORMAT_RGB16161616 defined below
// Color HSV data formats
#define CORDATA_FORMAT_HSV (CORDATA_FORMAT( 1, 12, 32) | CORDATA_FORMAT_COLORI)
// Color YUV data formats
// these 4:2:2
#define CORDATA_FORMAT_UYVY (CORDATA_FORMAT( 1, 13, 16) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_YUY2 (CORDATA_FORMAT( 1, 14, 16) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_YVYU (CORDATA_FORMAT( 1, 15, 16) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_YUYV (CORDATA_FORMAT( 1, 16, 16) | CORDATA_FORMAT_COLORI)
//4:1:1 also known as Y41P
#define CORDATA_FORMAT_Y411 (CORDATA_FORMAT( 1, 17, 12) | CORDATA_FORMAT_COLORI)
//2:1:1
#define CORDATA_FORMAT_Y211 (CORDATA_FORMAT( 1, 18, 12) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_YUV (CORDATA_FORMAT( 1, 19, 32) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_AYUV CORDATA_FORMAT_YUV
// Other data formats
#define CORDATA_FORMAT_FLOAT (CORDATA_FORMAT( 1, 20, 32) | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_COMPLEX (CORDATA_FORMAT( 1, 21, 64) | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_POINT (CORDATA_FORMAT( 1, 22, 64) | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_FPOINT (CORDATA_FORMAT( 1, 23, 64) | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_MONO1 (CORDATA_FORMAT( 1, 24, 1))
#define CORDATA_FORMAT_UINT1 (CORDATA_FORMAT_MONO1 | CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_BINARY CORDATA_FORMAT_UINT1
#define CORDATA_FORMAT_HSI (CORDATA_FORMAT( 1, 25, 32) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_IYU1 CORDATA_FORMAT_Y411
#define CORDATA_FORMAT_IYU2 (CORDATA_FORMAT( 1, 26, 24) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_RGB16161616 (CORDATA_FORMAT( 1, 27, 64) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_LAB (CORDATA_FORMAT( 1, 28, 32) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_LAB16161616 (CORDATA_FORMAT( 1, 29, 64) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_LAB101010 (CORDATA_FORMAT( 1, 30, 32) | CORDATA_FORMAT_COLORI)
// Color RGB data format with components ordered as R -> G -> B
// The RGB888 format has components ordered as B -> G -> R
#define CORDATA_FORMAT_RGBR888 (CORDATA_FORMAT( 1, 31, 24) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_BICOLOR88 (CORDATA_FORMAT( 1, 32, 16) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_BICOLOR1616 (CORDATA_FORMAT( 1, 33, 32) | CORDATA_FORMAT_COLORI)
// Multispectral RGB-IR formats
#define CORDATA_FORMAT_RGB888_MONO8 (CORDATA_FORMAT( 2, 34, 32) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_RGB161616_MONO16 (CORDATA_FORMAT( 2, 35, 64) | CORDATA_FORMAT_COLORI)
// add new format here!
// Planar formats (those formats reuse monochrome indexes)
#define CORDATA_FORMAT_RGBP8 (CORDATA_FORMAT( 3, 1, 8) | CORDATA_FORMAT_PLANAR_TYPE_RGB)
#define CORDATA_FORMAT_RGBP16 (CORDATA_FORMAT( 3, 2, 16) | CORDATA_FORMAT_PLANAR_TYPE_RGB)
#define CORDATA_FORMAT_YUVP8 (CORDATA_FORMAT( 3, 1, 8) | CORDATA_FORMAT_PLANAR_TYPE_YUV)
#define CORDATA_FORMAT_YUVP16 (CORDATA_FORMAT( 3, 2, 16) | CORDATA_FORMAT_PLANAR_TYPE_YUV)
#define CORDATA_FORMAT_HSVP8 (CORDATA_FORMAT( 3, 1, 8) | CORDATA_FORMAT_PLANAR_TYPE_HSV)
#define CORDATA_FORMAT_HSVP16 (CORDATA_FORMAT( 3, 2, 16) | CORDATA_FORMAT_PLANAR_TYPE_HSV)
#define CORDATA_FORMAT_HSIP8 (CORDATA_FORMAT( 3, 1, 8) | CORDATA_FORMAT_PLANAR_TYPE_HSI)
#define CORDATA_FORMAT_HSIP16 (CORDATA_FORMAT( 3, 2, 16) | CORDATA_FORMAT_PLANAR_TYPE_HSI)
#define CORDATA_FORMAT_LABP8 (CORDATA_FORMAT( 3, 1, 8) | CORDATA_FORMAT_PLANAR_TYPE_LAB)
#define CORDATA_FORMAT_LABP16 (CORDATA_FORMAT( 3, 2, 16) | CORDATA_FORMAT_PLANAR_TYPE_LAB)
// Data formats used by LUT
#define CORDATA_FORMAT_MONO9 CORDATA_FORMAT( 1, 0, 9)
#define CORDATA_FORMAT_INT9 (CORDATA_FORMAT_MONO9 | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_UINT9 (CORDATA_FORMAT_MONO9 | CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_MONO10 CORDATA_FORMAT( 1, 0, 10)
#define CORDATA_FORMAT_INT10 (CORDATA_FORMAT_MONO10 | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_UINT10 (CORDATA_FORMAT_MONO10 | CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_MONO11 CORDATA_FORMAT( 1, 0, 11)
#define CORDATA_FORMAT_INT11 (CORDATA_FORMAT_MONO11 | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_UINT11 (CORDATA_FORMAT_MONO11 | CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_MONO12 CORDATA_FORMAT( 1, 0, 12)
#define CORDATA_FORMAT_INT12 (CORDATA_FORMAT_MONO12 | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_UINT12 (CORDATA_FORMAT_MONO12 | CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_MONO13 CORDATA_FORMAT( 1, 0, 13)
#define CORDATA_FORMAT_INT13 (CORDATA_FORMAT_MONO13 | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_UINT13 (CORDATA_FORMAT_MONO13 | CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_MONO14 CORDATA_FORMAT( 1, 0, 14)
#define CORDATA_FORMAT_INT14 (CORDATA_FORMAT_MONO14 | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_UINT14 (CORDATA_FORMAT_MONO14 | CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_MONO15 CORDATA_FORMAT( 1, 0, 15)
#define CORDATA_FORMAT_INT15 (CORDATA_FORMAT_MONO15 | CORDATA_FORMAT_SIGNED)
#define CORDATA_FORMAT_UINT15 (CORDATA_FORMAT_MONO15 | CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_COLORI8 (CORDATA_FORMAT( 1, 0, 24) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_COLORI9 (CORDATA_FORMAT( 1, 0, 27) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_COLORI10 (CORDATA_FORMAT( 1, 0, 30) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_COLORI11 (CORDATA_FORMAT( 1, 0, 33) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_COLORI12 (CORDATA_FORMAT( 1, 0, 36) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_COLORI13 (CORDATA_FORMAT( 1, 0, 39) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_COLORI14 (CORDATA_FORMAT( 1, 0, 42) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_COLORI15 (CORDATA_FORMAT( 1, 0, 45) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_COLORI16 (CORDATA_FORMAT( 1, 0, 48) | CORDATA_FORMAT_COLORI)
#define CORDATA_FORMAT_COLORNI8 (CORDATA_FORMAT( 3, 0, 8) | CORDATA_FORMAT_COLORNI)
#define CORDATA_FORMAT_COLORNI9 (CORDATA_FORMAT( 3, 0, 9) | CORDATA_FORMAT_COLORNI)
#define CORDATA_FORMAT_COLORNI10 (CORDATA_FORMAT( 3, 0, 10) | CORDATA_FORMAT_COLORNI)
#define CORDATA_FORMAT_COLORNI11 (CORDATA_FORMAT( 3, 0, 11) | CORDATA_FORMAT_COLORNI)
#define CORDATA_FORMAT_COLORNI12 (CORDATA_FORMAT( 3, 0, 12) | CORDATA_FORMAT_COLORNI)
#define CORDATA_FORMAT_COLORNI13 (CORDATA_FORMAT( 3, 0, 13) | CORDATA_FORMAT_COLORNI)
#define CORDATA_FORMAT_COLORNI14 (CORDATA_FORMAT( 3, 0, 14) | CORDATA_FORMAT_COLORNI)
#define CORDATA_FORMAT_COLORNI15 (CORDATA_FORMAT( 3, 0, 15) | CORDATA_FORMAT_COLORNI)
#define CORDATA_FORMAT_COLORNI16 (CORDATA_FORMAT( 3, 0, 16) | CORDATA_FORMAT_COLORNI)
// Macros to access bitfield information
#define CORDATA_FORMAT_DATADEPTH(format) (((format) >> 8) & 0xFF)
#define CORDATA_FORMAT_INDEX(format) (((format) >> 16) & 0x3F)
#define CORDATA_FORMAT_PLANAR_TYPE(format) (((format) >> 22) & 0x03)
#define CORDATA_FORMAT_NPAGES(format) (((format) >> 24) & 0x0F)
#define CORDATA_FORMAT_IS_SIGNED(format) (((format) & CORDATA_FORMAT_SIGNED)? CORDATA_FORMAT_SIGNED: CORDATA_FORMAT_UNSIGNED)
#define CORDATA_FORMAT_IS_INTRL( format) (((format) & CORDATA_FORMAT_INTRL)? TRUE: FALSE)
#define CORDATA_FORMAT_IS_COLOR( format) (((format) & CORDATA_FORMAT_COLOR)? TRUE: FALSE)
#define CORDATA_FORMAT_SET_SIGN( format, sign)\
{\
if (CORDATA_FORMAT_IS_MONO(format))\
{\
(format) = (format) & ~CORDATA_FORMAT_SIGNED;\
(format) = (format) | (sign);\
}\
}
#define CORDATA_FORMAT_PLANE(format) (CORDATA_FORMAT_NPAGES(format))
#define CORDATA_FORMAT_DATASIZE(format) ((CORDATA_FORMAT_DATADEPTH(format) + 7) >> 3)
#define CORDATA_FORMAT_ALIGNMENT(format) ((format) & 0x00C00000)
#define CORDATA_FORMAT_IS_MULTI(x) ( \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_RGB888_MONO8)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_RGB161616_MONO16)))
#define CORDATA_FORMAT_IS_RGB(x) ( \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_RGB5551)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_RGB565)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_RGB888)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_RGBR888)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_RGB8888)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_RGB101010))|| \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_RGB161616)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_RGB16161616)))
#define CORDATA_FORMAT_IS_BICOLOR(x) ( \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_BICOLOR88)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_BICOLOR1616)))
#define CORDATA_FORMAT_IS_YUV(x) ( \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_UYVY)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_YUY2)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_YVYU)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_YUYV)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_Y411)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_Y211)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_IYU1)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_IYU2)) || \
(CORDATA_FORMAT_INDEX(x) == CORDATA_FORMAT_INDEX(CORDATA_FORMAT_YUV)))
#define CORDATA_FORMAT_IS_MONO(x) ( \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO1)) || \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO8)) || \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO9)) || \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO10)) || \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO11)) || \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO12)) || \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO13)) || \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO14)) || \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO15)) || \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO16)) || \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO24)) || \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO32)) || \
(CORDATA_FORMAT_INDEX( x) == CORDATA_FORMAT_INDEX( CORDATA_FORMAT_MONO64)))
/* Gray-level limits macros */
#define CORDATA_MININT8 (0)
#define CORDATA_MAXINT8 (255)
#define CORDATA_MIDINT8 (128)
#define CORDATA_NEGINT8 (-128)
#define CORDATA_POSINT8 (127)
#define CORDATA_MININT16 (0)
#define CORDATA_MAXINT16 (65535)
#define CORDATA_MIDINT16 (32768)
#define CORDATA_NEGINT16 (-32768)
#define CORDATA_POSINT16 (32767)
#define CORDATA_MININT32 (0)
#define CORDATA_MAXINT32 (4294967295)
#define CORDATA_MIDINT32 (2147483648)
#define CORDATA_NEGINT32 (-2147483647-1)
#define CORDATA_POSINT32 (2147483647)
/* Processing-specific data formats */
#define CORDATA_MIN(format) ((INT32) ( \
format == CORDATA_FORMAT_INT8 ? CORDATA_NEGINT8 : \
format == CORDATA_FORMAT_UINT8 ? CORDATA_MININT8 : \
format == CORDATA_FORMAT_INT16 ? CORDATA_NEGINT16 : \
format == CORDATA_FORMAT_UINT16 ? CORDATA_MININT16 : \
format == CORDATA_FORMAT_INT32 ? CORDATA_NEGINT32 : \
format == CORDATA_FORMAT_UINT32 ? CORDATA_MININT32 : 0))
#define CORDATA_MAX(format) ((INT32) ( \
format == CORDATA_FORMAT_INT8 ? CORDATA_POSINT8 : \
format == CORDATA_FORMAT_UINT8 ? CORDATA_MAXINT8 : \
format == CORDATA_FORMAT_INT16 ? CORDATA_POSINT16 : \
format == CORDATA_FORMAT_UINT16 ? CORDATA_MAXINT16 : \
format == CORDATA_FORMAT_INT32 ? CORDATA_POSINT32 : \
format == CORDATA_FORMAT_UINT32 ? CORDATA_MAXINT32 : 0))
#define CORDATA_MID(format) ((INT32) ( \
format == CORDATA_FORMAT_INT8 ? CORDATA_MIDINT8 : \
format == CORDATA_FORMAT_UINT8 ? CORDATA_MIDINT8 : \
format == CORDATA_FORMAT_INT16 ? CORDATA_MIDINT16 : \
format == CORDATA_FORMAT_UINT16 ? CORDATA_MIDINT16 : \
format == CORDATA_FORMAT_INT32 ? CORDATA_MIDINT32 : \
format == CORDATA_FORMAT_UINT32 ? CORDATA_MIDINT32 : 0))
/* General Data Structure */
typedef union COR_PACK
{
INT32 mono;
struct
{
INT32 red;
INT32 green;
INT32 blue;
} rgb;
struct
{
INT32 h;
INT32 s;
INT32 i;
} hsi;
struct
{
INT32 l;
INT32 a;
INT32 b;
} lab;
struct
{
INT32 h;
INT32 s;
INT32 v;
} hsv;
struct
{
INT32 y;
INT32 u;
INT32 v;
} yuv;
struct
{
INT32 x;
INT32 y;
} point;
FLOAT flt;
struct
{
UINT16 alpha;
UINT16 red;
UINT16 green;
UINT16 blue;
} rgba;
struct
{
UINT16 alpha;
UINT16 l;
UINT16 a;
UINT16 b;
} laba;
struct
{
FLOAT real;
FLOAT imag;
} cplx;
struct
{
FLOAT x;
FLOAT y;
} fpoint;
struct
{
FLOAT red;
FLOAT green;
FLOAT blue;
} frgb;
} CORDATA, *PCORDATA;
/* Point */
typedef struct COR_PACK
{
INT32 x; /* x coordinate */
INT32 y; /* y coordinate */
} CORDATAINFO_POINT, *PCORDATAINFO_POINT;
/* Fpoint */
typedef struct COR_PACK
{
FLOAT x; /* x coordinate */
FLOAT y; /* y coordinate */
} CORDATAINFO_FPOINT, *PCORDATAINFO_FPOINT;
/* Capabilities */
#define CORCAP_GETSIZE( cap) ((cap) & 0xFFFF)
#define CORCAP_GETID( cap) (((cap) >> 16) & 0xFFFF)
/* Parameters */
#define CORPRM_GETSIZE( prm) ((prm) & 0xFFFF)
#define CORPRM_GETID( prm) (((prm) >> 16) & 0xFFFF)
/* Ports */
#define CORPORT_TYPE_USER1 0
#define CORPORT_TYPE_USER2 1
#define CORPORT_TYPE_USER3 2
#define CORPORT_TYPE_USER4 3
#define CORPORT_TYPE_TCPIP 4
#define CORPORT_TYPE_HOST 5
#define CORPORT_TYPE_COBRA 6
#define CORPORT_TYPE_COBRAHOST 7
#define CORPORT_TYPE_COBRAC60 8
#define CORPORT_TYPE_PYTHON 9
#define CORPORT_TYPE_VIPERRGB 10
#define CORPORT_TYPE_VIPERDIG 11
#define CORPORT_TYPE_ICESTORM 12
#define CORPORT_TYPE_VIPERQUAD 13
#define CORPORT_TYPE_X64AN2 14 // Old Rebel entry
#define CORPORT_TYPE_X64ANX2 15 // Old Rebel Host entry
#define CORPORT_TYPE_MAMBA 16
#define CORPORT_TYPE_MAMBAHOST 17
#define CORPORT_TYPE_WIN32_P1 18
#define CORPORT_TYPE_WIN32_P2 19
#define CORPORT_TYPE_WIN32_P3 20
#define CORPORT_TYPE_WIN32_P4 21
#define CORPORT_TYPE_WIN32_P5 22
#define CORPORT_TYPE_WIN32_P6 23
#define CORPORT_TYPE_WIN32_P7 24
#define CORPORT_TYPE_WIN32_P8 25
#define CORPORT_TYPE_BANDITII 26
#define CORPORT_TYPE_BANDITIIHOST 27
#define CORPORT_TYPE_VIPERCAMLINK 28
#define CORPORT_TYPE_X64 29
#define CORPORT_TYPE_X64HOST 30
#define CORPORT_TYPE_X64AN 31
#define CORPORT_TYPE_BOARD_NAME 32 // Used by Driver Template Example.
#define CORPORT_TYPE_PC2C 33
#define CORPORT_TYPE_PC2V 34
#define CORPORT_TYPE_X64LVDS 35
#define CORPORT_TYPE_X64LVDSHOST 36
#define CORPORT_TYPE_WIN32_P9 37
#define CORPORT_TYPE_WIN32_P10 38
#define CORPORT_TYPE_WIN32_P11 39
#define CORPORT_TYPE_WIN32_P12 40
#define CORPORT_TYPE_WIN32_P13 41
#define CORPORT_TYPE_WIN32_P14 42
#define CORPORT_TYPE_WIN32_P15 43
#define CORPORT_TYPE_WIN32_P16 44
#define CORPORT_TYPE_ANACONDA 45
#define CORPORT_TYPE_ANACONDAHOST 46
#define CORPORT_TYPE_PC2V_NS 47
#define CORPORT_TYPE_NEXUS 48
#define CORPORT_TYPE_X64CHL 49
#define CORPORT_TYPE_ARIES 50
#define CORPORT_TYPE_X64NS 51
#define CORPORT_TYPE_X64IPRO 52
#define CORPORT_TYPE_ANACONDALVDS 53
// Port type 54 is now obsolete
#define CORPORT_TYPE_X64IPROE 55
#define CORPORT_TYPE_XRICL 56
#define CORPORT_TYPE_XRILVDS 57
#define CORPORT_TYPE_X64INET 58
#define CORPORT_TYPE_NEXUSCV 59
#define CORPORT_TYPE_CAMGIGE 60
#define CORPORT_TYPE_X64CZM 61
#define CORPORT_TYPE_X64IPROE4X 62
// Next definitions are there so they can be used for new boards
#define CORPORT_TYPE_PC2COMP 63
#define CORPORT_TYPE_XCELERAL4X 64
#define CORPORT_TYPE_XCELERAV4XCL 65
#define CORPORT_TYPE_XCELERAV4XLVDS 66
#define CORPORT_TYPE_XCELERAPX4LVDS 67
#define CORPORT_TYPE_XCELERAXRICL 68
#define CORPORT_TYPE_XCELERAXRILVDS 69
#define CORPORT_TYPE_X64ANLX1 70
#define CORPORT_TYPE_XCELERALX1CL 71
#define CORPORT_TYPE_XCELERAHSPX8 72
#define CORPORT_TYPE_XCELERACLpPX8 73
#define CORPORT_TYPE_BUNGEECLPX4 74
#define CORPORT_TYPE_WIN32_P17 75
#define CORPORT_TYPE_WIN32_P18 76
#define CORPORT_TYPE_WIN32_P19 77
#define CORPORT_TYPE_WIN32_P20 78
#define CORPORT_TYPE_WIN32_P21 79
#define CORPORT_TYPE_WIN32_P22 80
#define CORPORT_TYPE_WIN32_P23 81
#define CORPORT_TYPE_WIN32_P24 82
#define CORPORT_TYPE_WIN32_P25 83
#define CORPORT_TYPE_WIN32_P26 84
#define CORPORT_TYPE_WIN32_P27 85
#define CORPORT_TYPE_WIN32_P28 86
#define CORPORT_TYPE_WIN32_P29 87
#define CORPORT_TYPE_WIN32_P30 88
#define CORPORT_TYPE_WIN32_P31 89
#define CORPORT_TYPE_WIN32_P32 90
#define CORPORT_TYPE_BUNGEECLPX4OPTO 91
#define CORPORT_TYPE_CLPROTOCOL 92
#define CORPORT_TYPE_XCELERACLPX8 93
#define CORPORT_TYPE_XCELERACLHSPX8 94
#define CORPORT_TYPE_BUNGEELVDSLX1 95
#define CORPORT_TYPE_XTIUMCLHSPX8 96
#define CORPORT_TYPE_XTIUMCLPX4 97
#define CORPORT_TYPE_XTIUMCXPPX8 98
#define CORPORT_TYPE_XTIUMCLHSPX4 99
#define CORPORT_TYPE_XTIUMSFPMPX4 100
#define CORPORT_TYPE_XTIUMSFPXPX4 101
#define CORPORT_TYPE_XTIUMCLMX4 102
// Add new ports in numerical order above
#define CORPORT_TYPE_RESERVE_LAST 255
#define CORPORT_TYPE_FIRST CORPORT_TYPE_USER1
#define CORPORT_TYPE_LAST CORPORT_TYPE_RESERVE_LAST
#define CORPORT_TYPE_NTYPES (CORPORT_TYPE_LAST - CORPORT_TYPE_FIRST + 1)
/* STEP */
#define CORSTEP_INCREMENT_LINEAR 0x10000000
#define CORSTEP_INCREMENT_EXPONENTIAL 0x20000000
#define CORSTEP_INCREMENT_VALUE_MASK 0x0FFFFFFF
/* Signals */
#define CORSIGNAL_ACTIVE_LOW 0x00000001
#define CORSIGNAL_ACTIVE_HIGH 0x00000002
#define CORSIGNAL_RISING_EDGE 0x00000004
#define CORSIGNAL_FALLING_EDGE 0x00000008
#define CORSIGNAL_BOTH_EDGE 0x00000010
#define CORSIGNAL_DOUBLE_PULSE_RISING_EDGE 0x00000020
#define CORSIGNAL_DOUBLE_PULSE_FALLING_EDGE 0x00000040
#define CORSIGNAL_LEVEL_TTL 0x00000001
#define CORSIGNAL_LEVEL_422 0x00000002
#define CORSIGNAL_LEVEL_LVDS 0x00000004
#define CORSIGNAL_LEVEL_24VOLTS 0x00000008
#define CORSIGNAL_LEVEL_OPTO 0x00000010
#define CORSIGNAL_LEVEL_LVTTL 0x00000020
#define CORSIGNAL_LEVEL_12VOLTS 0x00000040
#define CORSIGNAL_DIR_INPUT 0x00000001
#define CORSIGNAL_DIR_OUTPUT 0x00000002
#define CORSIGNAL_DIR_TRISTATE 0x00000004
/* File Formats */
#define CORDATA_FILEFORMAT_BMP 0
#define CORDATA_FILEFORMAT_TIF 1
#define CORDATA_FILEFORMAT_TIFF 1
#define CORDATA_FILEFORMAT_CRC 2
#define CORDATA_FILEFORMAT_RAW 3
#define CORDATA_FILEFORMAT_JPG 4
#define CORDATA_FILEFORMAT_JPEG 4
#define CORDATA_FILEFORMAT_AVI 5
#define CORDATA_FILEFORMAT_JPEG_2000 6
#define CORDATA_FILEFORMAT_LAST CORDATA_FILEFORMAT_JPEG_2000
#define CORDATA_FILEFORMAT_UNKNOWN -1
/* Color conversion */
#define CORCOLORCONV_ALIGN_GB_RG 0x00000001
#define CORBAYER_ALIGN_GB_RG CORCOLORCONV_ALIGN_GB_RG // obsolete
#define CORCOLORCONV_ALIGN_BG_GR 0x00000002
#define CORBAYER_ALIGN_BG_GR CORCOLORCONV_ALIGN_BG_GR // obsolete
#define CORCOLORCONV_ALIGN_RG_GB 0x00000004
#define CORBAYER_ALIGN_RG_GB CORCOLORCONV_ALIGN_RG_GB // obsolete
#define CORCOLORCONV_ALIGN_GR_BG 0x00000008
#define CORBAYER_ALIGN_GR_BG CORCOLORCONV_ALIGN_GR_BG // obsolete
#define CORCOLORCONV_ALIGN_RGBG 0x00000010
#define CORCOLORCONV_ALIGN_BGRG 0x00000020
#define CORCOLORCONV_ALIGN_MASK 0x0000003F
#define CORBAYER_ALIGN_MASK CORCOLORCONV_ALIGN_MASK // obsolete
#define CORCOLORCONV_METHOD_1 0x00000010
#define CORBAYER_METHOD_1 CORCOLORCONV_METHOD_1 // obsolete
#define CORCOLORCONV_METHOD_2 0x00000020
#define CORBAYER_METHOD_2 CORCOLORCONV_METHOD_2 // obsolete
#define CORCOLORCONV_METHOD_3 0x00000040
#define CORBAYER_METHOD_3 CORCOLORCONV_METHOD_3 // obsolete
#define CORCOLORCONV_METHOD_4 0x00000080
#define CORBAYER_METHOD_4 CORCOLORCONV_METHOD_4 // obsolete
#define CORCOLORCONV_METHOD_5 0x00000100
#define CORBAYER_METHOD_5 CORCOLORCONV_METHOD_5 // obsolete
#define CORCOLORCONV_METHOD_6 0x00000200
#define CORBAYER_METHOD_6 CORCOLORCONV_METHOD_6 // obsolete
#define CORCOLORCONV_METHOD_7 0x00000400
#define CORBAYER_METHOD_7 CORCOLORCONV_METHOD_7 // obsolete
#define CORCOLORCONV_METHOD_MASK 0x000007F0
#define CORBAYER_METHOD_MASK CORCOLORCONV_METHOD_MASK // obsolete
// For backward compatibility // obsolete
#define CORBAYER_METHOD_INTERPOLATE CORBAYER_METHOD_1
#define CORBAYER_METHOD_GOLDEN_EAGLE CORBAYER_METHOD_2
#define CORBAYER_METHOD_EAGLE CORBAYER_METHOD_3
typedef struct COR_PACK {
INT32 x;
INT32 y;
} MONO64_POINT, *PMONO64_POINT;
/* Version Manager macro */
#define VERSION_WINMAJOR_TO_CRMAJOR(value) ((value & 0x03FF0000) << 6)
#define VERSION_WINMINOR_TO_CORMINOR(value) ((value & 0x00000FFF) << 10)
#define VERSION_WINBETA_TO_CORBETA(value) (value & 0x000003FF)
#include "cunpackd.h"
#endif // _CAPIDEF_H_