📄 v2u_defs.h
字号:
/**************************************************************************** * * $Id: v2u_defs.h,v 1.6 2008/05/28 20:30:17 zhilin Exp $ * * Copyright (C) 2003-2008 Epiphan Systems, Inc. All rights reserved. * * VGA2USB common defines and types * ****************************************************************************/#ifndef _VGA2USB_DEFS_H_#define _VGA2USB_DEFS_H_ 1/* Required system headers */#ifndef __KERNEL__# ifdef _WIN32# include <windows.h># include <winioctl.h># else /* Unix */# include <stdint.h># include <sys/ioctl.h># endif /* Unix */#endif /* __KERNEL__ *//* Structure packing */#ifdef _WIN32# include <pshpack1.h>#endif#ifndef V2U_PACKED# ifdef _WIN32# define V2U_PACKED# else# define V2U_PACKED __attribute__((packed))# endif#endif/* Basic data types */#ifdef _WIN32typedef __int8 V2U_INT8;typedef unsigned __int8 V2U_UINT8;typedef __int16 V2U_INT16;typedef unsigned __int16 V2U_UINT16;typedef __int32 V2U_INT32;typedef unsigned __int32 V2U_UINT32;typedef __int64 V2U_INT64;typedef unsigned __int64 V2U_UINT64;#elsetypedef int8_t V2U_INT8;typedef uint8_t V2U_UINT8;typedef int16_t V2U_INT16;typedef uint16_t V2U_UINT16;typedef int32_t V2U_INT32;typedef uint32_t V2U_UINT32;typedef int64_t V2U_INT64;typedef uint64_t V2U_UINT64;#endiftypedef V2U_UINT16 V2U_UCS2;typedef V2U_UINT64 V2U_TIME;typedef V2U_INT32 V2U_BOOL;#define V2U_TRUE 1#define V2U_FALSE 0typedef struct v2u_size { V2U_INT32 width; V2U_INT32 height;} V2U_PACKED V2USize;typedef struct v2u_rect { V2U_INT32 x; V2U_INT32 y; V2U_INT32 width; V2U_INT32 height;} V2U_PACKED V2URect;typedef struct v2u_str_ucs2 { V2U_UCS2* buffer; /* not necessarily NULL-terminated */ V2U_UINT32 len; /* string length, in characters */ V2U_UINT32 maxlen; /* buffer size, in characters */} V2U_PACKED V2UStrUcs2;/* * V2U_VideoMode * * Used as parameter of IOCTL_VGA2USB_VIDEOMODE or comes in captured * video frame header. * * Note that the vertical refresh rate is measured in milliHertz. * That is, the number 59900 represents 59.9 Hz. */typedef struct ioctl_videomode { V2U_INT32 width; /* screen width, pixels */ V2U_INT32 height; /* screen height, pixels */ V2U_INT32 vfreq; /* vertical refresh rate, mHz */} V2U_PACKED V2U_VideoMode;/* * The following flag can be OR'ed with the bpp field to request the * bitmap data to be sent in bottom-up format. By default, the bitmap * data are stored in the top-down order. The flags are preserved on * return. */#define V2U_GRABFRAME_FLAGS_MASK 0xffff0000 /* Bits reserved for flags */#define V2U_GRABFRAME_BOTTOM_UP_FLAG 0x80000000/* If a valid algoruthm code is set, the image will be scaled image to * width/height in V2U_GrabFrame or crop.width/crop.height in V2U_GrabFrame2. * If no bits in V2U_GRABFRAME_SCALE_MASK are set, no scaling is performed. * If an unknown algorithm code is specified, a default one will be used. * Scaling works for the following capture formats: * * V2U_GRABFRAME_FORMAT_Y8 * V2U_GRABFRAME_FORMAT_RGB4 * V2U_GRABFRAME_FORMAT_RGB8 * V2U_GRABFRAME_FORMAT_RGB16 * V2U_GRABFRAME_FORMAT_BGR16 * V2U_GRABFRAME_FORMAT_RGB24 * V2U_GRABFRAME_FORMAT_YUY2 * V2U_GRABFRAME_FORMAT_2VUY * * Scaling is available since version 3.10.9 */#define V2U_GRABFRAME_SCALE_MASK 0x00070000 /* Scale algorithm mask */#define V2U_GRABFRAME_SCALE_NEAREST 0x00010000 /* Nearest-neighbour *//* Bits that define image format */#define V2U_GRABFRAME_FORMAT_MASK 0x0000ffff /* Image format mask */#define V2U_GRABFRAME_FORMAT_RGB_MASK 0x0000001f /* Mask for RGB formats */#define V2U_GRABFRAME_FORMAT_RGB4 0x00000004#define V2U_GRABFRAME_FORMAT_RGB8 0x00000008 /* R2:G3:B3 */#define V2U_GRABFRAME_FORMAT_RGB16 0x00000010#define V2U_GRABFRAME_FORMAT_RGB24 0x00000018#define V2U_GRABFRAME_FORMAT_YUY2 0x00000100 /* same as YUV422 */#define V2U_GRABFRAME_FORMAT_YV12 0x00000200 /* same as YUV420P */#define V2U_GRABFRAME_FORMAT_2VUY 0x00000300#define V2U_GRABFRAME_FORMAT_BGR16 0x00000400#define V2U_GRABFRAME_FORMAT_Y8 0x00000500#define V2U_GRABFRAME_FORMAT_CRGB24 0x00000600#define V2U_GRABFRAME_FORMAT_CYUY2 0x00000700#define V2U_GRABFRAME_FORMAT_BGR24 0x00000800#define V2U_GRABFRAME_FORMAT_CBGR24 0x00000900/* Old flag names, defined here for backward compatibility */ #define V2U_GRABFRAME_PALETTE_MASK V2U_GRABFRAME_FORMAT_MASK#define V2U_GRABFRAME_PALETTE_RGB_MASK V2U_GRABFRAME_FORMAT_RGB_MASK#define V2U_GRABFRAME_PALETTE_RGB4 V2U_GRABFRAME_FORMAT_RGB4#define V2U_GRABFRAME_PALETTE_RGB8 V2U_GRABFRAME_FORMAT_RGB8#define V2U_GRABFRAME_PALETTE_RGB16 V2U_GRABFRAME_FORMAT_RGB16#define V2U_GRABFRAME_PALETTE_RGB24 V2U_GRABFRAME_FORMAT_RGB24#define V2U_GRABFRAME_PALETTE_YUY2 V2U_GRABFRAME_FORMAT_YUY2#define V2U_GRABFRAME_PALETTE_YV12 V2U_GRABFRAME_FORMAT_YV12#define V2U_GRABFRAME_PALETTE_2VUY V2U_GRABFRAME_FORMAT_2VUY#define V2U_GRABFRAME_PALETTE_BGR16 V2U_GRABFRAME_FORMAT_BGR16#define V2U_GRABFRAME_PALETTE_Y8 V2U_GRABFRAME_FORMAT_Y8#define V2U_GRABFRAME_PALETTE_BGR24 V2U_GRABFRAME_FORMAT_BGR24/* Macro to determine bpp (bits per pixel) for partifular grab format */#define V2UPALETTE_2_BPP(p) \ (((p) & V2U_GRABFRAME_FORMAT_RGB_MASK) ? \ ((p) & V2U_GRABFRAME_FORMAT_RGB_MASK) : \(((((p) & V2U_GRABFRAME_FORMAT_MASK) == V2U_GRABFRAME_FORMAT_BGR16) || \ (((p) & V2U_GRABFRAME_FORMAT_MASK) == V2U_GRABFRAME_FORMAT_YUY2) || \ (((p) & V2U_GRABFRAME_FORMAT_MASK) == V2U_GRABFRAME_FORMAT_2VUY)) ? 16 : \((((p) & V2U_GRABFRAME_FORMAT_MASK) == V2U_GRABFRAME_FORMAT_YV12) ? 12 : \ ((((p) & V2U_GRABFRAME_FORMAT_MASK) == V2U_GRABFRAME_FORMAT_Y8) ? 8 : \ (((((p) & V2U_GRABFRAME_FORMAT_MASK) == V2U_GRABFRAME_FORMAT_CRGB24) || \ (((p) & V2U_GRABFRAME_FORMAT_MASK) == V2U_GRABFRAME_FORMAT_CBGR24)) ? 24 : \ ((((p) & V2U_GRABFRAME_FORMAT_MASK) == V2U_GRABFRAME_FORMAT_CYUY2) ? 16 : \ ((((p) & V2U_GRABFRAME_FORMAT_MASK) == V2U_GRABFRAME_FORMAT_BGR24) ? 24 : 0 )))))))/** * Restore previous packing */#ifdef _WIN32# include <poppack.h>#endif#endif /* _VGA2USB_DEFS_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -