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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? 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);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu久久综合| 免费的成人av| 国产欧美一区二区在线观看| 日韩欧美www| 日韩一级在线观看| 91精品一区二区三区在线观看| 欧美日韩久久不卡| 欧美中文字幕一区| 欧美日韩日日摸| 制服丝袜国产精品| 欧美一区二区三区思思人| 欧美一区二区三区喷汁尤物| 欧美tickling挠脚心丨vk| 日韩一级高清毛片| 精品成人在线观看| 久久久99精品免费观看| 欧美激情一区二区三区蜜桃视频| 欧美国产一区视频在线观看| 亚洲欧洲在线观看av| 亚洲美女屁股眼交3| 亚洲一区二区综合| 日韩成人精品在线| 国产一区二区在线影院| www.成人网.com| 色婷婷久久99综合精品jk白丝| 色噜噜狠狠色综合欧洲selulu| 欧美性xxxxxxxx| 日韩一区二区三免费高清| 久久精品亚洲国产奇米99| 1区2区3区欧美| 亚洲图片欧美色图| 久久国产尿小便嘘嘘| 国产精品一区二区在线播放| 91麻豆文化传媒在线观看| 欧美日韩国产首页| 久久久精品日韩欧美| 一区二区三区在线观看国产| 欧美aaaaa成人免费观看视频| 国精产品一区一区三区mba视频| 成人av在线播放网址| 欧美日韩在线播放一区| 久久综合精品国产一区二区三区 | 国产91在线观看丝袜| 97久久精品人人做人人爽| 欧美二区三区91| 国产三级一区二区| 午夜精品123| 国产成人午夜电影网| 欧美亚洲动漫制服丝袜| 日韩精品一区二区在线| 亚洲少妇屁股交4| 蜜桃av一区二区在线观看| 成人av集中营| 欧美一区二区三区四区在线观看 | 亚洲午夜影视影院在线观看| 国产呦萝稀缺另类资源| 欧美色综合网站| 国产欧美精品一区二区色综合 | 蜜桃视频一区二区| 色婷婷精品久久二区二区蜜臀av| 精品久久久久久久一区二区蜜臀| 亚洲欧美色图小说| 久久av资源站| 欧美午夜一区二区三区免费大片| 国产亚洲人成网站| 五月天一区二区| 91在线视频播放| 欧美精品一区二区三区很污很色的 | 欧美一卡二卡三卡| 亚洲三级小视频| 国产一二精品视频| 欧美精品久久久久久久多人混战| 国产精品免费免费| 麻豆91精品视频| 欧美日韩视频专区在线播放| 国产精品久久久久久久久免费相片| 美女视频第一区二区三区免费观看网站| 99久久综合精品| 国产三级欧美三级| 狠狠色丁香久久婷婷综合_中| 欧美日韩成人一区| 一区二区三区四区不卡在线| 国产风韵犹存在线视精品| 日韩视频免费观看高清完整版 | 久久亚洲综合av| 日本欧美肥老太交大片| 欧美日韩成人综合| 亚洲国产欧美日韩另类综合| 91女神在线视频| 国产精品视频九色porn| 国产精品中文欧美| 久久麻豆一区二区| 韩国一区二区在线观看| 精品国产露脸精彩对白| 奇米一区二区三区av| 欧美一区二区三区性视频| 亚洲成av人片观看| 欧美日韩高清影院| 日日摸夜夜添夜夜添亚洲女人| 欧美特级限制片免费在线观看| 亚洲女女做受ⅹxx高潮| 色婷婷精品久久二区二区蜜臂av| 久久久不卡网国产精品一区| 激情六月婷婷久久| 久久精品水蜜桃av综合天堂| 国产盗摄女厕一区二区三区| 精品剧情在线观看| 黄页视频在线91| 国产欧美日韩麻豆91| 成人h动漫精品一区二区| 国产精品久久久久久户外露出| 成人av资源在线| 一区2区3区在线看| 欧美高清视频www夜色资源网| 日一区二区三区| 精品国产污网站| 国产精品综合一区二区三区| 久久新电视剧免费观看| 国产不卡高清在线观看视频| 国产精品久久久久桃色tv| 国产一区二区精品久久91| 国产精品欧美久久久久无广告| 成人免费av在线| 中文字幕av资源一区| 懂色av一区二区三区免费看| 91麻豆精品国产自产在线观看一区 | 久久蜜臀中文字幕| 成人黄色av网站在线| 亚洲综合丝袜美腿| 在线不卡免费欧美| 国产露脸91国语对白| 国产精品视频观看| 欧美日韩中字一区| 麻豆精品一区二区av白丝在线| 日本一区二区免费在线观看视频| 菠萝蜜视频在线观看一区| 亚洲综合色自拍一区| 日韩一级片在线观看| 国产99精品在线观看| 亚洲日穴在线视频| 欧美精品在线视频| 国产传媒一区在线| 亚洲精品高清在线| 欧美一区二区二区| 99视频精品全部免费在线| 亚洲国产成人av好男人在线观看| 日韩免费一区二区三区在线播放| 成人黄色小视频| 亚洲午夜免费福利视频| 欧美伊人久久久久久久久影院| 久久成人免费日本黄色| 亚洲日穴在线视频| 91精品国产色综合久久不卡蜜臀| 国产成人免费视频精品含羞草妖精 | 精品国产免费视频| 色婷婷国产精品久久包臀| 免费成人在线观看视频| 亚洲视频一区二区免费在线观看| 日韩一区二区三区精品视频| 99re热视频这里只精品| 激情伊人五月天久久综合| 亚洲午夜免费电影| 欧美韩国日本综合| 日韩一区二区电影网| 色8久久精品久久久久久蜜| 国产一区福利在线| 日韩av午夜在线观看| 亚洲男人的天堂av| 国产午夜亚洲精品午夜鲁丝片| 欧美巨大另类极品videosbest | 懂色中文一区二区在线播放| 日本不卡高清视频| 亚洲在线视频免费观看| 国产精品色哟哟| 久久天天做天天爱综合色| 欧美片网站yy| 色婷婷综合久久| 成人黄色小视频| 国产精品一区不卡| 免费观看91视频大全| 亚洲sss视频在线视频| 亚洲男人的天堂网| 国产精品久久久一本精品| 久久久91精品国产一区二区三区| 欧美一区二区三区日韩视频| 精品视频在线视频| 91无套直看片红桃| 成人久久18免费网站麻豆| 韩国三级中文字幕hd久久精品| 秋霞电影一区二区| 五月婷婷久久丁香| 午夜视频在线观看一区二区三区 | 国产精品资源网| 狠狠色综合日日| 久久99久久精品| 日韩电影在线观看一区| 亚洲www啪成人一区二区麻豆| 亚洲自拍偷拍综合| 一区二区三区在线免费播放| 亚洲精品国产成人久久av盗摄 |