亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? spcaview.c

?? 一個可以實現(xiàn)嵌入式視頻監(jiān)控系統(tǒng)的最新版客戶端軟件。
?? C
?? 第 1 頁 / 共 5 頁
字號:
									0x100;								setVideoPict									(&videopict,									 fd);								break;							case SDLK_c:								videopict.colour -= 0x200;	// = saturation ?								setVideoPict									(&videopict,									 fd);								break;							case SDLK_s:							/* should get the next frame available */								pictFlag = 1;								printf ("\nPicture asked\n");								break;							case SDLK_v:								videopict.colour += 0x200;	// = saturation ?								setVideoPict									(&videopict,									 fd);								break;							case SDLK_w:								videopict.									contrast -= 0x200;	// -contrast								setVideoPict									(&videopict,									 fd);								break;							case SDLK_x:								videopict.									contrast += 0x200;	// +contrast								setVideoPict									(&videopict,									 fd);								break;							case SDLK_g:							timeDown(fd, &videoparam); //up the frame rate by 10ms							break;							case SDLK_h:							timeUp(fd, &videoparam); //slow the frame rate							break;							case SDLK_j:							spcaSetAutoExpo(fd, &videoparam); //toggle autoexpo							break;							case SDLK_d:							qualityUp(fd, &videoparam); // increase quality							break;							case SDLK_f:							qualityDown(fd, &videoparam); //decrease quality							break;							case SDLK_l:							spcaSwitchLightFrequency(fd, &videoparam); //switch light frequency filter							break;							case SDLK_q:								printf ("\nStop asked\n");								run = 0;								break;							default:																break;						}						break;					case SDL_QUIT:						run = 0;						break;				}			}		}					if (audioout) {							SDL_CloseAudioIn(); //stop record 				printf ("free sound buffer\n");						}			if (interval && decodeOn && videoOn){			// set_timer(interval);			SDL_SetTimer((Uint32) 0, NULL);			 }		time = SDL_GetTicks () - time;		printf ("\nUsed %dms for %d images => %dms/image %dfps.\n",			time, framecount, time / framecount,			framecount * 1000 / time);		printf ("Quiting SDL.\n");		printf ("Decoded frames:%d Average decode time: %f\n",			framecount, average_decode_time);		if (grabMethod) {			printf ("unmapping\n");			munmap (pFramebuffer, mmapsize);		}		printf ("closing\n");		close (fd);		printf ("closed\n");		if (outputfile) {			if (!interval)			out_fd->fps = (double) framecount *1000 / time;			AVI_close (out_fd);			printf ("close avi\n");			if (audioout) {							 SDL_QuitAudioIn();				printf ("free sound buffer\n");						}			free (jpegData);			free(dpshDest);		}				pthread_cancel(waitandshoot_id);		pthread_join (waitandshoot_id,NULL);		pthread_cond_destroy(&mypict.cond);		pthread_mutex_destroy(&mypict.mutex);		if (mypict.data)			free(mypict.data);		printf ("Destroy Picture thread ...\n");				/* Shutdown all subsystems */		free (tmp);		//close_libjpeg_decoder ();		printf ("Quiting....\n");		SDL_Quit ();return 0;	 }Uint32 GetVideoBpp (void){	const SDL_VideoInfo *info;	info = SDL_GetVideoInfo();	printf(	"Current display: %d bits-per-pixel\n",info->vfmt->BitsPerPixel);return info->vfmt->BitsPerPixel;}static int setVideoPict (struct video_picture *videopict, int fd){	if (ioctl (fd, VIDIOCSPICT, videopict) < 0) {		perror ("Couldnt get videopict params with VIDIOCSPICT\n");		return -1;	}	printf ("VIDIOCSPICT\n");	printf ("brightness=%d hue=%d color=%d contrast=%d whiteness=%d \n",		videopict->brightness, videopict->hue,		videopict->colour, videopict->contrast, videopict->whiteness);		printf("depth=%d palette=%d \n",videopict->depth, videopict->palette);	  	return 0;}static int readFrame (avi_t *out_fd, long i,unsigned char **jpegData, int *jpegSize, struct Rbuffer *RingBuffer, int maxsound, int *audiolen,	   int *soundbytes, int isaudio, int updown, int compress ){	static int avipos = 0;	unsigned char *dpshDest = NULL;	int ptwrite;	int ptread;	int audiosize=0;	int delta =0 ;	/* got frame i and read the data */	if (AVI_set_video_position (out_fd, i) < 0)		printf ("error get video position\n");		*jpegSize = (int) AVI_frame_size (out_fd, i);		//audiosize = (int)AVI_chunk_size (out_fd, i);		audiosize = *soundbytes;		avipos += audiosize;		delta = ((i+1) * (*soundbytes))-avipos;		//printf("audiosize delta %d \n",delta);		*jpegData = (unsigned char *) realloc (*jpegData, (size_t) *jpegSize);	if (AVI_read_frame (out_fd, *jpegData) < 0)		printf ("error read frame\n");	if (compress){		/* decompress the video stream */		dpshDest = malloc(640*480*3);		dpsh_yuv_decode(*jpegData , dpshDest, jpegSize);		/* restore jpegData size to the uncompressed mode */		*jpegData = (unsigned char *) realloc (*jpegData, (size_t) *jpegSize);		memcpy(*jpegData, dpshDest, *jpegSize);		free(dpshDest);	}	if (isaudio && (*audiolen > 0)) {			SDL_LockAudio();				ptread = RingBuffer->ptread;				ptwrite = RingBuffer->ptwrite;			SDL_UnlockAudio();		if (updown) {			/* upstream */			/* read the audio Byte until no Byte */								if (ptwrite + audiosize < MAXBUFFERSIZE) {					if (AVI_read_audio						    (out_fd, (char *) RingBuffer->buffer+ptwrite,						     audiosize) < 0)							 printf (" Read AVIchunck error \n");						} else {					//printf ("part1 %d, part2 %d \n",MAXBUFFERSIZE-ptwrite,audiosize -( MAXBUFFERSIZE-ptwrite));					if (AVI_read_audio						    (out_fd, (char *) RingBuffer->buffer+ptwrite,						     MAXBUFFERSIZE-ptwrite) < 0)							 printf (" Read AVIpart1 error \n");					if (AVI_read_audio						    (out_fd, (char *) RingBuffer->buffer,						     audiosize -( MAXBUFFERSIZE-ptwrite)) < 0)							 printf (" Read AVIpart2 error \n");							}			SDL_LockAudio();					RingBuffer->ptwrite =  (RingBuffer->ptwrite + audiosize)%MAXBUFFERSIZE;			SDL_UnlockAudio();						*audiolen -= audiosize;								} else {			/* down stream */			/* rewind one sound fragment */			*audiolen += *soundbytes ;			avipos = (maxsound - *audiolen);			if (avipos >= 0)				if (AVI_set_audio_position (out_fd, (long)avipos) < 0)					printf ("error read soundframe down \n");			//printf("audiolenth : %d soundbytes %d aviposition %d\n",*audiolen,audiosize,avipos);		}	}return delta;}#define ADDRESSE(x,y,w) (((y)*(w))+(x))void resize16 (unsigned char *dst,unsigned char *src, int Wd,int Hd,int Ws,int Hs) {	int rx,ry;	int xscale,yscale;	int x,y;	Myrgb24 pixel;	Myrgb16 *output =(Myrgb16*) dst ;	Myrgb24 *input = (Myrgb24*) src ;		xscale =  (Ws << 16)/Wd;	yscale = (Hs << 16)/ Hd;	for (y = 0; y < Hd; y++){		for (x = 0; x < Wd; x++){		 rx = x*xscale >> 16;		 ry = y*yscale >> 16;		 output->blue = input[ADDRESSE((int)rx,(int)ry,Ws)].blue >> 3;		 output->green = input[ADDRESSE((int)rx,(int)ry,Ws)].green >> 2;		 output->red = input[ADDRESSE((int)rx,(int)ry,Ws)].red >> 3;		 output++ ;		}	}			}void resize (unsigned char *dst,unsigned char *src, int Wd,int Hd,int Ws,int Hs) {	int rx,ry;	int xscale,yscale;	int x,y;	Myrgb24 pixel;	Myrgb24 *output =(Myrgb24*) dst ;	Myrgb24 *input = (Myrgb24*) src ;		xscale =  (Ws << 16)/Wd;	yscale = (Hs << 16)/ Hd;	for (y = 0; y < Hd; y++){		for (x = 0; x < Wd; x++){		 rx = x*xscale >> 16;		 ry = y*yscale >> 16;		 memcpy(output++,&input[ADDRESSE((int)rx,(int)ry,Ws)],sizeof(Myrgb24));		}	}			}/* refresh_screen input all palette to RGB24 -> RGB565 */static voidrefresh_screen (unsigned char *src, unsigned char *pict, int format, int width,		int height,int owidth ,int oheight, int size, int autobright){  unsigned int *lpix;  unsigned short  *pix;  int i;  int intwidth = width;  int intheight = height;unsigned char *dst = NULL;/* in case VIDEO_PALETTE_RAW_JPEG nothing todo */	if( format == VIDEO_PALETTE_RAW_JPEG)		return ; 	/* for some strange reason tiny_jpegdecode need 1 macroblok line more ?? */	dst = malloc (width*(height+8)*3);	switch (format) {		case VIDEO_PALETTE_JPEG:{			//libjpeg_decode (dst, src, size, width, height);			jpeg_decode (&dst, src, &intwidth, &intheight);			}			break;		case VIDEO_PALETTE_YUV420P:{				// uncompressed data yuv420P decoder in module				// equalize (src, width, height, 0);				YUV420toRGB ((unsigned char *) src,					     (unsigned char *) dst, width,					     height, 0, 0);			}			break;		case VIDEO_PALETTE_RGB565:		pix = (unsigned short *) src;	  	for (i = 0; i < ((width*height*3) - 3); i += 3)	    		{	      		dst[i] = (*pix & 0x001F) << 3;	      		dst[i + 1] = (*pix & 0x07E0) >> 3;	      		dst[i + 2] = (*pix & 0xF800) >> 8;	      		pix++;	    		}		break;		case VIDEO_PALETTE_RGB32:			lpix = (unsigned int  *) src;	 	 for (i = 0; i < ((width*height*3) - 3); i += 3)	    		{	      		dst[i] = (*lpix & 0x000000FF);	    	  	dst[i + 1] = (*lpix & 0x0000FF00) >> 8;	      		dst[i + 2] = (*lpix & 0x00FF0000) >> 16;	      		lpix++;	    		}		break;		case VIDEO_PALETTE_RGB24:{				// uncompressed data. rgb decoder in module simple copy for display.				memcpy (dst, src, size);			}			break;		default:			break;	}if (autobright)	totmean = get_pic_mean( width, height, dst, 0, 0, 0,				  width, height );/* rezize16 input rgb24 output rgb565 */resize16 (pict,dst,owidth,oheight,width,height) ;		free(dst);}static int isSpcaChip (const char *BridgeName){ 	int i = -1;	int size =0;	//size = strlen(BridgeName)-1;	/* Spca506 return more with channel video, cut it */	//if (size > 10) size = 8;	/* return Bridge otherwhise -1 */	for (i=0; i < MAX_BRIDGE ;i++){		size=strlen(Blist[i].name);		if(strncmp(BridgeName,Blist[i].name,size) == 0) {		printf("Bridge find %s number %d\n",Blist[i].name,i);		 break;		}	}	return i;}static int getStreamId (const char * BridgeName){ 	int i = -1;	int match = -1;/* return Stream_id otherwhise -1 */	if((match=isSpcaChip(BridgeName)) < 0){	 printf("Not an Spca5xx Camera !!\n");	 return match;	 }	switch (match) {		case BRIDGE_SPCA505:		case BRIDGE_SPCA506: 			i= YYUV;			break;		case BRIDGE_SPCA501:			i = YUYV;			break;		case BRIDGE_SPCA508:		 	i = YUVY;			break;		case BRIDGE_SPCA504:		case BRIDGE_SPCA500:		case BRIDGE_SPCA504B:		case BRIDGE_SPCA533:		case BRIDGE_SPCA504C:		case BRIDGE_SPCA536:		case BRIDGE_ZR364XX:		case BRIDGE_ZC3XX:		case BRIDGE_CX11646:		case BRIDGE_SN9CXXX:		case BRIDGE_MR97311:			i = JPEG;			break;		case BRIDGE_ETOMS:		case BRIDGE_SONIX:		case BRIDGE_SPCA561:		case BRIDGE_TV8532:			i = GBRG;			break;		default:			i = -1;			 printf("Unable to find a StreamId !!\n");			break;		}return i;	 } static int probeSize (const char *BridgeName, int *width, int *height){ 	int bridge = -1;	int i;	unsigned int intwidth;	unsigned int intheight;	unsigned int intformat;	int match =0;/* return 1->ok otherwhise -1 */	if ((bridge= isSpcaChip(BridgeName)) < 0) {	printf ("Cannot Probe Size !! maybe not an Spca5xx Camera\n");	return -1;	}		for (i=0; (unsigned int)(GET_EXT_MODES(bridge)[i][0]);i++){		intwidth = GET_EXT_MODES(bridge)[i][0];		intheight = GET_EXT_MODES(bridge)[i][1];		intformat = (GET_EXT_MODES(bridge)[i][2] & 0xF0) >> 4;		if ((intwidth== *width) && (intheight == *height)){			match = 1;		} else {			match = 0;		}				printf("Available Resolutions width %d  heigth %d %s %c\n",			intwidth,intheight,(intformat)?"decoded":"native",			(match)?'*':' ');	}}/* * get_pic_mean:  Calculate the mean value of the pixels in an image. *                      This routine is used for adjusting the values of *                      the pixels to reasonable brightness. * * Arguments:           width, height = Dimensions of the picture *                      buffer    = Buffer to picture. *                      is_rgb    = 1 if the picture is rgb, else 0 *                      start{x,y}, end{x,y} = Region to calculate the *                                  mean of.  This MUST be valid before *                                  being passed in! * * Return values:       Returns the average of all the components if rgb, else *                      the average whiteness of each pixel if B&W */static int g

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美亚洲另类制服综合在线| 久久色在线视频| 国产日韩欧美不卡在线| 成人午夜电影小说| 久久久久亚洲综合| 日本精品视频一区二区| 一区二区三区蜜桃| 亚洲精品一区二区三区精华液 | 欧美日韩一区三区| a4yy欧美一区二区三区| 中文字幕第一区二区| 色哦色哦哦色天天综合| 亚洲一区二区三区四区在线观看| 欧美主播一区二区三区美女| 欧美激情资源网| 欧美午夜免费电影| 国产91清纯白嫩初高中在线观看| www久久精品| 99久久精品免费看国产免费软件| 国产喷白浆一区二区三区| 日韩一区二区三区在线观看 | 国产婷婷色一区二区三区 | wwwwxxxxx欧美| 成人av电影在线| 国产麻豆精品久久一二三| 日韩精品一区二区三区中文不卡| 精品裸体舞一区二区三区| 色婷婷亚洲一区二区三区| 狠狠色丁香婷综合久久| 亚洲欧美视频在线观看视频| 7878成人国产在线观看| 韩国女主播一区| 日韩高清一区在线| 成人欧美一区二区三区1314| 欧美激情在线观看视频免费| 免费看黄色91| 日本久久精品电影| 成人免费av在线| 国产尤物一区二区在线| 成人免费看的视频| 日韩二区三区在线观看| 亚洲电影第三页| 亚洲欧美二区三区| 一区二区欧美在线观看| 精品一区二区三区视频| 免费在线一区观看| 国产乱码精品1区2区3区| 亚洲精品免费视频| 亚洲成a人v欧美综合天堂下载| 国产精品三级久久久久三级| 精品国产乱码久久久久久久久| 波波电影院一区二区三区| 午夜精品福利一区二区三区av | 亚洲男人天堂av| 亚洲人成电影网站色mp4| 精品国产一二三| 精品福利在线导航| 欧美国产97人人爽人人喊| 日韩天堂在线观看| 久久午夜羞羞影院免费观看| 一本一道波多野结衣一区二区| 久99久精品视频免费观看| 亚洲欧洲精品天堂一级| 一区二区三区国产| 天堂久久一区二区三区| 亚洲综合色视频| 亚洲欧美综合另类在线卡通| 666欧美在线视频| 欧美一级片免费看| 亚洲国产精品av| 成人免费一区二区三区在线观看| 国产精品一区一区三区| 国产成人综合网| 在线观看三级视频欧美| 91黄色激情网站| 欧美日韩不卡在线| 99久久综合色| 欧美丰满少妇xxxxx高潮对白| 国产精品电影一区二区三区| 亚洲女厕所小便bbb| 国产一区二区毛片| 粉嫩绯色av一区二区在线观看| 91成人免费电影| 欧美成人福利视频| 国产精品伦一区| 亚洲欧美aⅴ...| 婷婷六月综合亚洲| 国产一区二区三区黄视频 | 91美女精品福利| 精品福利一区二区三区| 91福利视频网站| 欧美综合一区二区| 欧美另类久久久品| 欧美美女视频在线观看| 久久亚洲私人国产精品va媚药| 日日夜夜免费精品| 久久99日本精品| 日韩精品最新网址| 国产精品一二三四| 久久精品综合网| 亚洲一级二级三级| 亚洲免费色视频| 喷水一区二区三区| 免费av成人在线| 日本强好片久久久久久aaa| 欧美96一区二区免费视频| eeuss鲁片一区二区三区在线观看| 精品久久久影院| 日产精品久久久久久久性色| 日韩精品乱码av一区二区| 亚洲天堂av老司机| 在线不卡欧美精品一区二区三区| 欧美日韩一区二区在线观看视频| 偷窥少妇高潮呻吟av久久免费| 亚洲午夜私人影院| 亚洲va韩国va欧美va| 色视频欧美一区二区三区| 日韩手机在线导航| 九色|91porny| 91精选在线观看| 亚洲成人777| 欧美三级乱人伦电影| 亚洲欧洲av一区二区三区久久| 国产精品一区二区你懂的| 欧美一区二区女人| 免费观看日韩av| 91麻豆精品国产自产在线观看一区 | 亚洲成人av电影在线| 欧美丰满美乳xxx高潮www| 亚洲综合图片区| 欧美在线小视频| 中文字幕在线观看一区| 26uuu另类欧美亚洲曰本| 中文天堂在线一区| 亚洲精品视频一区二区| 视频一区视频二区中文字幕| 蜜臀久久久久久久| 国产精品久久午夜| 亚洲成人三级小说| 黑人精品欧美一区二区蜜桃| 成人激情av网| 91蜜桃在线观看| 欧美一区二区三区喷汁尤物| 久久亚洲精品国产精品紫薇| 国产精品伦一区二区三级视频| 欧美一区国产二区| 国产女主播一区| 午夜精品福利一区二区三区蜜桃| 亚洲成人av电影在线| 国产成人精品网址| 欧美日韩国产一二三| 精品国产91乱码一区二区三区| ...xxx性欧美| 精油按摩中文字幕久久| av电影在线观看一区| 欧美美女黄视频| 亚洲色欲色欲www| 久久91精品国产91久久小草| 91久久精品一区二区| 久久综合九色综合97_久久久| 亚洲理论在线观看| 国产精品性做久久久久久| 欧美视频在线播放| 国产精品天干天干在线综合| 日韩成人一级大片| 91麻豆自制传媒国产之光| 欧美精品一区二| 日日欢夜夜爽一区| 在线一区二区视频| 中文字幕免费不卡在线| 免费成人在线视频观看| 在线观看av一区| 成人欧美一区二区三区小说 | 久久久高清一区二区三区| 一区二区国产视频| 国产91丝袜在线播放0| 欧美一级欧美三级| 亚洲高清视频中文字幕| 成人黄页在线观看| 久久精品在这里| 激情综合网天天干| 日韩视频在线一区二区| 亚洲高清免费一级二级三级| 91麻豆精东视频| 综合婷婷亚洲小说| 成人免费黄色大片| 国产精品网站在线播放| 国产成人在线观看| 久久免费偷拍视频| 久久精工是国产品牌吗| 欧美一三区三区四区免费在线看 | 极品美女销魂一区二区三区| 欧美男生操女生| 亚洲美女少妇撒尿| 91啦中文在线观看| 国产精品网站在线观看| 成人午夜免费视频| 国产精品久久久久久久久免费相片 | wwww国产精品欧美| 国产一区二区在线电影|