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

📄 vc032x.h

📁 Linux下面摄像头最新源代码:支持200多中摄像头
💻 H
📖 第 1 页 / 共 2 页
字号:
	 P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[VGA].pipe = 3072;    spca50x->mode_cam[VGA].method = 0;    spca50x->mode_cam[VGA].mode = 0;    spca50x->mode_cam[PAL].width = 384;    spca50x->mode_cam[PAL].height = 288;    spca50x->mode_cam[PAL].t_palette =	P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[PAL].pipe = 3072;    spca50x->mode_cam[PAL].method = 1;    spca50x->mode_cam[PAL].mode = 0;        spca50x->mode_cam[SIF].width = 352;    spca50x->mode_cam[SIF].height = 288;    spca50x->mode_cam[SIF].t_palette =	P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[SIF].pipe = 3072;    spca50x->mode_cam[SIF].method = 1;    spca50x->mode_cam[SIF].mode = 0;        spca50x->mode_cam[CIF].width = 320;    spca50x->mode_cam[CIF].height = 240;    spca50x->mode_cam[CIF].t_palette =	 P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[CIF].pipe = 3072;    spca50x->mode_cam[CIF].method = 0;    spca50x->mode_cam[CIF].mode = 1;        spca50x->mode_cam[QPAL].width = 192;    spca50x->mode_cam[QPAL].height = 144;    spca50x->mode_cam[QPAL].t_palette =	P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[QPAL].pipe = 3072;    spca50x->mode_cam[QPAL].method = 1;    spca50x->mode_cam[QPAL].mode = 1;        spca50x->mode_cam[QSIF].width = 176;    spca50x->mode_cam[QSIF].height = 144;    spca50x->mode_cam[QSIF].t_palette =	P_YUV420 | P_RGB32 | P_RGB24 | P_RGB16;    spca50x->mode_cam[QSIF].pipe = 3072;    spca50x->mode_cam[QSIF].method = 1;    spca50x->mode_cam[QSIF].mode = 1;    }static int vc0321_reset(struct usb_spca50x *spca50x){	spca5xxRegWrite(spca50x->dev, 0xa0, 0x00, 0xb04d, NULL, 0);	spca5xxRegWrite(spca50x->dev, 0xa0, 0x01, 0xb301, NULL, 0); 	msleep(100);	spca5xxRegWrite(spca50x->dev, 0xa0, 0x01, 0xb003, NULL, 0);	msleep(100);return 0;}static int vc0321_config(struct usb_spca50x *spca50x){ __u8 tmp2[3];    int sensor = 0;    spca50x->qindex = 1;    vc0321_reset(spca50x);    sensor = vc032x_probe_sensor(spca50x);    switch (sensor) {    	case -1:		PDEBUG(0,"Unknown sensor...");		return -EINVAL;	break;   	case SENSOR_OV7660:		PDEBUG(0, "Find Sensor OV7660");		spca50x->sensor = SENSOR_OV7660;		set_vc0321VGA(spca50x);	break;	case SENSOR_PO3130NC:		PDEBUG(0, "Find Sensor PO3130NC");		spca50x->sensor = SENSOR_PO3130NC;		set_vc0321VGA(spca50x);	break;	case SENSOR_HV7131R:		PDEBUG(0, "Find Sensor HV7131R");		spca50x->sensor = SENSOR_HV7131R;		set_vc0321VGA(spca50x);	break;    };spca5xxRegRead (spca50x->dev, 0x8a, 0x01, 0     , tmp2, 3); udelay(10);spca5xxRegWrite(spca50x->dev, 0x87, 0x00, 0x0f0f, NULL, 0); udelay(10);spca5xxRegRead (spca50x->dev, 0x8b, 0x01, 0     , tmp2, 3); udelay(10);spca5xxRegWrite(spca50x->dev, 0x88, 0x00, 0x0202, NULL, 0); udelay(10);    return 0;}static void vc0321_setquality(struct usb_spca50x *spca50x){    __u8 quality = 0;    quality = (spca50x->qindex) & 0xff;//    spca5xxRegWrite(spca50x->dev, 0xa0, quality, 0x0008, NULL, 0);}static void vc0321_setAutobright(struct usb_spca50x *spca50x){    __u8 autoval = 0;    if (spca50x->autoexpo)	autoval = 0x42;    else	autoval = 0x02;//    spca5xxRegWrite(spca50x->dev, 0xa0, autoval, 0x0180, NULL, 0);}static void vc0321_start(struct usb_spca50x *spca50x){	// __u8 tmp2;    int err = 0;    __u8 *GammaT = NULL;    __u8 *MatrixT = NULL;    /* Assume start use the good resolution from spca50x->mode */    spca5xxRegWrite(spca50x->dev, 0xa0, 0xff, 0xbfec, NULL, 0);    spca5xxRegWrite(spca50x->dev, 0xa0, 0xff, 0xbfed, NULL, 0);    spca5xxRegWrite(spca50x->dev, 0xa0, 0xff, 0xbfee, NULL, 0);    spca5xxRegWrite(spca50x->dev, 0xa0, 0xff, 0xbfef, NULL, 0);    switch (spca50x->sensor) {    	case SENSOR_OV7660:    		GammaT = ov7660_gamma;    		MatrixT = ov7660_matrix;		if (spca50x->mode) {	    		/* 320x240 */			 err = vc0321WriteVector(spca50x, ov7660_initQVGA_data);		} else {	    		/* 640x480 */	   		 err = vc0321WriteVector(spca50x, ov7660_initVGA_data);		}				break;	case SENSOR_PO3130NC:		GammaT = po3130_gamma;    		MatrixT = po3130_matrix;		if (spca50x->mode) {	    		/* 320x240 */			 err = vc0321WriteVector(spca50x, po3130_initQVGA_data);		} else {	    		/* 640x480 */	   		 err = vc0321WriteVector(spca50x, po3130_initVGA_data);		}	err = vc0321WriteVector(spca50x, po3130_rundata);	break;	case SENSOR_HV7131R:		GammaT = hv7131r_gamma;    		MatrixT = hv7131r_matrix;				if (spca50x->mode) {	    		/* 320x240 */			 err = vc0321WriteVector(spca50x, hv7131r_initQVGA_data);		} else {	    		/* 640x480 */	   		 err = vc0321WriteVector(spca50x, hv7131r_initVGA_data);		}		 	break;	default:		PDEBUG(0, "Damned !! no sensor found Bye");		return;	break;    }    if (GammaT && MatrixT){	put_tab_to_reg(spca50x, GammaT, 17, 0xb84a);	put_tab_to_reg(spca50x, GammaT, 17, 0xb85b);	put_tab_to_reg(spca50x, GammaT, 17, 0xb86c);	put_tab_to_reg(spca50x, MatrixT, 9, 0xb82c);			// Seem SHARPNESS		/*		 spca5xxRegWrite(spca50x->dev, 0xa0, 0x80, 0xb80a, NULL, 0);		 spca5xxRegWrite(spca50x->dev, 0xa0, 0xff, 0xb80b, NULL, 0);		 spca5xxRegWrite(spca50x->dev, 0xa0, 0xff, 0xb80e, NULL, 0);		 */		 /* all 0x40 ??? do nothing		 spca5xxRegWrite(spca50x->dev, 0xa0, 0x40, 0xb822, NULL, 0);		  spca5xxRegWrite(spca50x->dev, 0xa0, 0x40, 0xb823, NULL, 0);		   spca5xxRegWrite(spca50x->dev, 0xa0, 0x40, 0xb824, NULL, 0);		 */		 /* Only works for HV7131R ?? 		 spca5xxRegRead (spca50x->dev, 0xa1, 0x01, 0xb881, &tmp2, 1); udelay(10);		 spca5xxRegWrite(spca50x->dev, 0xa0, 0xfe01, 0xb881, NULL, 0);		 spca5xxRegWrite(spca50x->dev, 0xa0, 0x79, 0xb801, NULL, 0);		 */		 /* only hv7131r et ov7660 		 spca5xxRegWrite(spca50x->dev, 0xa0, 0x20, 0xb827, NULL, 0);		 spca5xxRegWrite(spca50x->dev, 0xa0, 0xff, 0xb826, NULL, 0); //ISP_GAIN 80		 spca5xxRegWrite(spca50x->dev, 0xa0, 0x23, 0xb800, NULL, 0); // ISP CTRL_BAS		 */	// set the led on 0x0892 0x0896        spca5xxRegWrite(spca50x->dev, 0x89, 0xffff, 0xfdff, NULL, 0);	msleep(100);    	vc0321_setbrightness(spca50x);    	vc0321_setquality(spca50x);    	vc0321_setAutobright(spca50x);    }}static void vc0321_stopN(struct usb_spca50x *spca50x){    struct usb_device *dev = spca50x->dev;    spca5xxRegWrite(dev, 0x89, 0xffff, 0xffff, NULL, 0);    spca5xxRegWrite(dev, 0xa0, 0x01, 0xb301, NULL, 0);    spca5xxRegWrite(dev, 0xa0, 0x09, 0xb003, NULL, 0);}static void vc0321_stop0(struct usb_spca50x *spca50x){    struct usb_device *dev = spca50x->dev;    spca5xxRegWrite(dev, 0x89, 0xffff, 0xffff, NULL, 0);}static void vc0321_shutdown(struct usb_spca50x *spca50x){/*    struct usb_device *dev = spca50x->dev;    __u8 buffread;    spca5xxRegWrite(dev, 0x89, 0xffff, 0xffff, NULL, 0);    spca5xxRegWrite(dev, 0xa0, 0x01, 0xb301, NULL, 0);    spca5xxRegWrite(dev, 0xa0, 0x09, 0xb303, NULL, 0);    spca5xxRegWrite(dev, 0x89, 0xffff, 0xffff, NULL, 0);*/}static __u16 vc0321_getcolors(struct usb_spca50x *spca50x){//Nothingreturn spca50x->colour;}static void vc0321_setcolors(struct usb_spca50x *spca50x){//Nothing spca50x->colour = 0;}static void vc0321_set50HZ(struct usb_spca50x *spca50x) {     switch (spca50x->sensor) {      case SENSOR_OV7660: 	  vc0321WriteVector(spca50x, ov7660_50HZ);      break;      default:           break;     } } static void vc0321_set60HZ(struct usb_spca50x *spca50x) {     switch (spca50x->sensor) {      case SENSOR_OV7660: 	  vc0321WriteVector(spca50x, ov7660_60HZ);      break;      default:           break;     } }static void vc0321_setNoFliker(struct usb_spca50x *spca50x) {     switch (spca50x->sensor) {      case SENSOR_OV7660: 	  vc0321WriteVector(spca50x, ov7660_NoFliker);      break;      default:      break;     }  } static int vc0321_sofdetect(struct usb_spca50x *spca50x,struct spca50x_frame *frame, unsigned char *cdata,int *iPix, int seqnum, int *datalength){				if (cdata[0] == 0xFF && cdata[1] == 0xD8) {					*iPix = 46 ;		     PDEBUG(5,			   "vc0321 header packet found datalength %d !!",			   *datalength );		    *datalength -= *iPix;		    return 0;		   		} 		*iPix = 0;		PDEBUG(5, "vc0321 process packet %d datalength %d ",seqnum+1,*datalength);		return (seqnum +1);}#endif				// VC032XUSB_H

⌨️ 快捷键说明

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