📄 grbcaps.h
字号:
#ifndef ___GRBCAPS_H
#define ___GRBCAPS_H
#include <lvcamdef.h>
#include <lvpackon.h>
/** @defgroup GrabberCapabilities Grabber capabilities. */
// Color formats
/** @defgroup LvCap_ColF Color formats definitions
* @ingroup GrabberCapabilities
* Possible color format flags returned when asking for _LvGrabCap::LvGC_ColorFormat capability.
*/
//@{
#define LvCap_ColF_RGB_888a 0x00000001 /**< 32-bit color format, each color (R,G,B) has 8bits and the last 8 bits is for alpha channel (not used). */
#define LvCap_ColF_RGB_555a 0x00000002 /* Obsolete. 16-bit HiColor format where each color (R,G,B) has exactly 5 bits and the last bit is unused. */
#define LvCap_ColF_RGB_565 0x00000004 /**< 16-bit HiColor format where red and blue colors has 5 bits and green color has 6 bits. */
#define LvCap_ColF_Mono_8 0x00000008 /**< 8-bit mono color format, in 8bits is saved black value of current pixel. */
#define LvCap_ColF_RGB_888 0x00000010 /**< 24-bit color format, each color (R,G,B) has 8 bits. */
/* Obsolete. 8-bit color format - YUV.
* @code
* |_U1_|_Y1_|_V1_|_Y2_|_U3_|_Y3_|_V3_|_Y4_| ....
* \_________________/ \_________________/
* Pixel 1 and 2 Pixel 3 and 4
* @endcode
* YUV is not an absolute color space. It is a way of encoding RGB information,
* and the actual color displayed depends on the actual RGB colorants used to
* display the signal. Therefore a value expressed as YUV is only predictable if
* standard RGB colorants are used (i.e. a fixed set of primary chromaticities,
* or particular set of red, green, and blue).
*/
#define LvCap_ColF_YUV_422 0x00000020
/** 24-bit color format - YUV.
* Each pixel includes eight bits for the Y1 value, eight bits for the U1 value, and eight bits for the V1 value.
*/
#define LvCap_ColF_YUV_444 0x00000040
#define LvCap_ColF_Mono_16 0x00000080 /**< 16-bit color format, black value has 16bits. */
#define LvCap_ColF_Mono_15 0x00000100 /**< 15-bit color format, black value has 15bits. */
#define LvCap_ColF_Mono_14 0x00000200 /**< 14-bit color format, black value has 14bits. */
#define LvCap_ColF_Mono_13 0x00000400 /**< 13-bit color format, black value has 13bits. */
#define LvCap_ColF_Mono_12 0x00000800 /**< 12-bit color format, black value has 12bits. */
#define LvCap_ColF_Mono_11 0x00001000 /**< 11-bit color format, black value has 11bits. */
#define LvCap_ColF_Mono_10 0x00002000 /**< 10-bit color format, black value has 10bits. */
#define LvCap_ColF_Mono_9 0x00004000 /**< 9-bit color format, black value has 9bits. */
/** 24-bit color format, each color component has 8bits, image is saved in planar format.
* This mean that in 3x3 pixel 24-bit image you will find:
* @code
* RRRRRRRRRGGGGGGGGGBBBBBBBBB
* @endcode
* each color has 8bits
*/
#define LvCap_ColF_RGBPlanar_8 0x00008000
#define LvCap_ColF_RGBPlanar_10 0x00010000 /**< 48-bit color format, similar to @ref LvCap_ColF_RGBPlanar_8 but each component has 10bits. */
#define LvCap_ColF_RGBPlanar_12 0x00020000 /**< 48-bit color format, similar to @ref LvCap_ColF_RGBPlanar_8 but each component has 12bits. */
#define LvCap_ColF_RGBPlanar_16 0x00040000 /**< 48-bit color format, similar to @ref LvCap_ColF_RGBPlanar_8 but each component has 16bits. */
//@}
// Scaler type
/** @defgroup LvCap_Scaler_Definitions Scaler capability definitions.
* @ingroup GrabberCapabilities
* Possible scaler capabilities which could be acquired when asking for _LvGrapCap::LvGC_Scaler.
*/
//@{
#define LvCap_NoScaler 0x00000000 /**< Grabber has no scaler. */
/** The target supports fine scaling down to pixel or line resolution.
* Several old grabbers supported only binary scaling - it mean by skipping/doubling of
* pixels. This scaling is done by interpolation methods.
*/
#define LvCap_FineScaler 0x00000001 /**< Grabber has capability to do scaling by interpolation method. It means no skipping of pixels as binary scaler do... */
#define LvCap_BinaryScaler 0x00000002 /* obsolete */
#define LvCap_ScaleMax768 0x00000004 /* obsolete */
#define LvCap_HasScaler (LvCap_FineScaler | LvCap_BinaryScaler) /**< Grabber has FineScaler and BinaryScaler. */
//@}
// Lock Mask
#define LvCap_NoLockMask 0x00000000 /* obsolete */
#define LvCap_1BitLockMask 0x00000001 /* obsolete */
// Mirror
/** @defgroup LvCap_Mirror Grabber mirror capability definitions.
* @ingroup GrabberCapabilities
* Possible grabber mirror capabilities after asking for _LvGrapCap::LvGC_Mirror.
* Returns the mirror type supported by the queried target.
*/
//@{
#define LvCap_NoMirror 0x00000000 /**< Grabber has not mirror capability */
#define LvCap_HMirror 0x00000001 /**< Grabber has horizontal mirror capability */
#define LvCap_VMirror 0x00000002 /**< Grabber has vertical mirror capability */
#define LvCap_HVMirror 0x00000003 /**< Grabber has both of horizontal and vertical capabilities */
#define LvCap_MirrorMax768 0x00000004 /* obsolete */
//@}
// Rotation
/** @defgroup LvCap_Rotation Grabber rotation capability definitions.
* @ingroup GrabberCapabilities
* Possible grabber rotation capabilities after asking for _LvGrapCap::LvGC_Rotation.
* It means if grabber could rotate acquired image around some degrees (supported
* is 90,180 and 270 degrees) in clock-wise direction.
*/
//@{
#define LvCap_NoRotation 0x00000000 /**< Grabber has no rotation capability. */
#define LvCap_Rotation_90 0x00000001 /**< Grabber can rotate image around 90 degrees in clock-wise direction. */
#define LvCap_Rotation_180 0x00000002 /**< Grabber can rotate image around 180 degrees in clock-wise direction. */
#define LvCap_Rotation_270 0x00000004 /**< Grabber can rotate image around 270 degrees in clock-wise direction. */
#define LvCap_Rotation_Free 0x00000008
//@}
// BayerDecoder
/** @defgroup LvCap_BayerDec Grabber Bayers decoder capability definitions.
* @ingroup GrabberCapabilities
* Possible BayerDecoder capabilities after asking for _LvGrapCap::LvGC_BayerDecoder.
* Some cameras could send images to grabber as bayer encoded. It mean that every pixel is
* represented as (8/10/12)bits value and right RGB value of each pixel could be counted from
* the neighbourhood pixel state.
* Bayer data could be presented as:
* @code
* R | G | B | G | R | G | B | G | ...
* G | B | G | R | G | B | G | R | ...
* B | G | R | G | B | G | R | G | ...
* G | R | G | B | G | R | G | B | ...
* ...
* @endcode
* and there exist several computation methods how to get full RGB image.
*/
//@{
#define LvCap_NoBayerDec 0x00000000 /**< Grabber has no Bayer decoder capability. */
#define LvCap_BayerDec_8 0x00000001 /**< Bayer decoding from 8 bit monochrome images. */
#define LvCap_BayerDec_10 0x00000002 /**< Bayer decoding from 10 bit monochrome images. */
#define LvCap_BayerDec_12 0x00000004 /**< Bayer decoding from 12 bit monochrome images. */
#define LvCap_BayerLine_1k 0x00000100 /**< Bayer decoding handles up to 1024 pixels per line. */
#define LvCap_BayerLine_2k 0x00000200 /**< Bayer decoding handles up to 2048 pixels per line. */
#define LvCap_BayerLine_Any 0x00000300 /**< Bayer decoding handles any amount of pixels per line. */
//@}
// Color rotation
#define LvCap_NoColorRotation 0x00000000
#define LvCap_ColorRotation 0x00000001
// Gain/Offset
#define LvCap_NoGainOffset 0x00000000
#define LvCap_GainOffset2x12 0x00000001
#define LvCap_GainOffsetRGB 0x00000002
#define LvCap_Gain48 0x00000004
#define LvCap_Gain26 0x00000008
#define LvCap_Offset111 0x00000010
#define LvCap_Offset17 0x00000020
// Input type
#define LvCap_In_None 0x00000000
#define LvCap_In_Analog 0x00000001 /* Analog video. */
#define LvCap_In_Digital 0x00000002 /* Digital video. */
#define LvCap_In_CamLink 0x00000006 /* CamLink cameras. */
#define LvCap_In_LineScan 0x00000008 /* Line scan cameras. */
#define LvCap_In_SlaveCamera 0x00000010 /* Slave cameras. */
#define LvCap_In_DualChannel 0x00000020 /* Dual taps (channel) cameras. */
#define LvCap_In_Progressive 0x00000040 /* Progressive video format. */
#define LvCap_In_Interlaced 0x00000080 /* Interlaced video format. */
#define LvCap_In_Color 0x00000100 /* Colors are handled. */
// Opto properties
/** @defgroup LvCap_Opto Properties of the on-board optocouplers.
* @ingroup GrabberCapabilities
* Possible values returned after asking for __LvGrapCap::LvGC_OptoIn or _LvGrapCap::LvGC_OptoOut.
* The returned value is a combination of the following values.
*/
//@{
#define LvCap_OptoInvPolarity 0x00000001
#define LvCap_OptoNotify 0x00000002 /**< \b Input \b only, the application can be notified about changes in optocoupler input state. */
#define LvCap_OptoCfgPolarity 0x00000004 /**< The active polarity can be configured by the application. */
#define LvCap_DistributedOpto 0x00000008
#define LvCap_TimerOutMux 0x00000010 // Output only, internal use
#define LvCap_SubGrbIO 0x00000020
//@}
// Fpga type
/*? @defgroup LvCap_Fpga The type of firmware on the board.
* @ingroup GrabberCapabilities
* Possible values returned after asking for _LvGrapCap::LvGC_Fpga.
*/
#define LvCap_NoFpga 0x00000000 /*?< No LVSDS handled firmware. */
#define LvCap_FpgaStatic 0x00000001 /*?< The firmware is initialized on system boot and it is not reloaded on LVSDS start. */
#define LvCap_FpgaNeedPwrOff 0x00000002 /*?< After an upgrade, the system needs to be powered off to take the new firmware in effect. */
#define LvCap_FpgaReload 0x00000004 /*?< The firmware is reloaded at each LVSDS startup. */
/** @defgroup LvCap_Lut The type of Look Up Tables (LUT) present on the grabber and that can be set by the application.
* @ingroup GrabberCapabilities
* Possible values returned after asking for _LvGrapCap::LvGC_Lut.
*/
//@{
#define LvCap_NoLut 0x00000000
#define LvCap_MonoLut8bit 0x00000001 /**< Monochrome LUT 8bit. */
#define LvCap_RGBLut8bit 0x00000002 /**< RGB LUT, usually composed by 3 monochrome 8bit LUTs, one per color component. */
#define LvCap_MonoLut12bit 0x00000004 /**< Monochrome LUT 12bit. */
#define LvCap_GammaCorrection 0x00000008 /**< Gamma correction on predefined factors. */
#define LvCap_BayerLUT 0x00000010 /**< LUT used by the on-board Bayer decoder. */
//@}
/** @defgroup LvGC_IrqSet The IRQ definition set to be used to get notifications from LVSDS about IRQs on the current grabber.
* @ingroup GrabberCapabilities
* Possible values returned after asking for _LvGrapCap::LvGC_IrqSet.
*/
//@{
#define LvCap_NoIrq 0x00000000 /**< LVSDS does not support IRQ notification on the current grabber. */
#define LvCap_IrqPicPort 0x00000001 /**< The board supports the PicPort-Analog IRQ set (Int_xxx). */
#define LvCap_IrqPicProdigy 0x00000002 /**< The board supports the PicProdigy IRQ set (PKT_xxx). */
#define LvCap_IrqPicPortPro 0x00000003 /**< The board supports the PicPortPro IRQ set (RXI_xxx). */
#define LvCap_IrqTw6800 0x00000004 /**< The board supports the PicPortLite IRQ set (LXI_xxx). */
/** The board supports the "bus cameras" - PicSight-GigE/PicSight-USB).
* ... when they are accessed through the dedicated per-camera grabber objects (PicSight @a Nickname/PicSight USB @a Nickname)
*/
#define LvCap_IrqCN 0x00000005
#define LvCap_IrqPicPortElite 0x00000006 /**< The board supports the PicPort-Elite IRQ set (YXI_xxx). */
/** The board supports the "bus cameras" - PicSight-GigE/PicSight-USB.
* ... when they are accessed through the generic bus grabber objects (referred to as 'GigE'/ 'USB')
*/
#define LvCap_IrqBus 0x00000007
//@}
// Driver and memory
#define LvCap_NoDriver 0x00000000
#define LvCap_KernelDriver 0x00000001
#define LvCap_UserDriver 0x00000002
#define LvCap_MemNoLock 0x00010000
// Sequencer Dral support
/** @defgroup LvGC_SeqDralSupport_Sequencer DRAL types.
* @ingroup GrabberCapabilities
* Possible returned type after asking for _LvGrapCap::LvGC_SeqDralSupport.
* The Sequencer Dral types supported by the board.
*/
//@{
#define LvCap_NoSequencer 0x00000000
#define LvCap_RPSSequencer 0x00000001 /*?< The Sequencing is implemented with code executed by the onboard controller (PicPort-Analog boards). */
#define LvCap_SeqDral_Base 0x00000002 /**< The board supports Base Sequencing. */
#define LvCap_SeqDral_Enh 0x00000004 /**< The board supports Enhanced Sequencing. */
#define LvCap_SeqDral_Flash 0x00000008 /*?< The board supports Enhanced Sequencing with flash control. */
#define LvCap_SeqDral_FIM 0x00000010 /*?< The board supports Enhanced Sequencing with flash control in frame integration mode */
#define LvCap_SeqDral_FIMAR 0x00000020 /*?< The board supports Enhanced Sequencing with flash control in frame integration mode with integrated asynchronous reset mode. */
#define LvCap_SeqDral_AR 0x00000040 /**< The board supports Enhanced Sequencing with integrated asynchronous reset mode. */
#define LvCap_SeqDral_FrameLock 0x00010000 /**< The board supports locking of buffers. */
#define LvCap_SeqDral_MissTrgDetection 0x00020000 /**< The board supports detection of missing/lost triggers. */
//@}
// LvGC_MiscFlag
/** @defgroup LvGC_Flag Miscellaneous flags.
* @ingroup GrabberCapabilities
* Possible returned values after asking for _LvGrapCap::LvGC_MiscFlag
*/
//@{
#define LvCap_NoFlag 0x00000000
#define LvCap_Flag_BRSFixed 0x00000001
#define LvCap_Flag_Max4MBImg 0x00000002
#define LvCap_Flag_EventSem 0x00000004
#define LvCap_Flag_FrameAbort 0x00000008 /**< Frame could be aborted during its acquiring. */
#define LvCap_Flag_PCI64Address 0x00000010
#define LvCap_Flag_PoCLMonitor 0x00000020 /**< The board implements a PoCL monitoring mechanism. */
//@}
// LvGC_ReserveStatus
#define LvCap_NotReserved 0x00000000
#define LvCap_ReservedToOtherApp 0x00000001
#define LvCap_ReservedToThisApp 0x00000002
// LvGC_Scan_0
#define LvCap_Scn_Interlaced (1<<Scn_Interlaced)
#define LvCap_Scn_NotInterlaced (1<<Scn_NotInterlaced)
/** @defgroup LvGC_Scan_0 Tap formats.
* @ingroup GrabberCapabilities
* Possible returned values after asking for _LvGrapCap::LvGC_Scan_0.
* There exist several methods how to acquire image from camera to grabber.
* Each cameras chip preffer some different method, so the grabber has to support this
* method too.
* Camera could send image data in 1,2 or in 4 taps (channels). Each of these taps could
* use different format of pixel flow.
* - 1 tap format sends the data only in one channel, in format pixel-after-pixel, line-after-line, eg. 1.1,1.2,1.3,...,1.n
* - 2 tap format sends the data using two channels but in several formats:
* - 1.1,1.2,1.3,...,1.n,2.n,...,2.3,2.2,2.1 for every line
* - 1.1,1.2,1.3,...,1.n,2.1,2.2,2.3,...,2.n for every line
* - 1.n,...,1.3,1.2,1.1,2.1,2.2,2.3,...,2.n for every line
* - and so on
* - or using two lines
* - every odd line 1.1,1.2,1.3,1.4,...,1.n
* - every even line 2.1,2.2,2.3,2.4,...,2.n
*
* - 4 tap format sends the data using four pixels using several formats - these formats are combinations of several methods,
* see \b CameraEditor \b manual or see \b CameraEditor \b application for several possibilities
*/
//@{
/** 2-line, 2 taps, 2 lines, Not Interlaced
* @code
* 1.1, 1.2, 1.3, 1.4, ... , 1.n
* 2.1, 2.2, 2.3, 2.4, ... , 2.n
* @endcode
*/
#define LvCap_Scn_ParallelField_NI (1<<Scn_ParallelField_NI)
/** 2-line, 2 taps, 2 lines, Interlaced
* @code
* 1.1, 1.2, 1.3, 1.4, ... , 1.n
* 2.1, 2.2, 2.3, 2.4, ... , 2.n
* @endcode
*/
#define LvCap_Scn_ParallelField_I (1<<Scn_ParallelField_I)
/** 1-line, 2 taps, 1 line, Not Interlaced
* @code
* 1.1, 2.1, 1.2, 2.2, 1.3, 2.3, 1.4, 2.4, ... 1.n, 2.n
* @endcode
*/
#define LvCap_Scn_ParallelPixel_NI (1<<Scn_ParallelPixel_NI)
/** 1-line, 2 taps, 1 line, Interlaced
* @code
* 1.1, 2.1, 1.2, 2.2, 1.3, 2.3, 1.4, 2.4, ... 1.n, 2.n
* @endcode
*/
#define LvCap_Scn_ParallelPixel_I (1<<Scn_ParallelPixel_I)
/** Half-line, 2 taps, 1 line, Not Interlaced
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -