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

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

?? post.cpp

?? S3C2443 WINCE6.0 BSP
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// Ported for 2443 Win CE 5.0
//
#include <windows.h>

#include <nkintr.h>
//#include <oalintr.h>
#include <pm.h>
#include "pmplatform.h"
#include <ceddk.h>

#include <S3c2443.h>
#include <bsp.h>
#include "post.h"


#define PM_MSG 		0
#define POST_MSG	0
#define POST_DEBUG	0
#define RETAIL_ON		0

#define DOTNET_DRIVER 		1 // 0:PPC, 1:CE.NET

#define POST_CLOCK_OFF_ON_IDLE 0

#if (POST_CLOCK_OFF_ON_IDLE == 1)
#define POST_THREAD_TIMEOUT	3000
#else
#define POST_THREAD_TIMEOUT	INFINITE
#endif

volatile S3C2443_IOPORT_REG 	*s2443IOP = (S3C2443_IOPORT_REG *)S3C2443_BASE_REG_PA_IOPORT;
volatile S3C2443_CAM_REG 	*s2443CAM = (S3C2443_CAM_REG *)S3C2443_BASE_REG_PA_CAM;
volatile S3C2443_INTR_REG 	*s2443INT = (S3C2443_INTR_REG *)S3C2443_BASE_REG_PA_INTR;
volatile S3C2443_CLKPWR_REG	*s2443PWR = (S3C2443_CLKPWR_REG *)S3C2443_BASE_REG_PA_CLOCK_POWER;

volatile U8 *PostInputBuffer = NULL;
volatile U8 *PostOutputBuffer = NULL;

unsigned char *Post_input_yuv;
unsigned char *Post_output_rgb;

PHYSICAL_ADDRESS g_PhysSrcAddr;
PHYSICAL_ADDRESS g_PhysDstAddr;
PBYTE pVirtSrcAddr = NULL;
PBYTE pVirtDstAddr = NULL;

unsigned int dwPostProcessTimeout = POST_THREAD_TIMEOUT;

BOOL bIdlePwrDown = FALSE;

BOOL bAppOpenFlag = FALSE;

HANDLE PostThread;
HANDLE PostEvent;
HANDLE PostDoneEvent;

// Added yash
//
DWORD gIntrPost 		= SYSINTR_NOP;

static U32 ADDRStartRGB, ADDREndRGB ,ADDRStartY, ADDREndY;
static U32 ADDRStartCb, ADDREndCb, ADDRStartCr, ADDREndCr;


void Virtual_Alloc();						// Virtual allocation
void Display_POST_Image(U32 pos_x, U32 pos_y, U32 size_x, U32 size_y);


BOOL POSTClockOn(BOOL bOnOff);
void PostInit(POSTINFO *pBufIn);
void PostProcessOn(U8 *pBufIn, U8 *pBufOut);
void PostProcessOnNoMemcpy();
void PostProcessDone(U8 *pBufIn, U8 *pBufOut);
void Post_CalculatePrescaler(U32 SrcSize, U32 DstSize, U32 *ratio,U32 *shift);

DWORD PostProcessThread(void);
BOOL InitInterruptThread();

CEDEVICE_POWER_STATE m_Dx;

#ifdef DEBUG

    #define DBG_INIT    0x0001
    #define DBG_OPEN    0x0002
    #define DBG_READ    0x0004
    #define DBG_WRITE   0x0008
    #define DBG_CLOSE   0x0010
    #define DBG_IOCTL   0x0020
    #define DBG_THREAD  0x0040
    #define DBG_EVENTS  0x0080
    #define DBG_CRITSEC 0x0100
    #define DBG_FLOW    0x0200
    #define DBG_IR      0x0400
    #define DBG_NOTHING 0x0800
    #define DBG_ALLOC   0x1000
    #define DBG_FUNCTION 0x2000
    #define DBG_WARNING 0x4000
    #define DBG_ERROR   0x8000

DBGPARAM dpCurSettings = {
    TEXT("postdriver"), {
        TEXT("Init"),TEXT("Open"),TEXT("Read"),TEXT("Write"),
        TEXT("Close"),TEXT("Ioctl"),TEXT("Thread"),TEXT("Events"),
        TEXT("CritSec"),TEXT("FlowCtrl"),TEXT("Infrared"),TEXT("User Read"),
        TEXT("Alloc"),TEXT("Function"),TEXT("Warning"),TEXT("Error")},
    0
}; 

#define ZONE_INIT		DEBUGZONE(0)
#define ZONE_OPEN		DEBUGZONE(1)
#define ZONE_READ		DEBUGZONE(2)
#define ZONE_WRITE		DEBUGZONE(3)
#define ZONE_CLOSE		DEBUGZONE(4)
#define ZONE_IOCTL		DEBUGZONE(5)
#define ZONE_THREAD	DEBUGZONE(6)
#define ZONE_EVENTS		DEBUGZONE(7)
#define ZONE_CRITSEC	DEBUGZONE(8)
#define ZONE_FLOW		DEBUGZONE(9)
#define ZONE_IR			DEBUGZONE(10)
#define ZONE_USR_READ	DEBUGZONE(11)
#define ZONE_ALLOC		DEBUGZONE(12)
#define ZONE_FUNCTION	DEBUGZONE(13)
#define ZONE_WARN		DEBUGZONE(14)
#define ZONE_ERROR		DEBUGZONE(15)


#endif //DEBUG

POSTINFO sPOSTINFO;

CRITICAL_SECTION m_Lock;

void Lock()   {EnterCriticalSection(&m_Lock);}
void Unlock() {LeaveCriticalSection(&m_Lock);}


static void Delay(USHORT count)
{
	volatile int i, j = 0;
	volatile static int loop = S3C2443_FCLK/100000;
	
	for(;count > 0;count--)
		for(i=0;i < loop; i++) { j++; }
}

void PostProcessor_PowerDown(void)
{
	RETAILMSG(PM_MSG, (_T("PostProcessor_PowerDown()\r\n")));

	// Post Processor clock off
	PostClockOn(FALSE);
	RETAILMSG(POST_MSG, (_T("POST CLK_DOWN\r\n")));
}

void PostProcessor_PowerUp(void)
{
	RETAILMSG(PM_MSG, (_T("PostProcessor_PowerUp()\r\n")));

	// Post Processor clock on
	PostClockOn(TRUE);

	RETAILMSG(POST_MSG,(_T("POST CLK_UP\r\n")));	
}


DWORD PostProcessThread(void)
{

	DWORD	dwCause;					

	SetProcPermissions((DWORD)-1);


	
	while(TRUE)
	{
		RETAILMSG(PM_MSG, (TEXT("Before WaitForSingleObject(PostEvent,\r\n")));
		dwCause = WaitForSingleObject(PostEvent, dwPostProcessTimeout);
		RETAILMSG(PM_MSG, (TEXT("After WaitForSingleObject(PostEvent,\r\n")));		
		
		if (dwCause == WAIT_OBJECT_0) 
		{
			Lock();

			__try
			{
				RETAILMSG(PM_MSG, (TEXT("Before SetEvent(PostDoneEvent)\r\n")));
				SetEvent(PostDoneEvent);
				RETAILMSG(PM_MSG, (TEXT("After SetEvent(PostDoneEvent)\r\n")));				
				InterruptDone(gIntrPost);
				RETAILMSG(PM_MSG, (TEXT("After InterruptDone(gIntrPost)\r\n")));				
			}
			__except(EXCEPTION_EXECUTE_HANDLER)
			{
				RETAILMSG(PM_MSG, (TEXT("[POST] InterruptThread() - EXCEPTION: %d"), GetExceptionCode()));
			}

			Unlock();
		}

		else if (dwCause == WAIT_TIMEOUT)
		{
			RETAILMSG(PM_MSG, (TEXT("WAIT_TIMEOUT\n")));
			//RETAILMSG(1, (TEXT("IOCTL_POST_RUN: %d"), IOCTL_POST_RUN));
			//RETAILMSG(1, (TEXT("IOCTL_POST_STOP: %d"), IOCTL_POST_STOP));
			Lock();
			
			//RETAILMSG(PM_MSG,(_T("[POST] InterruptThread Timeout : %d msec\r\n"), dwPostProcessTimeout));
			
			dwPostProcessTimeout = INFINITE;				// reset timeout until Post Interrupt occurs

			bIdlePwrDown = TRUE;					// Post is off

			PostProcessor_PowerDown();
			RETAILMSG(PM_MSG, (TEXT("[POST]Post Processor PowerDown Mode\r\n")));

			Unlock();
		}

		else
		{
			RETAILMSG(PM_MSG, (TEXT("[POST] InterruptThread : Exit %d, Cause %d\r\n"), GetLastError(), dwCause));
		}
	}

	return 0;
}



void Virtual_Alloc()
{
    DMA_ADAPTER_OBJECT Adapter1, Adapter2;

    memset(&Adapter1, 0, sizeof(DMA_ADAPTER_OBJECT));
    Adapter1.InterfaceType = Internal;
    Adapter1.ObjectSize = sizeof(DMA_ADAPTER_OBJECT);

    memset(&Adapter2, 0, sizeof(DMA_ADAPTER_OBJECT));
    Adapter2.InterfaceType = Internal;
    Adapter2.ObjectSize = sizeof(DMA_ADAPTER_OBJECT);


    // Allocate a block of virtual memory (physically contiguous) for the DMA buffers.
    //
    pVirtSrcAddr = (PBYTE)HalAllocateCommonBuffer(&Adapter1, 0x71000, &g_PhysSrcAddr, FALSE);
    if (pVirtSrcAddr == NULL)
    {
        RETAILMSG(TRUE, (TEXT("Camera:Virtual_Alloc() - Failed to allocate DMA buffer for Source.\r\n")));
    }

    pVirtDstAddr = (PBYTE)HalAllocateCommonBuffer(&Adapter2, 0x96000, &g_PhysDstAddr, FALSE);
    if (pVirtDstAddr == NULL)
    {
        RETAILMSG(TRUE, (TEXT("Camera:Virtual_Alloc() - Failed to allocate DMA buffer for Destination.\r\n")));
    }

	
    // GPIO Virtual alloc
	s2443IOP = (volatile S3C2443_IOPORT_REG*) VirtualAlloc(0,sizeof(S3C2443_IOPORT_REG),MEM_RESERVE, PAGE_NOACCESS);
	if(s2443IOP == NULL) {
		RETAILMSG(1,(TEXT("For s2443IOP: VirtualAlloc failed!\r\n")));
	}
	else {
		if(!VirtualCopy((PVOID)s2443IOP,(PVOID)(S3C2443_BASE_REG_PA_IOPORT>>8),sizeof(S3C2443_IOPORT_REG),PAGE_READWRITE | PAGE_NOCACHE | PAGE_PHYSICAL)) {
			RETAILMSG(1,(TEXT("For s2443IOP: VirtualCopy failed!\r\n")));
		}
	}
	
	// Interrupt Virtual alloc
	s2443CAM = (volatile S3C2443_CAM_REG *) VirtualAlloc(0,sizeof(S3C2443_CAM_REG),MEM_RESERVE, PAGE_NOACCESS);
	if(s2443INT == NULL) {
		RETAILMSG(1,(TEXT("For s2443CAM: VirtualAlloc failed!\r\n")));
	}
	else {
		if(!VirtualCopy((PVOID)s2443CAM,(PVOID)(S3C2443_BASE_REG_PA_CAM>>8),sizeof(S3C2443_CAM_REG),PAGE_READWRITE | PAGE_NOCACHE | PAGE_PHYSICAL)) {
			RETAILMSG(1,(TEXT("For s2443CAM: VirtualCopy failed!\r\n")));
		}
	}
	// Interrupt Virtual alloc
	s2443INT = (volatile S3C2443_INTR_REG *) VirtualAlloc(0,sizeof(S3C2443_INTR_REG),MEM_RESERVE, PAGE_NOACCESS);
	if(s2443INT == NULL) {
		RETAILMSG(1,(TEXT("For s2443INT: VirtualAlloc failed!\r\n")));
	}
	else {
		if(!VirtualCopy((PVOID)s2443INT,(PVOID)(S3C2443_BASE_REG_PA_INTR>>8),sizeof(S3C2443_INTR_REG),PAGE_READWRITE | PAGE_NOCACHE | PAGE_PHYSICAL)) {
			RETAILMSG(1,(TEXT("For s2443INT: VirtualCopy failed!\r\n")));
		}
	}

	// PWM clock Virtual alloc
	s2443PWR = (volatile S3C2443_CLKPWR_REG*) VirtualAlloc(0,sizeof(S3C2443_CLKPWR_REG),MEM_RESERVE, PAGE_NOACCESS);
	if(s2443PWR == NULL) {
		RETAILMSG(1,(TEXT("For s2443PWR: VirtualAlloc failed!\r\n")));
	}
	else {
		if(!VirtualCopy((PVOID)s2443PWR,(PVOID)(S3C2443_BASE_REG_PA_CLOCK_POWER>>8),sizeof(S3C2443_CLKPWR_REG),PAGE_READWRITE | PAGE_NOCACHE | PAGE_PHYSICAL)) {
			RETAILMSG(1,(TEXT("For s2443PWR: VirtualCopy failed!\r\n")));
		}
	}

}

void Display_POST_Image(U32 pos_x, U32 pos_y, U32 size_x, U32 size_y)
{
	U8 *buffer_rgb;
	U32 y;
	
	RETAILMSG(POST_MSG,(_T("Display_POST_Image()\r\n")));

			buffer_rgb = (U8 *)PostOutputBuffer;
	
#if (DOTNET_DRIVER)
	SetKMode(TRUE);
#endif

	RETAILMSG(POST_MSG,(_T("buffer_rgb = 0x%x\r\n"), buffer_rgb));
	


	for (y=0; y<size_y; y++) // YCbCr 4:2:0 format
	{
		//memcpy((void *)(FRAMEBUF_BASE+0x5e00+y*240*2),(void *)buffer_rgb,(QCIF_XSIZE)*2);
		memcpy((void *)(IMAGE_FRAMEBUFFER_UA_BASE+ (240*pos_y + pos_x) + y*240*2),(void *)buffer_rgb,size_x*2);
		buffer_rgb += (size_x*2);
	}

#if (DOTNET_DRIVER)
	SetKMode(FALSE);
#endif

}



BOOL WINAPI  
DllEntry(HANDLE	hinstDLL, 
			DWORD dwReason, 
			LPVOID /* lpvReserved */)
{
	switch(dwReason)
	{
	case DLL_PROCESS_ATTACH:
		DEBUGREGISTER((HINSTANCE)hinstDLL);
		DEBUGMSG(ZONE_INIT,(TEXT("POST: DLL_PROCESS_ATTACH\r\n")));
		return TRUE;
	case DLL_THREAD_ATTACH:
		DEBUGMSG(ZONE_THREAD,(TEXT("POST: DLL_THREAD_ATTACH\r\n")));
		break;
	case DLL_THREAD_DETACH:
		DEBUGMSG(ZONE_THREAD,(TEXT("POST: DLL_THREAD_DETACH\r\n")));
		break;
	case DLL_PROCESS_DETACH:
		DEBUGMSG(ZONE_INIT,(TEXT("POST: DLL_PROCESS_DETACH\r\n")));
		break;
#ifdef UNDER_CE
	case DLL_PROCESS_EXITING:
		DEBUGMSG(ZONE_INIT,(TEXT("POST: DLL_PROCESS_EXITING\r\n")));
		break;
	case DLL_SYSTEM_STARTED:
		DEBUGMSG(ZONE_INIT,(TEXT("POST: DLL_SYSTEM_STARTED\r\n")));
		break;
#endif
	}

	return TRUE;
}

//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
BOOL PST_Deinit(DWORD hDeviceContext)
{
    DMA_ADAPTER_OBJECT Adapter1, Adapter2;

    memset(&Adapter1, 0, sizeof(DMA_ADAPTER_OBJECT));
    Adapter1.InterfaceType = Internal;
    Adapter1.ObjectSize = sizeof(DMA_ADAPTER_OBJECT);

    memset(&Adapter2, 0, sizeof(DMA_ADAPTER_OBJECT));
    Adapter2.InterfaceType = Internal;
    Adapter2.ObjectSize = sizeof(DMA_ADAPTER_OBJECT);
    	
	BOOL bRet = TRUE;
	
	RETAILMSG(PM_MSG,(TEXT("POST: PST_Deinit\r\n")));
	
	CloseHandle(PostThread);
	
	VirtualFree((void*)s2443IOP, 0, MEM_RELEASE);
	VirtualFree((void*)s2443CAM, 0, MEM_RELEASE);	
	VirtualFree((void*)s2443INT, 0, MEM_RELEASE);
	VirtualFree((void*)s2443PWR, 0, MEM_RELEASE);
	VirtualFree((void*)PostInputBuffer, 0,MEM_RELEASE);
	VirtualFree((void*)PostOutputBuffer,0,MEM_RELEASE);
	
    HalFreeCommonBuffer(&Adapter1, 0x71000, g_PhysSrcAddr, (PVOID)pVirtSrcAddr, FALSE);

    HalFreeCommonBuffer(&Adapter2, 0x96000, g_PhysDstAddr, (PVOID)pVirtDstAddr, FALSE);

	return TRUE;
} 



BOOL InitInterruptThread()
{
	DWORD         threadID;                         // thread ID
	BOOL bSuccess;
	UINT32 Irq;

    PostEvent = CreateEvent(NULL, FALSE, FALSE, NULL);    //
    PostDoneEvent = CreateEvent(NULL,FALSE,FALSE,NULL);
    
    if (!PostEvent||!PostDoneEvent)
    {
    	return FALSE;
    }

	// Obtain sysintr values from the OAL for the CAMIF interrupt.
	//
	Irq = IRQ_CAM;
	if (!KernelIoControl(IOCTL_HAL_REQUEST_SYSINTR, &Irq, sizeof(UINT32), &gIntrPost, sizeof(UINT32), NULL))
	{
		RETAILMSG(RETAIL_ON, (TEXT("ERROR: Failed to request the post sysintr.\r\n")));
		gIntrPost = SYSINTR_UNDEFINED;
		return(FALSE);
	}

	RETAILMSG(RETAIL_ON, (TEXT("POST Interrupt is ....... %d \r\n"), gIntrPost));

	bSuccess = InterruptInitialize(gIntrPost, PostEvent, NULL, 0);
	RETAILMSG(RETAIL_ON, (TEXT("After InterruptInitialize\r\n")));
    if (!bSuccess) 
    {
        RETAILMSG(1,(TEXT("Fail to initialize Post interrupt event\r\n")));
        return FALSE;
    }    
	RETAILMSG(RETAIL_ON, (TEXT("PostThread = CreateThread\r\n")));
    PostThread = CreateThread(NULL,
                                 0,
                                 (LPTHREAD_START_ROUTINE)PostProcessThread,
                                 0,
                                 0,
                                 &threadID);
    
    if (NULL == PostThread ) {
    	RETAILMSG(1,(TEXT("Create Post Thread Fail\r\n")));
    }
	
	RETAILMSG(PM_MSG,(_T("POST.DLL::InterruptThread Initialized.\r\n")));
	return TRUE;
}


BOOL PostClockOn(BOOL bOnOff)
{
	// Post Processor clock
	if (!bOnOff)
		s2443PWR->HCLKCON &= ~(1<<8); // Post clock disable
	else 
		s2443PWR->HCLKCON |= (1<<8); // Post clock enable

	RETAILMSG(POST_MSG,(_T("PostClockOn = %d\r\n"), bOnOff));
	
	Delay(500);

	return TRUE;
}


DWORD PST_Init(DWORD dwContext)
{

	// 1. Virtual Alloc

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成a天堂v人片| 亚洲一线二线三线视频| 日韩午夜在线影院| 欧美日本韩国一区二区三区视频| 色婷婷精品久久二区二区蜜臂av| 99久久国产综合精品色伊| 不卡高清视频专区| 色婷婷国产精品| 欧美性大战久久| 久久久久一区二区三区四区| 欧美一区二区黄色| 2020国产精品久久精品美国| 精品美女一区二区三区| 久久久精品2019中文字幕之3| 国产亚洲一区二区三区| 综合中文字幕亚洲| 亚洲高清免费在线| 五月天中文字幕一区二区| 麻豆国产精品777777在线| 国产盗摄一区二区三区| 99视频精品全部免费在线| 在线国产电影不卡| 日韩视频免费观看高清完整版在线观看| 欧美一区二区三区免费在线看| 欧美大片日本大片免费观看| 精品国产百合女同互慰| 亚洲欧美激情一区二区| 日日噜噜夜夜狠狠视频欧美人| 国产精一区二区三区| 色狠狠色狠狠综合| 日韩三级中文字幕| 国产精品国产自产拍在线| 天天影视涩香欲综合网| 国产福利精品导航| 欧美三级日韩三级| 久久精品水蜜桃av综合天堂| 亚洲一区二区三区国产| 精品无人码麻豆乱码1区2区| 99精品一区二区三区| 精品国产欧美一区二区| 亚洲青青青在线视频| 韩国一区二区视频| 色狠狠一区二区三区香蕉| 久久久蜜臀国产一区二区| 亚洲一区二区五区| 成人午夜激情在线| 日韩你懂的电影在线观看| 亚洲综合在线五月| 懂色av中文一区二区三区| 日韩一区二区电影在线| 亚洲黄色免费网站| 9人人澡人人爽人人精品| 日韩一二三区视频| 亚洲午夜电影在线| 91视频精品在这里| 中文在线资源观看网站视频免费不卡 | 欧美亚洲高清一区二区三区不卡| 精品国产一区二区三区av性色| 亚洲国产wwwccc36天堂| 一本大道久久a久久精二百| 国产日产亚洲精品系列| 免费的国产精品| 欧美久久婷婷综合色| 亚洲精品国久久99热| 成人久久久精品乱码一区二区三区| 精品国产91九色蝌蚪| 免费xxxx性欧美18vr| 在线综合+亚洲+欧美中文字幕| 洋洋成人永久网站入口| 91麻豆6部合集magnet| 亚洲女子a中天字幕| 99精品热视频| 亚洲三级久久久| 99久久婷婷国产综合精品电影| 国产午夜一区二区三区| 国产伦精品一区二区三区在线观看| 4438成人网| 久久99精品久久久久久| 26uuu国产日韩综合| 国产一区二区三区四 | 国产一区二区免费在线| 精品少妇一区二区三区 | 欧美激情一区二区| 国产成人精品影视| 国产精品久久久久久久久搜平片 | 国产视频在线观看一区二区三区| 国产精品影视在线观看| 欧美国产日韩亚洲一区| 99国产精品久久久久| 夜夜嗨av一区二区三区中文字幕| 欧美自拍偷拍午夜视频| 日本伊人色综合网| 精品福利一区二区三区| 国产成人自拍高清视频在线免费播放| 国产日产欧美精品一区二区三区| 成人午夜私人影院| 一区二区成人在线视频| 91精品欧美综合在线观看最新| 免费不卡在线视频| 亚洲欧洲99久久| 欧美日韩精品系列| 国产盗摄女厕一区二区三区| 亚洲色图色小说| 欧美电影免费观看高清完整版在| 成人理论电影网| 午夜av电影一区| 中文字幕成人网| 在线电影国产精品| 成人午夜在线免费| 日本麻豆一区二区三区视频| 欧美经典一区二区| 欧美日韩国产电影| 不卡的看片网站| 久久精品国产一区二区三区免费看 | 日韩成人免费在线| 中文字幕在线观看不卡视频| 欧美精品丝袜中出| aaa欧美大片| 国产一区91精品张津瑜| 亚洲影视在线观看| 中文字幕不卡三区| 精品国内二区三区| 欧美日韩一级二级三级| 成人av网址在线| 国内精品视频一区二区三区八戒 | 精品理论电影在线观看 | 色8久久精品久久久久久蜜| 久久精品国产成人一区二区三区 | 国产激情视频一区二区在线观看 | av在线不卡电影| 狠狠色丁香久久婷婷综合丁香| 亚洲黄色录像片| 国产精品久久精品日日| 日韩欧美一卡二卡| 欧美日本一区二区| 色偷偷久久一区二区三区| 国产福利一区在线| 久久精品国产成人一区二区三区 | 欧美一级二级在线观看| 91福利资源站| 欧美最猛黑人xxxxx猛交| 99精品黄色片免费大全| 成人黄色av网站在线| 国产乱码字幕精品高清av | 蜜桃视频一区二区三区在线观看| 亚洲午夜影视影院在线观看| 国产精品久久精品日日| 国产精品第13页| 17c精品麻豆一区二区免费| 国产欧美视频在线观看| 久久免费精品国产久精品久久久久| 欧美电视剧在线看免费| 精品国产三级电影在线观看| 欧美zozo另类异族| 久久色中文字幕| 国产欧美日韩综合| 国产精品视频九色porn| 最新日韩在线视频| 日韩美女视频一区| 亚洲永久精品国产| 丝袜美腿亚洲色图| 狠狠狠色丁香婷婷综合激情 | 久久久夜色精品亚洲| 久久影院视频免费| 欧美激情一区二区三区不卡| 国产精品久久久久久久久果冻传媒 | 久久综合九色综合久久久精品综合 | 成人精品国产福利| 一本高清dvd不卡在线观看| 日本高清无吗v一区| 在线综合亚洲欧美在线视频| 精品国产sm最大网站免费看| 久久精品夜色噜噜亚洲aⅴ| 欧美韩日一区二区三区四区| 1000精品久久久久久久久| 亚洲在线观看免费视频| 蜜臀久久99精品久久久画质超高清| 精品一二三四区| av资源站一区| 日韩一区和二区| 国产精品国产三级国产aⅴ中文| 亚洲一级在线观看| 国产在线一区二区| 一本大道久久a久久精二百| 日韩午夜激情视频| 亚洲色欲色欲www在线观看| 天天综合天天综合色| 懂色av噜噜一区二区三区av| 欧美亚洲一区二区在线| 久久蜜桃av一区二区天堂 | 久久精品免视看| 亚洲午夜一区二区| 国产福利视频一区二区三区| 91成人在线精品| 国产清纯在线一区二区www| 亚洲高清免费一级二级三级| 成人精品视频.| 日韩欧美亚洲一区二区| 亚洲免费看黄网站| 国产在线一区二区综合免费视频|