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

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

?? 張昆修改.c

?? 攝像頭ov7620讀取 并支持ARM芯片 獲取圖像到LCD
?? C
?? 第 1 頁 / 共 3 頁
字號:
/****************************************Copyright (c)**************************************************
**                                        cc.c
**                   功能:在英蓓特實驗箱STN LCD上顯示兩個ov511攝像頭測距數字的程序
**                                  
**
**--------------File Info-------------------------------------------------------------------------------

** Created By:陳超	            刪掉試試編譯,,程序能編譯成功,,在試驗箱能運行就行了
** Created date: 2008-03-07 ,,估計是宏定義和頭文件+子函數一起配套的,,少了的話可能有的子函數不能工作,
** Version: v1.0
** Descriptions:

********************************************************************************************************/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#include <linux/videodev.h>
#include <sys/ioctl.h>
#include<string.h>
#include <fcntl.h>
#include <linux/fb.h>
#include <sys/mman.h>
#include <math.h>


#define ERR_FRAME_BUFFER	       1
#define ERR_VIDEO_OPEN		       2
#define ERR_VIDEO_GCAP		       3
#define ERR_VIDEO_GPIC		       4
#define ERR_VIDEO_SPIC		       5
#define ERR_SYNC		           6
#define ERR_FRAME_USING            7
#define ERR_GET_FRAME              8

typedef struct	_fb_v4l
{
	// FrameBuffer 信息
	int fbfd ;							                  // FrameBuffer設備句柄
	struct fb_var_screeninfo vinfo;		                  // FrameBuffer屏幕可變的信息
	struct fb_fix_screeninfo finfo;		                  // FrameBuffer固定不變的信息
	char *fbp;							                  // FrameBuffer 內存指針
	// video4linux信息  
	int fd;							                      // 
	struct video_capability 	capability;	                  // 
	struct video_buffer 	    buffer;			              // 
	struct video_window   	window;			              // 
	struct video_channel 	channel[8];	                  // 
	struct video_picture 	picture;		              // 
	struct video_tuner 	    tuner;			              // 
	struct video_audio 	    audio[8];		              // 
	struct video_mmap 	    mmap;				          // 
	struct video_mbuf 	    mbuf;				          // 
	unsigned char 	        *map;					      //mmap方式獲取數據時,數據的首地址				
	int frame_current;
	int frame_using[VIDEO_MAX_FRAME];
}fb_v4l1,fb_v4l2;                                                  //定義新類型名fb_v4l,它代表上面定義的結構體類型

#define DEFAULT_PALETTE VIDEO_PALETTE_RGB24

#define FB_FILE "/dev/fb/0"   //設備路徑和設備名  device/framebuffer/設備號0


#define V4L_FILE0 "/dev/v4l/video0"
#define V4L_FILE1 "/dev/v4l/video1"
#define X_SIZE 960
#define Y_SIZE 240

/*********************************************************************************************************
** Function name: get_grab_frame
** Descriptions:  獲取圖像幀,該函數調用了VIDIOCMCAPTURE的ioctl,獲取一幀圖片
** Input: *vd1,   參數指針    
**        frame,  幀號
** Output : 無
** Created by:函數名: ioctl 
  功 能: 控制I/O設備 
  用 法: int ioctl(int handle, int cmd,[int *argdx, int argcx]); 

** Created Date: 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int get_grab_frame1(fb_v4l1 *vd1, int frame)     //vd1是一個指向fb_v4l類型結構體的指針變量
{
	if (vd1->frame_using[frame]) {
		fprintf(stderr, "get_grab_frame: frame %d is already used.\n", frame);
		return ERR_FRAME_USING;
	}

	vd1->mmap.frame = frame;       
	if (ioctl(vd1->fd, VIDIOCMCAPTURE, &(vd1->mmap)) < 0)
	{
		perror("v4l_grab_frame");
		return ERR_GET_FRAME;
	}
	vd1->frame_using[frame] = 1;
	vd1->frame_current = frame;
	return 0;
}
int get_grab_frame2(fb_v4l2 *vd2, int frame)     //vd2是一個指向fb_v4l類型結構體的指針變量
{
	if (vd2->frame_using[frame]) {
		fprintf(stderr, "get_grab_frame: frame %d is already used.\n", frame);
		return ERR_FRAME_USING;
	}

	vd2->mmap.frame = frame;
	if (ioctl(vd2->fd, VIDIOCMCAPTURE, &(vd2->mmap)) < 0)
	{
		perror("v4l_grab_frame");
		return ERR_GET_FRAME;
	}
	vd2->frame_using[frame] = 1;
	vd2->frame_current = frame;
	return 0;
}
/*********************************************************************************************************
** Function name: get_next_frame
** Descriptions: 獲取下一幀的圖像
** Input: *vd1 ,參數指針函數名: ioctl 
  功 能: 控制I/O設備 
  用 法: int ioctl(int handle, int cmd,[int *argdx, int argcx]); 

** Output : 無
** Created by:
** Created Date: 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int get_first_frame1(fb_v4l1 *vd1)
{
	int ret;

	vd1->frame_current = 0;
	ret = get_grab_frame1( vd1, 0 );
	if ( ret<0 )
		return ret;
	// 等待幀同步
	if (ioctl(vd1->fd, VIDIOCSYNC, &(vd1->frame_current)) < 0) 
	{   perror("v4l1_grab_sync");
	return ERR_SYNC;
	}
	vd1->frame_using[vd1->frame_current] = 0 ;		
	return (0);
}
int get_first_frame2(fb_v4l2 *vd2)
{
	int ret;

	vd2->frame_current = 0;
	ret = get_grab_frame2( vd2, 0 );
	if ( ret<0 )
		return ret;
	// 等待幀同步
	if (ioctl(vd2->fd, VIDIOCSYNC, &(vd2->frame_current)) < 0) 
	{   perror("v4l2_grab_sync");
	return ERR_SYNC;
	}
	vd2->frame_using[vd2->frame_current] = 0 ;		
	return (0);
}

/*********************************************************************************************************
** Function name: get_next_frame
** Descriptions: 獲取下一幀的圖像
** Input: *vd ,參數指針
** Output : 返回0表示正常完成返回。
** Created by:
** Created Date: 
**-----------------------------------------------------------     123123123123123-------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int get_next_frame1(fb_v4l1 *vd1)
{
	int ret;
	vd1->frame_current ^= 1;                                         // ^為位 異或算式運算符
	ret = get_grab_frame1( vd1,vd1->frame_current);			        // 獲取圖像數據
	//if( ret < 0 )
	//	return ret;

	if (ioctl(vd1->fd, VIDIOCSYNC, &(vd1->frame_current)) < 0)        // 等待幀同步
	{   perror("v4l1_grab_sync");
	return ERR_SYNC;
	}
	vd1->frame_using[vd1->frame_current] = 0 ;
	return 0;	
}
int get_next_frame2(fb_v4l2 *vd2)
{
	int ret;
	vd2->frame_current ^= 1;                                         // ^為位 異或算式運算符
	ret = get_grab_frame2( vd2,vd2->frame_current);			        // 獲取圖像數據
	//if( ret < 0 )
	//	return ret;

	if (ioctl(vd2->fd, VIDIOCSYNC, &(vd2->frame_current)) < 0)        // 等待幀同步
	{   perror("v4l2_grab_sync");
	return ERR_SYNC;
	}
	vd2->frame_using[vd2->frame_current] = 0 ;
	return 0;	
}
/*********************************************************************************************************
** Function name: get_frame_address
** Descriptions: 獲取幀地址.調用該函數可以獲取當前幀的緩沖地址
** Input: *vd ,參數指針
** Output : 返回幀圖像數據的指針地址.
** Created by:
** Created Date: 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
unsigned char *get_frame_address1(fb_v4l1 *vd1)
{
	return (vd1->map + vd1->mbuf.offsets[vd1->frame_current]); 	// 從MAP內存中找到當前幀的起始指針
}
unsigned char *get_frame_address2(fb_v4l1 *vd1)
{
	return (vd1->map + vd1->mbuf.offsets[vd1->frame_current]); 	// 從MAP內存中找到當前幀的起始指針
}
unsigned char *get_frame_address3(fb_v4l2 *vd2)
{
	return (vd2->map + vd2->mbuf.offsets[vd2->frame_current]); 	// 從MAP內存中找到當前幀的起始指針
}
unsigned char *get_frame_address4(fb_v4l2 *vd2)
{
	return (vd2->map + vd2->mbuf.offsets[vd2->frame_current]); 	// 從MAP內存中找到當前幀的起始指針
}
/*******************************************************************************************************************
**把rgb顏色,,,填充到內存framebuffer1中
/**************************************** ****************************************************************************/

void rgb_to_framebuffer1( fb_v4l1 *vd1,				                          // 
						int width,int height,			                      // 圖像大小
						int xoffset,int yoffset,		                      // 圖像在Framebuffer偏移位置
						unsigned char *img_ptr )                        // 圖像數據指針
{
	int x,y;
	int location;
	// Figure out where in memory to put the pixel

	for ( y = 0; y < height; y++ )				                  // 縱掃描
	{
		for ( x = 0; x < width; x++ ) 		              // 行掃描		
		{ 
			location = (x + xoffset) +
				(y + yoffset) * vd1->finfo.line_length;		
			*((unsigned short int*)(vd1->fbp + location )) = *img_ptr++;
		}
	}
}
void rgb_to_framebuffer2( fb_v4l2 *vd2,				                          // 
						int width,int height,			                      // 圖像大小
						int xoffset,int yoffset,		                      // 圖像在Framebuffer偏移位置
						unsigned char *img_ptr )                        // 圖像數據指針
{
	int x,y;
	int location;
	// Figure out where in memory to put the pixel

	for ( y = 0; y < height; y++ )				                  // 縱掃描
	{
		for ( x = 0; x < width; x++ ) 		              // 行掃描		
		{ 
			location = (x + xoffset) +
				(y + yoffset) * vd2->finfo.line_length;		
			*((unsigned short int*)(vd2->fbp + location )) = *img_ptr++;
		}
	}
}
/*********************************************************************************************************
** Function name: open_framebuffer
** Descriptions: 該函數用于初始化FrameBuffer設備,在該函數中打開FrameBuffer設備,并將設備影射到內存
** Input: *ptr,打開Framebuffer設備路徑指針
**        *vd ,參數指針
** Output : 返回非0值表示出錯
** Created by:
** Created Date: 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int open_framebuffer1(char *ptr,fb_v4l1 *vd1)
{
	int fbfd,screensize;
	// Open the file for reading and writing
	fbfd = open( ptr, O_RDWR);
	if (fbfd < 0) 
	{
		printf("Error: cannot open framebuffer device.%x\n",fbfd);
		return ERR_FRAME_BUFFER;
	}
	printf("The framebuffer device was opened successfully1.\n");

	vd1->fbfd = fbfd;	                                                   // 保存打開FrameBuffer設備的句柄

	// Get fixed screen information	獲取FrameBuffer固定不變的信息
	if (ioctl(fbfd, FBIOGET_FSCREENINFO, &vd1->finfo)) 
	{
		printf("Error: reading fixed information1.\n");
		return ERR_FRAME_BUFFER;
	}

	// Get variable screen information 獲取FrameBuffer屏幕可變的信息
	if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vd1->vinfo)) 
	{
		printf("Error: reading variable information1.\n");
		return ERR_FRAME_BUFFER;
	}

	printf("%dx%d, %dbpp, xoffset=%d ,yoffset=%d \n", vd1->vinfo.xres, 
		vd1->vinfo.yres, vd1->vinfo.bits_per_pixel,vd1->vinfo.xoffset,vd1->vinfo.yoffset );

	// Figure out the size of the screen in bytes用字節
	screensize = vd1->vinfo.xres * vd1->vinfo.yres * vd1->vinfo.bits_per_pixel / 8;

	// Map the device to memory 映射設備到內存
	vd1->fbp = (char *)mmap(0,screensize,PROT_READ|PROT_WRITE,MAP_SHARED,fbfd,0); // 影射Framebuffer設備到內存
	if ((int)vd1->fbp == -1) 
	{
		printf("Error: failed to map framebuffer device to memory1.\n");
		return ERR_FRAME_BUFFER;
	}
	printf("The framebuffer device was mapped to memory successfully1.\n");
	return  0;
}
/*********************************************************************************************************
** Function name: open_framebuffer
** Descriptions: 該函數用于初始化FrameBuffer設備,在該函數中打開FrameBuffer設備,并將設備影射到內存
** Input: *ptr,打開Framebuffer設備路徑指針
**        *vd1 ,參數指針
** Output : 返回非0值表示出錯
** Created by:
** Created Date: 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int open_framebuffer2(char *ptr,fb_v4l2 *vd2)
{
	int fbfd,screensize;
	// Open the file for reading and writing
	fbfd = open( ptr, O_RDWR);
	if (fbfd < 0) 
	{
		printf("Error: cannot open framebuffer device2.%x\n",fbfd);
		return ERR_FRAME_BUFFER;
	}
	printf("The framebuffer device was opened successfully2.\n");

	vd2->fbfd = fbfd;	                                                   // 保存打開FrameBuffer設備的句柄

	// Get fixed screen information	獲取FrameBuffer固定不變的信息
	if (ioctl(fbfd, FBIOGET_FSCREENINFO, &vd2->finfo)) 
	{
		printf("Error: reading fixed information2.\n");
		return ERR_FRAME_BUFFER;
	}

	// Get variable screen information 獲取FrameBuffer屏幕可變的信息
	if (ioctl(fbfd, FBIOGET_VSCREENINFO, &vd2->vinfo)) 
	{
		printf("Error: reading variable information2.\n");
		return ERR_FRAME_BUFFER;
	}

	printf("%dx%d, %dbpp, xoffset=%d ,yoffset=%d \n", vd2->vinfo.xres, 
		vd2->vinfo.yres, vd2->vinfo.bits_per_pixel,vd2->vinfo.xoffset,vd2->vinfo.yoffset );

	// Figure out the size of the screen in bytes用字節
	screensize = vd2->vinfo.xres * vd2->vinfo.yres * vd2->vinfo.bits_per_pixel / 8;

	// Map the device to memory
	vd2->fbp = (char *)mmap(0,screensize,PROT_READ|PROT_WRITE,MAP_SHARED,fbfd,0); // 影射Framebuffer設備到內存
	if ((int)vd2->fbp == -1) 
	{
		printf("Error: failed to map framebuffer device to memory2.\n");
		return ERR_FRAME_BUFFER;
	}
	printf("The framebuffer device was mapped to memory successfully2.\n");
	return  0;
}
/*********************************************************************************************************
** Function name: open_video
** Descriptions: 通過該函數初始化視頻設備
** Input: *fileptr,打開的文件名指針
** 	   *vd,     參數指針
** 	   dep,     像素深度
** 	   pal,     調色板
** 	   width,   寬度
** 	   height,  高度
** Output : 無
** Created by:
** Created Date: 
**-------------------------------------------------------------------------------------------------------
** Modified by:
** Modified Date: 
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
int open_video1( char *fileptr,fb_v4l1 *vd1 ,int dep,int pal,int width,int height)
{
	// 打開視頻設備
	if ((vd1->fd = open(fileptr, O_RDWR)) < 0) 
	{
		perror("v4l1_open:");
		return ERR_VIDEO_OPEN;
	}
	// 獲取設備
	if (ioctl(vd1->fd, VIDIOCGCAP, &(vd1->capability)) < 0) 
	{
		perror("v4l1_get_capability:");
		return ERR_VIDEO_GCAP;
	}
	// 獲取圖象  
	if (ioctl(vd1->fd, VIDIOCGPICT, &(vd1->picture)) < 0) 
	{
		perror("v4l1_get_picture");
		return ERR_VIDEO_GPIC;
	}
	// 設置圖象
	vd1->picture.palette = pal;		// 調色板
	vd1->picture.depth = dep;			// 像素深度

	vd1->mmap.format =pal;
	if (ioctl(vd1->fd, VIDIOCSPICT, &(vd1->picture)) < 0) 
	{
		perror("v4l1_set_palette");
		return ERR_VIDEO_SPIC;
	}
	// 
	vd1->mmap.width = width; 		// width;
	vd1->mmap.height = height; 	// height;
	vd1->mmap.format = vd1->picture.palette; 

	vd1->frame_current = 0;
	vd1->frame_using[0] = 0;
	vd1->frame_using[1] = 0;

	// 獲取緩沖影射信息
	if (ioctl(vd1->fd, VIDIOCGMBUF, &(vd1->mbuf)) < 0) 
	{
		perror("v4l1_get_mbuf");
		return -1;
	}

	// 建立設備內存影射
	vd1->map = mmap(0, vd1->mbuf.size, PROT_READ|PROT_WRITE, MAP_SHARED, vd1->fd, 0);
	if ( vd1->map < 0) 
	{
		perror("v4l1_mmap_init:mmap");
		return -1;
	}
	printf("The video device was opened successfully1.\n");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2020国产精品久久精品美国| 粉嫩绯色av一区二区在线观看| 青青草97国产精品免费观看无弹窗版 | 亚洲视频资源在线| 亚洲午夜成aⅴ人片| 人人狠狠综合久久亚洲| 国产成人精品亚洲午夜麻豆| 色老汉一区二区三区| 日韩精品在线网站| 日韩毛片一二三区| 美女精品一区二区| 99热99精品| 日韩免费看的电影| 亚洲日本在线a| 国内精品伊人久久久久影院对白| 99在线视频精品| 欧美一级一级性生活免费录像| 欧美经典一区二区| 日韩精品一区第一页| 成人久久18免费网站麻豆| 911国产精品| 17c精品麻豆一区二区免费| 日本不卡不码高清免费观看| 成人av一区二区三区| 日韩亚洲欧美中文三级| 亚洲视频一区在线| 国产精品一区在线| 欧美剧情片在线观看| 综合欧美一区二区三区| 久久99精品国产麻豆婷婷洗澡| 91黄色小视频| 欧美激情一区不卡| 蜜臀av一区二区在线观看| 91成人网在线| 久久久精品黄色| 蜜臀av一区二区在线观看| 日本电影欧美片| 国产精品毛片久久久久久久| 国产一区二区在线视频| 欧美巨大另类极品videosbest | 成人免费视频网站在线观看| 日韩欧美高清dvd碟片| 一区二区免费看| 成人美女视频在线看| 欧美大胆人体bbbb| 日本怡春院一区二区| 在线观看视频欧美| 中文字幕一区二区三区av| 国产传媒欧美日韩成人| 欧美zozo另类异族| 男人的天堂久久精品| 91久久精品午夜一区二区| 国产精品丝袜久久久久久app| 韩国精品一区二区| 日韩一级片网站| 日本欧美大码aⅴ在线播放| 欧美午夜在线观看| 亚洲美女精品一区| 99精品热视频| 亚洲人成影院在线观看| 99riav久久精品riav| 中文字幕中文字幕一区| 成人精品鲁一区一区二区| 久久婷婷国产综合精品青草| 九九久久精品视频| 欧美成人精品福利| 国产一区二区主播在线| 久久精品男人天堂av| 国产在线精品一区二区不卡了| 日韩三级电影网址| 久久精品国产77777蜜臀| 日韩视频一区二区三区| 麻豆成人av在线| 亚洲精品一区二区三区福利| 韩国精品在线观看| 国产欧美视频一区二区三区| 激情欧美一区二区| 久久久久国色av免费看影院| 成人免费高清视频| 国产精品久久影院| 91麻豆产精品久久久久久| 艳妇臀荡乳欲伦亚洲一区| 欧洲一区在线电影| 首页国产欧美日韩丝袜| 欧美一区二区三区播放老司机| 美腿丝袜亚洲综合| 久久嫩草精品久久久精品一| 国产成人h网站| 亚洲免费看黄网站| 欧美精品九九99久久| 精品一区二区久久久| 国产视频911| 99re视频精品| 亚洲丰满少妇videoshd| 日韩免费一区二区| 丰满白嫩尤物一区二区| 亚洲精品老司机| 欧美一区欧美二区| 国产一区二区福利| 亚洲欧美一区二区三区孕妇| 欧美日韩精品一区二区在线播放 | 精品国产一区二区亚洲人成毛片 | 国产精品每日更新在线播放网址| 一本久久精品一区二区| 亚洲成a人v欧美综合天堂| 欧美成人一区二区| 91看片淫黄大片一级在线观看| 亚洲电影第三页| 久久新电视剧免费观看| 色偷偷一区二区三区| 蜜桃视频一区二区三区在线观看| 欧美激情综合五月色丁香| 欧美写真视频网站| 国产一区欧美日韩| 玉足女爽爽91| 亚洲精品一区二区三区香蕉| 91亚洲永久精品| 蜜桃av噜噜一区二区三区小说| 国产精品久久久久四虎| 欧美女孩性生活视频| 国产91丝袜在线观看| 性做久久久久久免费观看| 国产欧美综合色| 这里只有精品视频在线观看| 成人美女在线视频| 蓝色福利精品导航| 一区二区三区免费网站| 国产网站一区二区| 91精品免费观看| 99国产精品久久| 国产一区二区三区在线观看免费| 亚洲无人区一区| 国产精品久久久久久福利一牛影视 | 中文在线一区二区| 日韩一区二区三区视频在线| 99久久久免费精品国产一区二区| 青青青伊人色综合久久| 一区二区三区在线播放| 久久伊人中文字幕| 欧美日韩精品一区二区三区 | 亚洲国产精品久久久久婷婷884| 久久久国际精品| 欧美精品免费视频| 91浏览器打开| 盗摄精品av一区二区三区| 美国十次了思思久久精品导航| 亚洲欧美国产77777| 欧美国产一区二区在线观看 | 国产麻豆视频一区| 日韩在线一二三区| 玉米视频成人免费看| 国产精品女主播av| 久久久久国产精品人| 日韩欧美一区中文| 欧美老肥妇做.爰bbww视频| 91啪九色porn原创视频在线观看| 国产成人啪免费观看软件| 美女视频第一区二区三区免费观看网站| 一区二区三区欧美视频| 日韩美女精品在线| 国产精品国产三级国产aⅴ中文| 久久久久久久性| 欧美成人a∨高清免费观看| 欧美一区二区视频网站| 在线观看视频一区二区 | 夜夜精品视频一区二区| 国产精品成人免费在线| 中文字幕精品在线不卡| 国产日韩欧美a| 久久久精品国产免大香伊| 欧美精品一区二区三区高清aⅴ| 欧美一级搡bbbb搡bbbb| 欧美日韩不卡视频| 欧美疯狂做受xxxx富婆| 欧美伦理电影网| 欧美日韩高清不卡| 欧美日韩一区在线观看| 精品视频一区二区不卡| 欧美性色aⅴ视频一区日韩精品| 91福利区一区二区三区| 91久久线看在观草草青青| 在线观看欧美精品| 欧美在线高清视频| 欧美日韩国产另类一区| 91精品免费观看| 日韩一级片在线播放| 精品1区2区在线观看| 久久久久久电影| 国产精品久久久久国产精品日日| 国产精品水嫩水嫩| 亚洲男人的天堂在线观看| 一区二区三区欧美久久| 日韩专区中文字幕一区二区| 奇米影视一区二区三区| 久久精品国产澳门| 国产精品综合av一区二区国产馆| 成人在线视频一区二区| 色婷婷久久久亚洲一区二区三区| 欧美优质美女网站| 欧美一区二区三区四区视频|