⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbvision.h

📁 这是一个Linux下的USB摄像头捕捉程序
💻 H
📖 第 1 页 / 共 2 页
字号:
};#define CODEC_SAA7113	7113#define CODEC_SAA7111	7111#define CODEC_BT819	819#define BRIDGE_NT1003	1003#define BRIDGE_NT1004	1004/* Supported Devices: A table for usbvision.c*/static struct usbvision_device_data_st {	int idVendor;	int idProduct;	int Interface;					/* to handle special interface number like BELKIN and Hauppauge WinTV-USB II */	int Codec;	int VideoChannels;	int VideoNorm;	int AudioChannels;	int Radio;	int vbi;	int Tuner;	int TunerType;	int Vin_Reg1;	int Vin_Reg2;	int X_Offset;	int Y_Offset;	int Dvi_yuv;	char *ModelString;} usbvision_device_data[] = {	{}, /* CUSTOM USBVISION DEVICE do not move, must be first */	{0x0A6F, 0x0400, -1, CODEC_SAA7113, 4, VIDEO_MODE_NTSC,  1, 0, 1, 0, 0,                        -1, -1, -1, -1, -1, "Xanboo"}, 	{0x050D, 0x0208,  0, CODEC_SAA7113, 2, VIDEO_MODE_PAL,   1, 0, 1, 0, 0,                        -1, -1,  0,  3,  7, "Belkin USBView II"},	{0x0573, 0x0003, -1, CODEC_SAA7111, 2, VIDEO_MODE_NTSC,  1, 0, 1, 0, 0,                        -1, -1, -1, -1, -1, "USBGear USBG-V1 resp. HAMA USB"},	{0x0573, 0x0400, -1, CODEC_SAA7113, 4, VIDEO_MODE_NTSC,  0, 0, 1, 0, 0,                        -1, -1,  0,  3,  7, "D-Link V100"},	{0x0573, 0x2000, -1, CODEC_SAA7111, 2, VIDEO_MODE_NTSC,  1, 0, 1, 0, 0,                        -1, -1, -1, -1, -1, "X10 USB Camera"},	{0x0573, 0x2d01, -1, CODEC_SAA7113, 2, VIDEO_MODE_NTSC,	 0, 0, 1, 0, 0,			       -1, -1,  0,  3,  7, "Hauppauge USB-Live Model 600"},	{0x0573, 0x2101, -1, CODEC_SAA7113, 2, VIDEO_MODE_PAL, 	 2, 0, 1, 0, 0,                        -1, -1,  0,  3,  7, "Zoran Co. PMD (Nogatech) AV-grabber Manhattan"},	{0x0573, 0x4100, -1, CODEC_SAA7111, 3, VIDEO_MODE_NTSC,  1, 1, 1, 1, TUNER_PHILIPS_NTSC_M,     -1, -1, -1, 20, -1, "Nogatech USB-TV (NTSC) FM"},	{0x0573, 0x4450,  0, CODEC_SAA7113, 3, VIDEO_MODE_PAL,   1, 1, 1, 1, TUNER_PHILIPS_PAL,        -1, -1,  0,  3,  7, "PixelView PlayTv-USB PRO (PAL) FM"},	{0x0573, 0x4550,  0, CODEC_SAA7113, 3, VIDEO_MODE_PAL,   1, 1, 1, 1, TUNER_PHILIPS_PAL,        -1, -1,  0,  3,  7, "ZTV ZT-721 2.4GHz USB A/V Receiver"},	{0x0573, 0x4d00, -1, CODEC_SAA7111, 3, VIDEO_MODE_NTSC,  1, 0, 1, 1, TUNER_PHILIPS_NTSC_M,     -1, -1, -1, 20, -1, "Hauppauge WinTv-USB USA"},	{0x0573, 0x4d01, -1, CODEC_SAA7111, 3, VIDEO_MODE_NTSC,  1, 0, 1, 1, TUNER_PHILIPS_NTSC_M,     -1, -1, -1, -1, -1, "Hauppauge WinTv-USB"},	{0x0573, 0x4d02, -1, CODEC_SAA7111, 3, VIDEO_MODE_NTSC,  1, 0, 1, 1, TUNER_PHILIPS_NTSC_M,     -1, -1, -1, -1, -1, "Hauppauge WinTv-USB (NTSC)"},	{0x0573, 0x4d03, -1, CODEC_SAA7111, 3, VIDEO_MODE_SECAM, 1, 0, 1, 1, TUNER_PHILIPS_SECAM,      -1, -1, -1, -1, -1, "Hauppauge WinTv-USB (SECAM) "},	{0x0573, 0x4d10, -1, CODEC_SAA7111, 3, VIDEO_MODE_NTSC,  1, 1, 1, 1, TUNER_PHILIPS_NTSC_M,     -1, -1, -1, -1, -1, "Hauppauge WinTv-USB (NTSC) FM"},	{0x0573, 0x4d11, -1, CODEC_SAA7111, 3, VIDEO_MODE_PAL,   1, 1, 1, 1, TUNER_PHILIPS_PAL,        -1, -1, -1, -1, -1, "Hauppauge WinTv-USB (PAL) FM"},	{0x0573, 0x4d12, -1, CODEC_SAA7111, 3, VIDEO_MODE_PAL,   1, 1, 1, 1, TUNER_PHILIPS_PAL,        -1, -1, -1, -1, -1, "Hauppauge WinTv-USB (PAL) FM"},	{0x0573, 0x4d2a,  0, CODEC_SAA7113, 3, VIDEO_MODE_NTSC,  1, 1, 1, 1, TUNER_MICROTUNE_4049FM5,  -1, -1,  0,  3,  7, "Hauppague WinTv USB (NTSC) FM Model 602 40201 Rev B285"}, 	{0x0573, 0x4d2b,  0, CODEC_SAA7113, 3, VIDEO_MODE_NTSC,  1, 1, 1, 1, TUNER_MICROTUNE_4049FM5,  -1, -1,  0,  3,  7, "Hauppague WinTv USB (NTSC) FM Model 602 40201 Rev B282"},	{0x0573, 0x4d20,  0, CODEC_SAA7113, 3, VIDEO_MODE_PAL,   1, 1, 1, 1, TUNER_PHILIPS_PAL,        -1, -1,  0,  3,  7, "Hauppauge WinTv-USB II (PAL) FM Model 40201 Rev B226"},	{0x0573, 0x4d21,  0, CODEC_SAA7113, 3, VIDEO_MODE_PAL,   1, 0, 1, 1, TUNER_PHILIPS_PAL,        -1, -1,  0,  3,  7, "Hauppauge WinTv-USB II (PAL)"},	{0x0573, 0x4d22,  0, CODEC_SAA7113, 3, VIDEO_MODE_PAL,   1, 0, 1, 1, TUNER_PHILIPS_PAL,        -1, -1,  0,  3,  7, "Hauppauge WinTv-USB II (PAL) MODEL 566"},	{0x0573, 0x4d23, -1, CODEC_SAA7113, 3, VIDEO_MODE_SECAM, 1, 0, 1, 1, TUNER_PHILIPS_SECAM,      -1, -1,  0,  3,  7, "Hauppauge WinTv-USB (SECAM) 4D23"},	{0x0573, 0x4d26, -1, CODEC_SAA7113, 3, VIDEO_MODE_SECAM, 1, 0, 1, 1, TUNER_PHILIPS_SECAM,      -1, -1,  0,  3,  7, "Hauppauge WinTv-USB (SECAM) Model 40209 Rev B243"},	{0x0573, 0x4d28, -1, CODEC_SAA7113, 3, VIDEO_MODE_PAL,   1, 0, 1, 1, TUNER_ALPS_TSBE1_PAL,     -1, -1,  0,  3,  7, "Hauppauge WinTv-USB (PAL) Model 40204 Rev B283"}, 	{0x0573, 0x4d30, -1, CODEC_SAA7113, 3, VIDEO_MODE_NTSC,  1, 1, 1, 1, TUNER_PHILIPS_NTSC_M,     -1, -1,  0,  3,  7, "Hauppauge WinTv-USB (NTSC) FM Model 40211 Rev B123"},	{0x0573, 0x4d31,  0, CODEC_SAA7113, 3, VIDEO_MODE_PAL,   1, 1, 1, 1, TUNER_PHILIPS_PAL,        -1, -1,  0,  3,  7, "Hauppauge WinTv-USB III (PAL) FM Model 568"},        {0x0573, 0x4d32,  0, CODEC_SAA7113, 3, VIDEO_MODE_PAL,   1, 1, 1, 1, TUNER_PHILIPS_PAL,        -1, -1,  0,  3,  7, "Hauppauge WinTv-USB III (PAL) FM Model 573"},	{0x0573, 0x4d35,  0, CODEC_SAA7113, 3, VIDEO_MODE_PAL,   1, 1, 1, 1, TUNER_MICROTUNE_4049FM5,  -1, -1,  0,  3,  7, "Hauppauge WinTv-USB III (PAL) FM Model 40219 Rev B252"},	{0x0768, 0x0006, -1, CODEC_SAA7113, 3, VIDEO_MODE_NTSC,  1, 1, 1, 1, TUNER_PHILIPS_NTSC_M,     -1, -1,  5,  5, -1, "Camtel Technology USB TV Genie Pro FM Model TVB330"},	{0x07d0, 0x0001, -1, CODEC_SAA7113, 2, VIDEO_MODE_PAL,   0, 0, 1, 0, 0,                        -1, -1,  0,  3,  7, "Digital Video Creator I"},	{0x07d0, 0x0002, -1, CODEC_SAA7111, 2, VIDEO_MODE_NTSC,  0, 0, 1, 0, 0,   		       -1, -1, 82, 20,  7, "Global Village GV-007 (NTSC)"},	{0x07d0, 0x0003, -1, CODEC_SAA7113, 2, VIDEO_MODE_NTSC,  0, 0, 1, 0, 0,                        -1, -1,  0,  3,  7, "Dazzle DVC-50 (NTSC)"},	{0x07d0, 0x0004, -1, CODEC_SAA7113, 2, VIDEO_MODE_PAL,   0, 0, 1, 0, 0,                        -1, -1,  0,  3,  7, "Dazzle DVC-80 (PAL)"},	{0x07d0, 0x0005, -1, CODEC_SAA7113, 2, VIDEO_MODE_SECAM, 0, 0, 1, 0, 0,	   		       -1, -1,  0,  3,  7, "Dazzle FUSION (SECAM)"}, 	{0x2304, 0x0109, -1, CODEC_SAA7111, 3, VIDEO_MODE_SECAM, 1, 0, 1, 1, TUNER_PHILIPS_SECAM,      -1, -1, -1, -1, -1, "Pinnacle Studio PCTV USB (SECAM)"},	{0x2304, 0x0110, -1, CODEC_SAA7111, 3, VIDEO_MODE_PAL,   1, 1, 1, 1, TUNER_PHILIPS_PAL,        -1, -1, -1, -1, -1, "Pinnacle Studio PCTV USB (PAL) FM"},	{0x2304, 0x0111, -1, CODEC_SAA7111, 3, VIDEO_MODE_PAL,   1, 0, 1, 1, TUNER_PHILIPS_PAL,        -1, -1, -1, -1, -1, "Miro PCTV USB"},	{0x2304, 0x0112, -1, CODEC_SAA7111, 3, VIDEO_MODE_NTSC,  1, 1, 1, 1, TUNER_PHILIPS_NTSC_M,     -1, -1, -1, -1, -1, "Pinnacle Studio PCTV USB (NTSC) FM"},	{0x2304, 0x0210, -1, CODEC_SAA7113, 3, VIDEO_MODE_PAL,   1, 1, 1, 1, TUNER_TEMIC_4009FR5_PAL,  -1, -1,  0,  3,  7, "Pinnacle Studio PCTV USB (PAL) FM"},	{0x2304, 0x0212, -1, CODEC_SAA7113, 3, VIDEO_MODE_NTSC,  1, 1, 1, 1, TUNER_TEMIC_4039FR5_NTSC, -1, -1,  0,  3,  7, "Pinnacle Studio PCTV USB (NTSC) FM"},	{0x2304, 0x0214, -1, CODEC_SAA7113, 3, VIDEO_MODE_PAL,   1, 1, 1, 1, TUNER_TEMIC_4009FR5_PAL,  -1, -1,  0,  3,  7, "Pinnacle Studio PCTV USB (PAL) FM"},	{0x2304, 0x0300, -1, CODEC_SAA7113, 2, VIDEO_MODE_NTSC,  1, 0, 1, 0, 0,                        -1, -1,  0,  3,  7, "Pinnacle Studio Linx Video input cable (NTSC)"},	{0x2304, 0x0301, -1, CODEC_SAA7113, 2, VIDEO_MODE_PAL,   1, 0, 1, 0, 0,                        -1, -1,  0,  3,  7, "Pinnacle Studio Linx Video input cable (PAL)"}, 	{0x2304, 0x0419, -1, CODEC_SAA7113, 3, VIDEO_MODE_PAL,   1, 1, 1, 1, TUNER_TEMIC_4009FR5_PAL,  -1, -1,  0,  3,  7, "Pinnacle PCTV Bungee USB (PAL) FM"},	{}  /* Terminating entry */};/* Supported Devices: A table for the usb.c*/static struct usb_device_id usbvision_table [] = {	{ },  /* CUSTOM USBVISION DEVICE do not move, must be first */	{ USB_DEVICE(0x0A6F, 0x0400) },  /* Xanboo */ 	{ USB_DEVICE(0x050d, 0x0208) },  /* Belkin USBView II */	{ USB_DEVICE(0x0573, 0x0003) },  /* USBGear USBG-V1 */	{ USB_DEVICE(0x0573, 0x0400) },  /* D-Link V100 */	{ USB_DEVICE(0x0573, 0x2000) },  /* X10 USB Camera */	{ USB_DEVICE(0x0573, 0x2d01) },  /* Hauppauge USB-Live Model 600 */	{ USB_DEVICE(0x0573, 0x2101) },  /* Zoran Co. PMD (Nogatech) AV-grabber Manhattan */	{ USB_DEVICE(0x0573, 0x4100) },  /* Nogatech USB-TV FM (NTSC) */	{ USB_DEVICE(0x0573, 0x4450) },  /* PixelView PlayTv-USB PRO (PAL) FM */	{ USB_DEVICE(0x0573, 0x4550) },  /* ZTV ZT-721 2.4GHz USB A/V Receiver */	{ USB_DEVICE(0x0573, 0x4d00) },  /* Hauppauge WinTv-USB USA */	{ USB_DEVICE(0x0573, 0x4d01) },  /* Hauppauge WinTv-USB */	{ USB_DEVICE(0x0573, 0x4d02) },  /* Hauppauge WinTv-USB UK */	{ USB_DEVICE(0x0573, 0x4d03) },  /* Hauppauge WinTv-USB France */	{ USB_DEVICE(0x0573, 0x4d10) },  /* Hauppauge WinTv-USB with FM USA radio */	{ USB_DEVICE(0x0573, 0x4d11) },  /* Hauppauge WinTv-USB (PAL) with FM radio */	{ USB_DEVICE(0x0573, 0x4d12) },  /* Hauppauge WinTv-USB UK with FM Radio */	{ USB_DEVICE(0x0573, 0x4d2b) },  /* Hauppague WinTv USB Model 602 40201 Rev B282 */	{ USB_DEVICE(0x0573, 0x4d2a) },  /* Hauppague WinTv USB Model 602 40201 Rev B285 */ 	{ USB_DEVICE(0x0573, 0x4d20) },  /* Hauppauge WinTv-USB II (PAL) FM Model 40201 Rev B226 */	{ USB_DEVICE(0x0573, 0x4d21) },  /* Hauppauge WinTv-USB II (PAL) with FM radio*/	{ USB_DEVICE(0x0573, 0x4d22) },  /* Hauppauge WinTv-USB II (PAL) Model 566 */	{ USB_DEVICE(0x0573, 0x4d23) },  /* Hauppauge WinTv-USB France 4D23*/	{ USB_DEVICE(0x0573, 0x4d26) },  /* Hauppauge WinTv-USB Model 40209 rev B243 */	{ USB_DEVICE(0x0573, 0x4d28) },  /* Hauppauge WinTv-USB Model 40204 rev B283 */	{ USB_DEVICE(0x0573, 0x4d30) },  /* Hauppauge WinTv-USB FM Model 40211 rev B123 */	{ USB_DEVICE(0x0573, 0x4d31) },  /* Hauppauge WinTv-USB III (PAL) with FM radio Model 568 */	{ USB_DEVICE(0x0573, 0x4d32) },  /* Hauppauge WinTv-USB III (PAL) FM Model 573 */	{ USB_DEVICE(0x0573, 0x4d35) },  /* Hauppauge WinTv-USB III (PAL) FM Model 40219 Rev B252 */	{ USB_DEVICE(0x0768, 0x0006) },  /* Camtel Technology USB TV Genie Pro FM Model TVB330 */	{ USB_DEVICE(0x07d0, 0x0001) },  /* Digital Video Creator I */	{ USB_DEVICE(0x07d0, 0x0002) },  /* Global Village GV-007 (NTSC) */	{ USB_DEVICE(0x07d0, 0x0003) },  /* Dazzle DVC-50 (NTSC) */	{ USB_DEVICE(0x07d0, 0x0004) },  /* Dazzle DVC-80 (PAL) */	{ USB_DEVICE(0x07d0, 0x0005) },  /* Dazzle Fusion (SECAM) */ 	{ USB_DEVICE(0x2304, 0x0109) },  /* Pinnacle Studio PCTV USB (SECAM) */	{ USB_DEVICE(0x2304, 0x0110) },  /* Pinnacle Studio PCTV USB (PAL) */	{ USB_DEVICE(0x2304, 0x0111) },  /* Miro PCTV USB */	{ USB_DEVICE(0x2304, 0x0112) },  /* Pinnacle Studio PCTV USB (NTSC) with FM radio */	{ USB_DEVICE(0x2304, 0x0210) },  /* Pinnacle Studio PCTV USB (PAL) with FM radio */	{ USB_DEVICE(0x2304, 0x0212) },  /* Pinnacle Studio PCTV USB (NTSC) with FM radio */	{ USB_DEVICE(0x2304, 0x0214) },  /* Pinnacle Studio PCTV USB (PAL) with FM radio */	{ USB_DEVICE(0x2304, 0x0300) },  /* Pinnacle Studio Linx Video input cable (NTSC) */	{ USB_DEVICE(0x2304, 0x0301) },  /* Pinnacle Studio Linx Video input cable (PAL) */ 	{ USB_DEVICE(0x2304, 0x0419) },  /* Pinnacle PCTV Bungee USB (PAL) FM */	{ }  /* Terminating entry */};#define USBVISION_I2C_CLIENTS_MAX		8struct usb_usbvision {	struct video_device *vdev;         				/* Video Device */	struct video_device *rdev;               			/* Radio Device */	struct video_device *vbi; 					/* VBI Device   */	struct video_audio audio_dev;	        			/* Current audio params */	/* i2c Declaration Section*/	struct i2c_adapter i2c_adap;	struct i2c_algo_usb_data i2c_algo;	struct i2c_client i2c_client;	int i2c_state, i2c_ok;	struct i2c_client *i2c_clients[USBVISION_I2C_CLIENTS_MAX];	struct urb *ctrlUrb;	unsigned char ctrlUrbBuffer[8];	int ctrlUrbBusy;#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20)	devrequest ctrlUrbSetup;#else	struct usb_ctrlrequest ctrlUrbSetup;#endif		wait_queue_head_t ctrlUrb_wq;					// Processes waiting	struct semaphore ctrlUrbLock;	int have_tuner;	int tuner_type;	int bridgeType;							// NT1003 or NT1004	int channel;	int radio;	int video_inputs;						// # of inputs	unsigned long freq;	int AudioMute;	int AudioChannel;	int isocMode;							// format of video data for the usb isoc-transfer	unsigned int nr;						// Number of the device < MAX_USBVISION	/* Device structure */	struct usb_device *dev;	unsigned char iface;						/* Video interface number */	unsigned char ifaceAltActive, ifaceAltInactive;			/* Alt settings */	unsigned char Vin_Reg2_Preset;	struct semaphore lock;	struct timer_list powerOffTimer;#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)	struct tq_struct powerOffTask;#else	struct work_struct powerOffWork;#endif	int power;							/* is the device powered on? */	int user;							/* user count for exclusive use */	int usbvision_used;						/* Is this structure in use? */	int initialized;						/* Had we already sent init sequence? */	int DevModel;							/* What type of USBVISION device we got? */	int streaming;							/* Are we streaming Isochronous? */	int last_error;							/* What calamity struck us? */	int curwidth;							/* width of the frame the device is currently set to*/	int curheight;      						/* height of the frame the device is currently set to*/	int stretch_width;						/* stretch-factor for frame width (from usb to screen)*/	int stretch_height;						/* stretch-factor for frame height (from usb to screen)*/	char *fbuf;							/* Videodev buffer area for mmap*/	int max_frame_size;						/* Bytes in one video frame */	int fbuf_size;							/* Videodev buffer size */	int curFrameNum;						// number of current frame in frame buffer mode	struct usbvision_frame *curFrame;				// pointer to current frame, set by usbvision_find_header	struct usbvision_frame frame[USBVISION_NUMFRAMES];		// frame buffer	int curSbufNum;							// number of current receiving sbuf	struct usbvision_sbuf sbuf[USBVISION_NUMSBUF];			// S buffering	volatile int remove_pending;					/* If set then about to exit */	/* Scratch space from the Isochronous Pipe.*/	unsigned char *scratch;	int scratch_read_ptr;	int scratch_write_ptr;	int scratch_headermarker[USBVISION_NUM_HEADERMARKER];	int scratch_headermarker_read_ptr;	int scratch_headermarker_write_ptr;	int isocstate;	struct video_picture vpic;					/* Picture settings */	struct video_capability vcap;					/* Video capabilities */	struct video_channel vchan;					/* May be used for tuner support */	unsigned char video_endp;					/* 0x82 for USBVISION devices based */	// Overlay stuff:	struct video_buffer vid_buf;	struct video_window vid_win;	int vid_buf_valid;						// Status: video buffer is valid (set)	int vid_win_valid;						// Status: video window is valid (set)	int	overlay;						/*Status: Are we overlaying? */	unsigned int 	clipmask[USBVISION_CLIPMASK_SIZE / 4];	unsigned char   *overlay_base;					/* Virtual base address of video buffer */	unsigned char   *overlay_win;					/* virt start address of overlay window */	struct usbvision_frame overlay_frame;	// Decompression stuff:	unsigned char *IntraFrameBuffer;				/* Buffer for reference frame */	int BlockPos; 							//for test only	int requestIntra;						// 0 = normal; 1 = intra frame is requested;	int lastIsocFrameNum;						// check for lost isoc frames	int isocPacketSize;						// need to calculate usedBandwidth	int usedBandwidth;						// used bandwidth 0-100%, need to set comprLevel	int comprLevel;							// How strong (100) or weak (0) is compression	int lastComprLevel;						// How strong (100) or weak (0) was compression	int usb_bandwidth;						/* Mbit/s */	/* /proc entries, relative to /proc/video/usbvision/ */	struct proc_dir_entry *proc_devdir;		/* Per-device proc directory */	struct proc_dir_entry *proc_info;		/* <minor#>/info entry */	struct proc_dir_entry *proc_register;		/* <minor#>/register entry */	struct proc_dir_entry *proc_frame;		/* <minor#>/frame entry */	struct proc_dir_entry *proc_button;		/* <minor#>/button entry */	struct proc_dir_entry *proc_control;		/* <minor#>/control entry */	/* Statistics that can be overlayed on the screen */	unsigned long isocUrbCount;			// How many URBs we received so far	unsigned long urb_length;			/* Length of last URB */	unsigned long isocDataCount;			/* How many bytes we received */	unsigned long header_count;			/* How many frame headers we found */	unsigned long scratch_ovf_count;		/* How many times we overflowed scratch */	unsigned long isocSkipCount;			/* How many empty ISO packets received */	unsigned long isocErrCount;			/* How many bad ISO packets received */	unsigned long isocPacketCount;			// How many packets we totally got	unsigned long timeInIrq;			// How long do we need for interrupt	int isocMeasureBandwidthCount;	int frame_num;					// How many video frames we send to user	int maxStripLen;				// How big is the biggest strip	int comprBlockPos;	int stripLenErrors;				// How many times was BlockPos greater than StripLen	int stripMagicErrors;	int stripLineNumberErrors;	int ComprBlockTypes[4];};static struct usbvision_v4l_format_st {	int		supported;	int		bytes_per_pixel;	int		depth;	int		format;	char	*desc;} usbvision_v4l_format[] = {    { 0 },    { 1, 1,  8, VIDEO_PALETTE_GREY   , "GREY" },    { 0, 0,  0, VIDEO_PALETTE_HI240  , "HI240" },    { 1, 2, 16, VIDEO_PALETTE_RGB565 , "RGB565" },    { 1, 3, 24, VIDEO_PALETTE_RGB24  , "RGB24" },    { 1, 4, 32, VIDEO_PALETTE_RGB32  , "RGB32" },    { 1, 2, 16, VIDEO_PALETTE_RGB555 , "RGB555" },    { 1, 2, 16, VIDEO_PALETTE_YUV422 , "YUV422" },    { 0, 0,  0, VIDEO_PALETTE_YUYV   , "YUYV" },    { 0, 0,  0, VIDEO_PALETTE_UYVY   , "UYVY" },    { 0, 0,  0, VIDEO_PALETTE_YUV420 , "YUV420" },    { 0, 0,  0, VIDEO_PALETTE_YUV411 , "YUV411" },    { 0, 0,  0, VIDEO_PALETTE_RAW    , "RAW" },    { 1, 2, 16, VIDEO_PALETTE_YUV422P, "YUV422P" },    { 0, 0,  0, VIDEO_PALETTE_YUV411P, "YUV411P" },    { 1, 2, 12, VIDEO_PALETTE_YUV420P, "YUV420P" }, // 1.5 !    { 0, 0,  0, VIDEO_PALETTE_YUV410P, "YUV410P" },    { 0 /* END OF LIST */ },};#define USBVISION_SUPPORTED_PALETTES 16#endif									/* __LINUX_USBVISION_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -