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

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

?? pddvclas.cpp

?? wince 下
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
//-------------------------------------------------------------------------
// <copyright file="pddVClas.cpp" company="Microsoft">
//    Copyright (c) Microsoft Corporation.  All rights reserved.
//
//    The use and distribution terms for this software are covered by the
//    Microsoft Limited Permissive License (Ms-LPL) 
//    http://www.microsoft.com/resources/sharedsource/licensingbasics/limitedpermissivelicense.mspx 
//    which can be found in the file MS-LPL.txt at the root of this distribution.
//    By using this software in any fashion, you are agreeing to be bound by
//    the terms of this license.
//
//    You must not remove this notice, or any other, from this software.
// </copyright>
// 
// <summary>
//    Low level USB video interface code
// </summary>
//-------------------------------------------------------------------------
//======================================================================
// pddVClas.cpp - Low level USB video interface code
//
// Author: Douglas Boling
//======================================================================
#include <windows.h>                // For all that Windows stuff
#include <USBdi.h>					// USB includes
#include <usb100.h>					// USB includes
#include <usbclient.h>				// USB client driver helper code
#include "usbvideo.h"				// USB Video Specification defs

#include "webcamsdk.h"				// IOCTL defs for driver
#include "WebCam.h" 				// Local driver includes
#include "pddVClas.h"				// PDD defs


//
// Controllable features of the Camera.  The order of this table must be the same as the bitfields of the 
// Camera input descriptor feature bit fields.
//
FEATURESTRUCT CamFeatures[] = 
{
//    Feature ID                  USB Video Class Command ID                     Unit ID            Interface  Length
	{FEAT_SCANNING_MODE,      USB_VIDEO_CT_CS_SCANNING_MODE_CTL,           USB_VIDEO_VC_INPUT_TERMINAL, 0,  1},
	{FEAT_AUTO_EXPOSURE_MODE, USB_VIDEO_CT_CS_AE_MODE_CTL               ,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  1},
	{FEAT_AUTO_EXPOSURE_PRI,  USB_VIDEO_CT_CS_AE_PRIORITY_CTL           ,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  1},
	{FEAT_EXPOSURE_TIME_ABS,  USB_VIDEO_CT_CS_EXPOSURE_TIME_ABSOLUTE_CTL,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  4},
	{FEAT_EXPOSURE_TIME_REL,  USB_VIDEO_CT_CS_EXPOSURE_TIME_RELATIVE_CTL,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  1},
	{FEAT_FOCUS_ABS,          USB_VIDEO_CT_CS_FOCUS_ABSOLUTE_CTL        ,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  2},
	{FEAT_FOCUS_REL,          USB_VIDEO_CT_CS_FOCUS_RELATIVE_CTL        ,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  2},
	{FEAT_IRIS_ABS,           USB_VIDEO_CT_CS_IRIS_ABSOLUTE_CTL         ,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  1},
	{FEAT_IRIS_REL,           USB_VIDEO_CT_CS_IRIS_RELATIVE_CTL         ,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  2},
	{FEAT_ZOOM_ABS,           USB_VIDEO_CT_CS_ZOOM_ABSOLUTE_CTL         ,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  1},
	{FEAT_ZOOM_REL,           USB_VIDEO_CT_CS_ZOOM_RELATIVE_CTL         ,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  2},
	{FEAT_PANTILT_ABS,        USB_VIDEO_CT_CS_PANTILT_ABSOLUTE_CTL      ,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  3},
	{FEAT_PANTILT_REL,        USB_VIDEO_CT_CS_PANTILT_RELATIVE_CTL      ,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  8},
	{FEAT_ROLL_ABS,           USB_VIDEO_CT_CS_ROLL_ABSOLUTE_CTL         ,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  4},
	{FEAT_ROLL_REL,           USB_VIDEO_CT_CS_ROLL_RELATIVE_CTL         ,  USB_VIDEO_VC_INPUT_TERMINAL, 0,  2},
	{FEAT_UNSUPPORTED, 0, 0, 0, 0},  //Reserved 
	{FEAT_UNSUPPORTED, 0, 0, 0, 0},  //Reserved
	{FEAT_FOCUS_AUTO ,        USB_VIDEO_CT_CS_FOCUS_AUTO_CTL            ,  USB_VIDEO_VC_INPUT_TERMINAL, 0, 2},
	{FEAT_PRIVACY ,           USB_VIDEO_CT_CS_PRIVACY_CTL               ,  USB_VIDEO_VC_INPUT_TERMINAL, 0, 1},
};

//
// Controllable features of the processor unit
//
FEATURESTRUCT ProcFeatures[] = 
{
	{FEAT_BRIGHTNESS,               USB_VIDEO_PU_CS_BRIGHTNESS_CTL,                USB_VIDEO_VC_PROCESSING_UNIT, 0,  2},
	{FEAT_CONTRAST,                 USB_VIDEO_PU_CS_CONTRAST_CTL,                  USB_VIDEO_VC_PROCESSING_UNIT, 0,  2},
	{FEAT_HUE,                      USB_VIDEO_PU_CS_HUE_CTL,                       USB_VIDEO_VC_PROCESSING_UNIT, 0,  2},
	{FEAT_SATURATION,               USB_VIDEO_PU_CS_SATURATION_CTL,                USB_VIDEO_VC_PROCESSING_UNIT, 0,  2},
	{FEAT_SHARPNESS,                USB_VIDEO_PU_CS_SHARPNESS_CTL,                 USB_VIDEO_VC_PROCESSING_UNIT, 0,  2},
	{FEAT_GAMMA,                    USB_VIDEO_PU_CS_GAMMA_CTL,                     USB_VIDEO_VC_PROCESSING_UNIT, 0,  2},
	{FEAT_WHITE_BAL_TEMP,           USB_VIDEO_PU_CS_WHITE_BALANCE_TEMP_CTL,        USB_VIDEO_VC_PROCESSING_UNIT, 0,  2},
	{FEAT_WHITE_BAL_COMPONENT,      USB_VIDEO_PU_CS_WHITE_BALANCE_COMPONENT_CTL,   USB_VIDEO_VC_PROCESSING_UNIT, 0,  4},
	{FEAT_BACKLIGHT_COMPENSATION,   USB_VIDEO_PU_CS_BACKLIGHT_COMPENSATION_CTL, USB_VIDEO_VC_PROCESSING_UNIT, 0,  2},
	{FEAT_GAIN,                     USB_VIDEO_PU_CS_GAIN_CTL,                      USB_VIDEO_VC_PROCESSING_UNIT, 0,  2},
	{FEAT_POWER_LINE_FREQ,          USB_VIDEO_PU_CS_POWER_LINE_FREQUENCY_CTL,      USB_VIDEO_VC_PROCESSING_UNIT, 0,  1},
	{FEAT_AUTO_HUE,                 USB_VIDEO_PU_CS_HUE_AUTO_CTL,                  USB_VIDEO_VC_PROCESSING_UNIT, 0,  1},
	{FEAT_AUTO_WHITE_BAL_TEMP,      USB_VIDEO_PU_CS_WHITE_BALANCE_TEMP_AUTO_CTL,   USB_VIDEO_VC_PROCESSING_UNIT, 0,  1},
	{FEAT_AUTO_WHITE_BAL_COMPONENT, USB_VIDEO_PU_CS_WHITE_BALANCE_COMPONENT_AUTO_CTL,  USB_VIDEO_VC_PROCESSING_UNIT, 0, 1},
	{FEAT_DIGITAL_MULTIPLIER,       USB_VIDEO_PU_CS_DIGITAL_MULTIPLIER_CTL,        USB_VIDEO_VC_PROCESSING_UNIT, 0, 2},
	{FEAT_DIGITAL_MULTIPLIER_LIMIT, USB_VIDEO_PU_CS_DIGITAL_MULTIPLIER_LIMIT_CTL, USB_VIDEO_VC_PROCESSING_UNIT, 0, 2},
	{FEAT_ANALOG_VIDEO_STANDARD,    USB_VIDEO_PU_CS_ANALOG_VIDEO_STANDARD_CTL,   USB_VIDEO_VC_PROCESSING_UNIT, 0, 1},
	{FEAT_ANALOG_VIDEO_LOCK_STATUS, USB_VIDEO_PU_CS_ANALOG_LOCK_STATUS_CTL,   USB_VIDEO_VC_PROCESSING_UNIT, 0, 1},
};

//-----------------------------------------------------------------------
// Pdd_DeviceAttach - Called by MDD during USBDeviceAttach.  
// Return:
//     0 - Not my interface, ignore
//     1 - Claim interface
//     2 - Pass along interface to LoadGenericInterfaceDriver
// 
int pdd_DeviceAttach (USB_HANDLE hDevice, LPCUSB_FUNCS lpUsbFuncs,
                  LPCUSB_INTERFACE lpInterface, LPCWSTR szUniqueDriverId,
                  LPCUSB_DRIVER_SETTINGS lpDriverSettings, DWORD *pdwContext)
{
	int rc = 0;

	// Call the device to query all interfaces
   	LPCUSB_DEVICE lpUsbDev = (lpUsbFuncs->lpGetDeviceInfo)(hDevice);
	if (!lpUsbDev)
		return 0;

	// See if this device has the interface we need...
	// Only accept video control interface
	if ((DWORD)lpInterface != 0)
	{
		if (lpInterface->Descriptor.bInterfaceSubClass == 0x02)
		{
			return 2;
		}
	}

	// Allocate the Phys dev driver context structure.  We'll add this
	// pointer to the pdd field available in the device driver context
	// structure.
	PPDDCONTEXT pPDD = (PPDDCONTEXT)LocalAlloc (LPTR, sizeof (PDDCONTEXT)); 
	if (pPDD == 0)
	{
		SetLastError (ERROR_NOT_ENOUGH_MEMORY);
		return 0;
	}
	pPDD->dwSize = sizeof (PDDCONTEXT);
	InitializeCriticalSection (&pPDD->csStill);
	pPDD->hStillEvent = CreateEvent (NULL, FALSE, FALSE, NULL);
	pPDD->wReadThreadState = STREAMTHD_STOPPED;
	pPDD->wCurrFormatIndex = 0xffff;
	pPDD->wCurrFrameIndex = 0xffff;
	pPDD->hVendorEvent = CreateEvent (NULL, FALSE, FALSE, NULL);

	// Set up default stream receive buffer
	pPDD->strStreamDefault.dwNumBuffs = NUMDEFBUFFS;
	InitializeCriticalSection (&pPDD->strStreamDefault.csBuffSync);
	pPDD->strStreamDefault.hNewFrame = NULL;
	pPDD->strStreamDefault.dwBuffSize = 0;
	pPDD->strStreamDefault.pFrame[0].pBuff = 0;
	pPDD->strStreamDefault.pFrame[1].pBuff = 0;

	// See if we can find the proper interfaces.  First, look for the
	// standard Video Class Device interfaces...
	if (!ParseStreamInterfaces (pPDD, lpUsbDev, 0x0e, 1, 0x0e, 2))
	{
		// If failed to open std interface, try vendor specific
		if (!ParseStreamInterfaces (pPDD, lpUsbDev, 0xff, 1, 0xff, 2))
		{
			FreePDDContext (pPDD);
			return 0;
		} 
	}
	DEBUGMSG(ZONE_USBLOAD, (DTAG TEXT("Video Class interface found.\n"), rc)); 

	// Parse to see what features are supported by the camera
	if (!ParseFeatureParameters (pPDD))
		DEBUGMSG(ZONE_USBLOAD, (DTAG TEXT("Error calling ParseFeatureParameters\n"))); 

	rc = 1;  // We accept the device

	// Save our hardware context in the driver context structure.
	*pdwContext = (DWORD)pPDD;
	return rc;
}
//---------------------------------------------------------------------------------------
// FreePDDContext - Free the PDD context structure.
//
void FreePDDContext (PPDDCONTEXT pPDD)
{
	if (pPDD == 0)
		return;
	__try 
	{
		if (pPDD->dwSize == sizeof (PDDCONTEXT))
		{
			// Stop the read thread if its running.
			StopReadThread (pPDD);

			DeleteCriticalSection (&pPDD->csStill);

			if (pPDD->hStillEvent)
				CloseHandle (pPDD->hStillEvent);

			if (pPDD->usbstrmIF)
				LocalFree (pPDD->usbstrmIF);

			if (pPDD->hReadThread)
				CloseHandle (pPDD->hReadThread);

			if (pPDD->strStreamDefault.dwReserved)
				CloseHandle ((HANDLE)pPDD->strStreamDefault.dwReserved);

			for (DWORD i = 0; i < pPDD->strStreamDefault.dwNumBuffs; i++)
				if (pPDD->strStreamDefault.pFrame[i].pBuff)
					LocalFree (pPDD->strStreamDefault.pFrame[i].pBuff);

			DeleteCriticalSection (&pPDD->strStreamDefault.csBuffSync);

			if (pPDD->hVendorEvent)
				CloseHandle (pPDD->hVendorEvent);
		}
		LocalFree (pPDD);
	}
	__except (EXCEPTION_EXECUTE_HANDLER)
	{
		DEBUGMSG(ZONE_ERROR, (DTAG TEXT("Exception freeing PDD context structure\n"))); 
	}
	return;
}
//-----------------------------------------------------------------------
// Pdd_DeviceDetach - Called by MDD during unload notification but
// before the stream driver is deactivated.
// 
int pdd_DeviceDetach (PDRVCONTEXT pDrv)
{
	// Set the stream interface to turn off the video stream.
	int rc = SetStreamInterface (pDrv, 1, 0);

	// Free up PDD context structure
	FreePDDContext ((PPDDCONTEXT)pDrv->dwPddContext);
	return 0;
}

//---------------------------------------------------------------------------------------
//
//
int pdd_DrvInit (PDRVCONTEXT pDrv) 
{
	return 1;
}

//---------------------------------------------------------------------------------------
//
//
void pdd_DrvUninit (PDRVCONTEXT pDrv) 
{
	return;
}

//---------------------------------------------------------------------------------------
// pdd_DrvOpen - Called when driver is opened
//
int pdd_DrvOpen (PDRVCONTEXT pDrv) 
{
	BOOL fPwr;

	// Make sure the camera is powered
	GetPower (pDrv, &fPwr);

	if (!fPwr)
		SetPower (pDrv, TRUE);
	return 1;
}

//---------------------------------------------------------------------------------------
// pdd_DrvClose - Called when driver is closed
//
void pdd_DrvClose (PDRVCONTEXT pDrv) 
{
	int rc;

	rc = pdd_StopVidStream (pDrv);

	// Turn off the camera
	SetPower (pDrv, FALSE);
	return;
}

//---------------------------------------------------------------------------------------
// Return a list of Feature IDs that is supported by this camera
//
int pdd_GetFeatureList (PDRVCONTEXT pDrv, DWORD *pList, int nListSize)
{
	int nCnt = 0; 
	int i;

	// Count the number of supported features
	for (i = 0; i < dim (CamFeatures); i++)
	{
		if (CamFeatures[i].bFeatureID != FEAT_UNSUPPORTED)
			nCnt++;
	}
	for (i = 0; i < dim (ProcFeatures); i++)
	{
		if (ProcFeatures[i].bFeatureID != FEAT_UNSUPPORTED)
			nCnt++;
	}

	// See if they're just asking for the number of features
	if (pList == 0)
		return nCnt;

	if (nListSize < nCnt)
		return 0;

	// Now compile the list of supported IDs
	for (i = 0; i < dim (CamFeatures); i++)
	{
		if (CamFeatures[i].bFeatureID != FEAT_UNSUPPORTED)
			*pList++ = CamFeatures[i].bFeatureID;
	}
	for (i = 0; i < dim (ProcFeatures); i++)
	{
		if (ProcFeatures[i].bFeatureID != FEAT_UNSUPPORTED)
			*pList++ = ProcFeatures[i].bFeatureID;
	}
	return nCnt;
}
//-----------------------------------------------------------------------
// pdd_QueryFeature - Gets the min and max values value of a feature 
// 
int pdd_QueryFeature (PDRVCONTEXT pDrv, DWORD dwFeatureID, PFEATUREPROP pfp) 
{
	int rc;

	DEBUGMSG (ZONE_FUNC | ZONE_FEATURE, 
	          (DTAG TEXT("pdd_QueryFeature++  ID: %d\r\n"), dwFeatureID));

	// Look up the feature data from the ID
	PFEATURESTRUCT pfs = FindFeatureInfo ((BYTE)dwFeatureID);
	if (!pfs)
		return ERROR_NOT_SUPPORTED;

	pfp->dwFeatureID = dwFeatureID;
	pfp->dwFlags = 0;
	pfp->nMin = 0;
	pfp->nMax = 0;

	// Get min value
	rc = DoVendorTransfer (pDrv, USBVID_GET_MIN, pfs->bCmdID, pfs->bInterface, 
	                       pfs->bUnit, (PBYTE)&pfp->nMin, pfs->wLength);
	if (rc)
		DEBUGMSG (ZONE_ERROR | ZONE_FEATURE,
		          (DTAG TEXT("Error getting min value for feat %d. rc %d\r\n"),
				  dwFeatureID, rc));
	// Get max value
	rc = DoVendorTransfer (pDrv, USBVID_GET_MAX, pfs->bCmdID, pfs->bInterface, 
	                       pfs->bUnit, (PBYTE)&pfp->nMax, pfs->wLength);
	if (rc)
		DEBUGMSG (ZONE_ERROR | ZONE_FEATURE,
		          (DTAG TEXT("Error getting max value for feat %d. rc %d\r\n"),
				  dwFeatureID, rc));

	DEBUGMSG (ZONE_FUNC | ZONE_FEATURE, 
	          (DTAG TEXT("pdd_QueryFeature--  rc %d  min: %xh max %xh\r\n"), 
	                      rc, pfp->nMin, pfp->nMax));
	return rc;
}
//---------------------------------------------------------------------------------------
// pdd_GetParameter - Gets the current value of a camera parameter
//
int pdd_GetParameter (PDRVCONTEXT pDrv, DWORD dwFeatureID, PDWORD pData)
{
	int rc;

	DEBUGMSG (ZONE_FUNC | ZONE_FEATURE, 
	          (DTAG TEXT("pdd_GetParameter++  ID: %d\r\n"), dwFeatureID));

	// Look up the feature data from the ID
	PFEATURESTRUCT pfs = FindFeatureInfo ((BYTE)dwFeatureID);
	if (pfs)
	{
		*pData = 0;
		// Send packet to the device to get the parameter
		rc = DoVendorTransfer (pDrv, USBVID_GET_CUR, pfs->bCmdID, pfs->bInterface, 
							   pfs->bUnit, (PBYTE)pData, pfs->wLength);
	} 
	else
		rc = ERROR_NOT_SUPPORTED;

	DEBUGMSG (ZONE_FUNC | ZONE_FEATURE, 
	          (DTAG TEXT("pdd_GetParameter--  rc %d  val: %xh\r\n"), rc, *pData));
	return rc;
}
//---------------------------------------------------------------------------------------
// pdd_SetParameter - Sets a camera parameter
//
int pdd_SetParameter (PDRVCONTEXT pDrv, DWORD dwFeatureID, DWORD dwVal) 
{
	int rc;
	DEBUGMSG (ZONE_FUNC | ZONE_FEATURE, 
	          (DTAG TEXT("pdd_SetParameter++  ID: %d Val: %xh\r\n"), dwFeatureID, dwVal));

	// Look up the feature data from the ID
	PFEATURESTRUCT pfs = FindFeatureInfo ((BYTE)dwFeatureID);
	if (pfs)
	{
		// Send packet to the device to set the parameter
		rc = DoVendorTransfer (pDrv, USBVID_SET_CUR, pfs->bCmdID, pfs->bInterface, 
							   pfs->bUnit, (PBYTE)&dwVal, pfs->wLength);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩亚洲欧美综合| 欧美另类久久久品| 国产欧美日韩另类视频免费观看| 精品一区二区免费视频| 国产日韩欧美电影| 91一区一区三区| 亚洲一区二区视频| 日韩一区二区精品在线观看| 久草这里只有精品视频| 国产欧美日韩在线| 91福利国产成人精品照片| 日韩国产欧美在线视频| xvideos.蜜桃一区二区| 东方aⅴ免费观看久久av| 亚洲人精品午夜| 91精品国产欧美一区二区成人 | 日韩欧美三级在线| 国内精品视频666| 国产精品视频看| 欧美亚洲日本国产| 久久不见久久见免费视频1| 国产精品美日韩| 欧美亚州韩日在线看免费版国语版| 日韩在线卡一卡二| 国产亚洲1区2区3区| 欧美最新大片在线看| 久久国产综合精品| 亚洲欧美中日韩| 欧美一区二区三区成人| 成人在线视频首页| 日韩电影在线观看一区| 中文字幕第一区| 欧美一区二区三区视频免费| 国产精品88av| 日韩国产一二三区| 国产精品久久久久久户外露出| 欧美日韩一区在线观看| 国产白丝精品91爽爽久久| 视频一区二区三区入口| 国产精品第四页| 日韩一区二区视频| 欧美色图免费看| 99久久伊人精品| 国产精品主播直播| 蜜臀av一级做a爰片久久| 中文字幕欧美一区| 久久精品综合网| 91精品婷婷国产综合久久性色| av爱爱亚洲一区| 国产真实精品久久二三区| 亚洲成人免费影院| 亚洲色欲色欲www在线观看| 久久人人97超碰com| 在线成人免费观看| 欧美性视频一区二区三区| 国产aⅴ综合色| 精品一区二区免费在线观看| 日韩成人av影视| 一级日本不卡的影视| 国产精品久久久久三级| 久久精品一区八戒影视| 日韩精品一区二区三区视频| 欧美精品在线视频| 欧美色图第一页| 欧美在线啊v一区| 91小视频免费看| 不卡视频一二三| 国产成人av一区二区三区在线 | 国产精品视频免费看| 2020国产精品自拍| 久久影视一区二区| 精品国产乱码久久久久久久| 91精品国产免费久久综合| 欧美日韩精品欧美日韩精品一 | 色综合久久综合中文综合网| 成人一级视频在线观看| 国产麻豆视频精品| 国产精品亚洲一区二区三区在线| 精品一区二区久久| 精品一区二区精品| 国产成人av一区二区三区在线观看| 国产福利精品一区二区| 丰满亚洲少妇av| 91亚洲精华国产精华精华液| 色噜噜狠狠成人网p站| 色婷婷狠狠综合| 欧美在线一二三| 4hu四虎永久在线影院成人| 欧美一区二区三区电影| 日韩欧美电影一二三| 精品sm捆绑视频| 久久精品欧美一区二区三区不卡 | 欧美日韩三级一区二区| 欧美一区二区日韩| 精品国产电影一区二区| 国产亚洲人成网站| 亚洲男同1069视频| 亚欧色一区w666天堂| 美女国产一区二区| 成人av电影观看| 91行情网站电视在线观看高清版| 欧美日韩日日骚| 精品国产乱码久久久久久浪潮 | 精品在线观看免费| 极品销魂美女一区二区三区| 成人v精品蜜桃久久一区| 欧美在线视频全部完| 欧美不卡激情三级在线观看| 久久久精品国产免大香伊| 日韩理论在线观看| 丝袜亚洲另类欧美| 国产精品一区二区免费不卡| 色综合一区二区| 欧美一区二区黄色| 欧美经典三级视频一区二区三区| 亚洲美女在线国产| 久久国产欧美日韩精品| 91一区二区在线观看| 日韩欧美国产午夜精品| 日韩美女视频一区| 免费人成黄页网站在线一区二区| 国产成人av影院| 3751色影院一区二区三区| 国产精品美女一区二区在线观看| 亚洲va国产天堂va久久en| 国产91丝袜在线18| 7777精品伊人久久久大香线蕉的| 亚洲国产成人在线| 日本在线观看不卡视频| 成人理论电影网| 欧美精品一区二区不卡| 一区二区免费在线| 国产成a人亚洲| 精品日韩在线一区| 亚洲国产成人porn| 99精品视频一区| 久久婷婷成人综合色| 国产一区二区影院| 国产视频一区二区在线观看| 午夜久久久影院| 日本在线播放一区二区三区| 99国产精品久久久久| 久久综合五月天婷婷伊人| 一区二区三区色| 99久久精品免费看国产免费软件| 精品日韩99亚洲| 天堂久久一区二区三区| 色综合久久综合网| 欧美激情一区二区三区在线| 韩国女主播一区| 日韩免费看网站| 日韩**一区毛片| 欧美精品在欧美一区二区少妇| 亚洲老司机在线| 一本高清dvd不卡在线观看| 中文字幕乱码日本亚洲一区二区| 国内精品第一页| 久久综合色之久久综合| 久久99精品一区二区三区| 欧美一级一区二区| 蜜桃av噜噜一区| 欧美一区二区三区的| 青青草国产精品亚洲专区无| 欧美精品v国产精品v日韩精品| 五月综合激情网| 欧美性猛交xxxx乱大交退制版| 一区在线观看视频| 91免费在线播放| 亚洲国产精品久久不卡毛片| 欧美性欧美巨大黑白大战| 性欧美大战久久久久久久久| 欧美精品久久一区二区三区| 午夜亚洲福利老司机| 欧美一区二区观看视频| 国产综合色产在线精品| 国产调教视频一区| voyeur盗摄精品| 亚洲愉拍自拍另类高清精品| 色偷偷88欧美精品久久久| 亚洲福利一区二区| 日韩精品最新网址| 国产精一品亚洲二区在线视频| 国产日韩精品视频一区| 91在线精品一区二区三区| 亚洲精品久久久蜜桃| 欧美日韩亚洲综合| 精品一区二区三区在线播放| 国产欧美一区二区三区在线老狼| 成人丝袜18视频在线观看| 亚洲免费观看在线视频| 制服丝袜av成人在线看| 韩国精品主播一区二区在线观看| 国产精品三级电影| 色999日韩国产欧美一区二区| 亚洲v日本v欧美v久久精品| 2017欧美狠狠色| 一本大道av伊人久久综合| 日本少妇一区二区| 日本一区二区三区高清不卡| 在线亚洲欧美专区二区|