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

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

?? gifapi.cpp

?? 影像處理程序 基本的影像處理算法
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
 *
 * 參數:
 *   CFile& file			- 源GIF文件
 *   LPWORD lpwMemLen		- 緩沖區長度(指針)
 *   LPDWORD lpdwDataLen	- 剩余數據長度(指針)
 *   LPSTR lpSrcBuff		- 緩沖區指針
 *	 LPBOOL lpbEOF			- 結束標志
 *
 * 返回值:
 *   無
 *
 * 說明:
 *   該函數用來讀取指定GIF文件中的圖像編碼,每次最多讀取MAX_BUFF_SIZE
 * 字節,是否讀完由標志lpbEOF指定。
 *
 *************************************************************************/
void WINAPI ReadSrcData(CFile& file, LPWORD lpwMemLen, LPDWORD lpdwDataLen,
                        LPSTR lpSrcBuff, LPBOOL lpbEOF)
{
	// 判斷數據長度是否仍然大于內存大小
	if ((*lpdwDataLen) > (DWORD)(*lpwMemLen))
	{
		// 數據長度大于內存大小,表示沒有解碼完
		
		// 數據長度減內存大小
		(*lpdwDataLen) -= (DWORD)(*lpwMemLen);
	}
	else
	{
		// 數據長度不大于內存大小,表示解碼將要完成
		
		// 內存大小就是剩余數據長度
		(*lpwMemLen)    = (WORD)(*lpdwDataLen);
		
		// EOF標志設置為TRUE
		(*lpbEOF)       = TRUE;
	}
	
	// 讀取編碼數據
	file.Read(lpSrcBuff, (*lpwMemLen));
	
	// 返回
	return;
}

/*************************************************************************
 *
 * 函數名稱:
 *   DecodeGIF_LZW()
 *
 * 參數:
 *   CFile& file			- 源GIF文件
 *   LPSTR lpDIBBits		- 指向要保存的DIB圖像指針
 *   LPGIFD_VAR lpGIFDVar	- 指向GIFC_VAR結構的指針
 *	 WORD wWidthBytes		- 每行圖像字節數
 *
 * 返回值:
 *   無
 *
 * 說明:
 *   該函數對指定GIF_LZW編碼數據進行解碼。
 *
 *************************************************************************/
void WINAPI DecodeGIF_LZW(CFile& file, LPSTR lpDIBBits,
						  LPGIFD_VAR lpGIFDVar,WORD wWidthBytes)
{
	// 指向編碼后圖像數據的指針
	BYTE *	lpDst;
	
	// 內存分配句柄
	HANDLE hPrefix;
	HANDLE hSuffix;
	HANDLE hStack;
	HANDLE hImage;
	
	// 用于字串表搜索的索引
	LPWORD lpwPrefix;
	LPBYTE lpbySuffix;
	LPBYTE lpbyStack;
	LPBYTE lpbyStackBgn;
	
	// 指向圖像當前行解碼結果的指針
	LPSTR  lpImageBgn;
	
	// 指向當前編碼像素的指針
	LPSTR  lpImage;
	
	// 計算當前數據圖像的偏移量
	DWORD  dwDataNdx;
	
	// LZW_CLEAR
	WORD   wLZW_CLEAR;
	
	// LZW_EOI
	WORD   wLZW_EOI;
	
	// LZW_MinCodeLen
	BYTE   byLZW_MinCodeLen;
	
	// 字串表索引
	WORD   wNowTableNdx;
	WORD   wTopTableNdx;
	
	// 當前圖像的行數
	WORD   wRowNum;
	
	// 計數
	WORD   wWidthCnt;
	WORD   wBitCnt;
	WORD   wRowCnt;
	
	// 循環變量
	WORD   wi;
	
	// 交錯方式存儲時每次增加的行數
	WORD   wIncTable[5]  = { 8,8,4,2,0 }; 
	
	// 交錯方式存儲時起始行數
	WORD   wBgnTable[5]  = { 0,4,2,1,0 }; 
	
	// 塊大小
	BYTE   byBlockSize;
	
	// 塊索引
	BYTE   byBlockNdx;
	
	DWORD  dwData;
	
	// 當前編碼
	WORD   wCode;
	
	// 上一個編碼
	WORD   wOldCode;
	
	// 臨時索引
	WORD   wTempNdx;
	
	WORD   wCodeMask[13] = {0x0000,
							0x0001,0x0003,0x0007,0x000F,
							0x001F,0x003F,0x007F,0x00FF,
							0x01FF,0x03FF,0x07FF,0x0FFF
							};
	
	BYTE   byLeftBits;
	BYTE   byFirstChar;
	BYTE   byCode;
	BYTE   byCurrentBits;
	BYTE   byPass;
	
	// 臨時字節變量
	BYTE   byTempChar;
	
	// 給字串表分配內存
	hPrefix          = GlobalAlloc(GHND,(DWORD)(MAX_TABLE_SIZE<<1));
	hSuffix          = GlobalAlloc(GHND,(DWORD)MAX_TABLE_SIZE);
	hStack           = GlobalAlloc(GHND,(DWORD)MAX_TABLE_SIZE);
	hImage           = GlobalAlloc(GHND,(DWORD)wWidthBytes);
	
	// 鎖定內存
	lpwPrefix        = (LPWORD)GlobalLock(hPrefix);
	lpbySuffix       = (LPBYTE)GlobalLock(hSuffix);
	lpbyStack        = (LPBYTE)GlobalLock(hStack);
	lpbyStackBgn     = lpbyStack;
	lpImage          = (LPSTR)GlobalLock(hImage);
	lpImageBgn       = lpImage;
	
	// 讀取GIF LZW最小編碼大小
	byLZW_MinCodeLen = *lpGIFDVar->lpBgnBuff++;
	
	byCurrentBits    = byLZW_MinCodeLen + (BYTE)0x01;
	
	// 計算LZW_CLEAR
	wLZW_CLEAR       = 1 << byLZW_MinCodeLen;
	
	// 計算LZW_EOI
	wLZW_EOI         = wLZW_CLEAR + 1;
	
	// 計算字串表索引
	wNowTableNdx     = wLZW_CLEAR + 2;
	wTopTableNdx     = 1 << byCurrentBits;
	
	// 賦初值
	dwData           = 0UL;
	wBitCnt          = lpGIFDVar->wBits;
	wRowNum          = 0;
	wRowCnt          = 1;
	wWidthCnt        = 0;
	wCode            = 0;
	wOldCode         = 0xFFFF;
	byBlockSize      = 0x01;
	byBlockNdx       = 0x00;
	byLeftBits       = 0x00;
	byTempChar       = 0x00;
	byPass           = 0x00;
	
	// 讀取下一個編碼
	while(byLeftBits < byCurrentBits)
	{
		// 讀取下一個字符
		
		// 判斷是否讀完一個數據塊
		if (++byBlockNdx == byBlockSize)
		{
			// 讀取下一個數據塊
			byBlockSize = *lpGIFDVar->lpBgnBuff++;
			byBlockNdx  = 0x00;
			
			// 判斷是否讀完
			if ((lpGIFDVar->lpBgnBuff == lpGIFDVar->lpEndBuff) &&
			    !lpGIFDVar->bEOF)
			{
				// 讀取下一個數據塊
				ReadSrcData(file,&lpGIFDVar->wMemLen,
							&lpGIFDVar->dwDataLen,
							lpGIFDVar->lpDataBuff,&lpGIFDVar->bEOF);
				
				// 指針重新賦值
				lpGIFDVar->lpBgnBuff = lpGIFDVar->lpDataBuff;
				lpGIFDVar->lpEndBuff = lpGIFDVar->lpBgnBuff + lpGIFDVar->wMemLen;
			}
		}
		
		// 下一個字符
		byCode      = *lpGIFDVar->lpBgnBuff++;
		
		// 移位
		dwData     |= ((DWORD)byCode << byLeftBits);
		byLeftBits += 0x08;
		
		// 判斷是否讀完
		if ((lpGIFDVar->lpBgnBuff == lpGIFDVar->lpEndBuff) &&
		    !lpGIFDVar->bEOF)
		{
			// 讀取下一個數據塊
			ReadSrcData(file,&lpGIFDVar->wMemLen,
						&lpGIFDVar->dwDataLen,
						lpGIFDVar->lpDataBuff,&lpGIFDVar->bEOF);
			
			// 指針重新賦值
			lpGIFDVar->lpBgnBuff = lpGIFDVar->lpDataBuff;
			lpGIFDVar->lpEndBuff = lpGIFDVar->lpBgnBuff + lpGIFDVar->wMemLen;
		}
	}
	
	wCode       = (WORD)dwData & wCodeMask[byCurrentBits];
	dwData    >>= byCurrentBits;
	byLeftBits -= byCurrentBits;
	
	// 解碼
	while(wCode != wLZW_EOI)
	{
		// 當前編碼不是LZW_EOI碼
		
		// 判斷是否是LZW_CLEAR碼
		if (wCode == wLZW_CLEAR)
		{
			// 是LZW_CLEAR,清除字串表
			
			// 重新初始化字串表
			for(wi = 0; wi < wLZW_CLEAR; wi++)
			{
				*(lpwPrefix  + wi)  = 0xFFFF;
				*(lpbySuffix + wi) = (BYTE)wi;
			}
			
			for(wi = wNowTableNdx; wi < MAX_TABLE_SIZE; wi++)
			{
				*(lpwPrefix+wi)  = 0xFFFF;
				*(lpbySuffix+wi) = 0x00;
			}
			
			byCurrentBits = byLZW_MinCodeLen + (BYTE)0x01;
			wNowTableNdx  = wLZW_CLEAR + 2;
			wTopTableNdx  = 1 << byCurrentBits;
			wOldCode      = 0xFFFF;
			
			// 獲取下一個編碼
			while(byLeftBits < byCurrentBits)
			{
				// 讀取下一個字符
				
				// 判斷是否讀完一個數據塊
				if (++byBlockNdx == byBlockSize)
				{
					// 讀取下一個數據塊
					byBlockSize = *lpGIFDVar->lpBgnBuff++;
					byBlockNdx  = 0x00;
					
					// 判斷是否讀完
					if ((lpGIFDVar->lpBgnBuff == lpGIFDVar->lpEndBuff) &&
						!lpGIFDVar->bEOF)
					{
						// 讀取下一個數據塊
						ReadSrcData(file, &lpGIFDVar->wMemLen,
									&lpGIFDVar->dwDataLen,
									lpGIFDVar->lpDataBuff,
									&lpGIFDVar->bEOF);
						
						// 指針重新賦值
						lpGIFDVar->lpBgnBuff = lpGIFDVar->lpDataBuff;
						lpGIFDVar->lpEndBuff = lpGIFDVar->lpBgnBuff +
											   lpGIFDVar->wMemLen;
					}
				}
				byCode      = *lpGIFDVar->lpBgnBuff++;
				dwData     |= ((DWORD)byCode << byLeftBits);
				byLeftBits += 0x08;
				
				// 判斷是否讀完
				if ((lpGIFDVar->lpBgnBuff == lpGIFDVar->lpEndBuff) &&
					 !lpGIFDVar->bEOF)
				{
					// 讀取下一個數據塊
					ReadSrcData(file,&lpGIFDVar->wMemLen,
								&lpGIFDVar->dwDataLen,
								lpGIFDVar->lpDataBuff,&lpGIFDVar->bEOF);
					
					// 指針重新賦值
					lpGIFDVar->lpBgnBuff = lpGIFDVar->lpDataBuff;
					lpGIFDVar->lpEndBuff = lpGIFDVar->lpBgnBuff + lpGIFDVar->wMemLen;
				}
			}
			wCode       = (WORD)dwData & wCodeMask[byCurrentBits];
			dwData    >>= byCurrentBits;
			byLeftBits -= byCurrentBits;
			
			// 判斷編碼是否為LZW_EOI
			if (wCode!=wLZW_EOI)
			{
				// 這里沒有用到lpbyStack[0]
				lpbyStack  ++;
				
				// 將數據壓入堆棧
				while((*(lpwPrefix+wCode)) != 0xFFFF)
				{
					*lpbyStack++ = *(lpbySuffix+wCode);
					wCode        = *(lpwPrefix+wCode);
				}
				*lpbyStack  = *(lpbySuffix+wCode);
				byFirstChar = *lpbyStack;
				
				// 輸出數據
				while(lpbyStack>lpbyStackBgn)
				{
					byTempChar |= (*lpbyStack-- << (8-wBitCnt));
					
					if (wBitCnt==8)
					{
						*lpImage++ = byTempChar;
						byTempChar = 0x00;
						wBitCnt    = lpGIFDVar->wBits;
					}
					else
					{
						wBitCnt   += lpGIFDVar->wBits;
					}
					
					wWidthCnt  ++;
					
					if (wWidthCnt==lpGIFDVar->wWidth)
					{
						if (wBitCnt!=lpGIFDVar->wBits)
						{
							*lpImage   = byTempChar;
							byTempChar = 0x00;
							wBitCnt    = lpGIFDVar->wBits;
						}
						
						// 圖像當前行偏移量
						dwDataNdx = (DWORD)(lpGIFDVar->wDepth - 1 - wRowNum) * (DWORD)wWidthBytes;
						
						// 圖像當前行起始位置
						lpDst = (BYTE *)lpDIBBits + dwDataNdx;
						
						// 賦值
						memcpy(lpDst, lpImageBgn, wWidthBytes);
						
						lpImage   = lpImageBgn;
						
						// 判斷是否按照交錯方式保存
						if (lpGIFDVar->bInterlace)
						{
							// 交錯方式
							
							// 計算下一行的行號
							wRowNum += wIncTable[byPass];
							if (wRowNum >= lpGIFDVar->wDepth)
							{
								byPass ++;
								wRowNum = wBgnTable[byPass];
							}
						}
						else
						{
							// 非交錯方式,行號直接加1
							wRowNum ++;
						}
						wWidthCnt = 0;
					}
				}
			}
		}
		else
		{
			// 這里沒有用到lpbyStack[0]
			lpbyStack  ++;
			
			// 判斷字符串是否在字串表中
			if (wCode < wNowTableNdx)
			{
				// 不在字串表中
				wTempNdx   = wCode;
			}
			else
			{
				// 在字串表中
				wTempNdx     = wOldCode;
				*lpbyStack++ = byFirstChar;
			}
			
			// 將數據壓入堆棧
			while((*(lpwPrefix+wTempNdx)) != 0xFFFF)
			{
				*lpbyStack++ = *(lpbySuffix+wTempNdx);
				wTempNdx     = *(lpwPrefix+wTempNdx);
			}
			*lpbyStack  = *(lpbySuffix+wTempNdx);
			byFirstChar = *lpbyStack;
			
			// 將字符串添加到字串表中
			*(lpwPrefix+wNowTableNdx)  = wOldCode;
			*(lpbySuffix+wNowTableNdx) = byFirstChar;
			if (++wNowTableNdx==wTopTableNdx && byCurrentBits<12)
			{
				byCurrentBits ++;
				wTopTableNdx   = 1 << byCurrentBits;
			}
			
			// 輸出數據
			while(lpbyStack>lpbyStackBgn)
			{
				byTempChar |= (*lpbyStack-- << (8-wBitCnt));
				if (wBitCnt==8)
				{
					*lpImage++ = byTempChar;
					byTempChar = 0x00;
					wBitCnt    = lpGIFDVar->wBits;
				}
				else
				{
					wBitCnt   += lpGIFDVar->wBits;
				}
				
				wWidthCnt  ++;
				if (wWidthCnt==lpGIFDVar->wWidth)
				{
					if (wBitCnt!=lpGIFDVar->wBits)
					{
						*lpImage   = byTempChar;
						byTempChar = 0x00;
						wBitCnt    = lpGIFDVar->wBits;
					}
					
					// 圖像當前行偏移量
					dwDataNdx = (DWORD)(lpGIFDVar->wDepth - 1 - wRowNum) * (DWORD)wWidthBytes;
					
					// 圖像當前行起始位置
					lpDst = (BYTE *)lpDIBBits + dwDataNdx;
					
					// 賦值
					memcpy(lpDst, lpImageBgn, wWidthBytes);
					
					lpImage   = lpImageBgn;
					
					// 判斷是否按照交錯方式保存
					if (lpGIFDVar->bInterlace)
					{
						// 交錯方式
						
						// 計算下一行的行號
						wRowNum += wIncTable[byPass];
						if (wRowNum >= lpGIFDVar->wDepth)
						{
							byPass ++;
							wRowNum = wBgnTable[byPass];
						}
					}
					else
					{
						// 非交錯方式,行號直接加1
						wRowNum ++;
					}
					wWidthCnt = 0;
				}
			}
		}
		wOldCode = wCode;
		
		// 讀取下一個編碼
		while(byLeftBits < byCurrentBits)
		{
			// 讀取下一個字符
			
			// 判斷是否讀完一個數據塊
			if (++byBlockNdx == byBlockSize)
			{
				// 讀取下一個數據塊
				byBlockSize = *lpGIFDVar->lpBgnBuff++;
				byBlockNdx  = 0x00;
				
				// 判斷是否讀完
				if ((lpGIFDVar->lpBgnBuff == lpGIFDVar->lpEndBuff) &&
					 !lpGIFDVar->bEOF)
				{
					// 讀取下一個數據塊
					ReadSrcData(file,&lpGIFDVar->wMemLen,
								&lpGIFDVar->dwDataLen,
								lpGIFDVar->lpDataBuff,&lpGIFDVar->bEOF);
					
					// 指針重新賦值
					lpGIFDVar->lpBgnBuff = lpGIFDVar->lpDataBuff;
					lpGIFDVar->lpEndBuff = lpGIFDVar->lpBgnBuff + lpGIFDVar->wMemLen;
				}
			}
			byCode      = *lpGIFDVar->lpBgnBuff++;
			dwData     |= ((DWORD)byCode << byLeftBits);
			byLeftBits += 0x08;
			
			// 判斷是否讀完
			if ((lpGIFDVar->lpBgnBuff == lpGIFDVar->lpEndBuff) &&
				  !lpGIFDVar->bEOF)
			{
				// 讀取下一個數據塊
				ReadSrcData(file,&lpGIFDVar->wMemLen,
							&lpGIFDVar->dwDataLen,
							lpGIFDVar->lpDataBuff,&lpGIFDVar->bEOF);
				
				// 指針重新賦值
				lpGIFDVar->lpBgnBuff = lpGIFDVar->lpDataBuff;
				lpGIFDVar->lpEndBuff = lpGIFDVar->lpBgnBuff + lpGIFDVar->wMemLen;
			}
		}
		wCode       = (WORD)dwData & wCodeMask[byCurrentBits];
		dwData    >>= byCurrentBits;
		byLeftBits -= byCurrentBits;
	}
	
	// 釋放內存
	GlobalUnlock(hPrefix);
	GlobalUnlock(hSuffix);
	GlobalUnlock(hStack);
	GlobalFree(hPrefix);
	GlobalFree(hSuffix);
	GlobalFree(hStack);
	
	// 返回
	return;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人一区二区三区中文字幕| 日韩一区在线播放| 麻豆国产91在线播放| 日韩欧美一级二级| 国产精选一区二区三区| 亚洲国产精品二十页| 国产成人在线看| 国产精品久久久久久久久久久免费看| 色综合天天做天天爱| 青青草成人在线观看| 国产精品区一区二区三区| 欧美日产国产精品| 国产iv一区二区三区| 亚洲成人综合视频| 欧美激情中文字幕一区二区| 欧美日韩精品免费观看视频| 国产麻豆精品95视频| 亚洲妇女屁股眼交7| 国产日产精品1区| 欧美精品欧美精品系列| 懂色av中文字幕一区二区三区 | 蜜臀av一区二区三区| 日本不卡一二三区黄网| 国产精品三级在线观看| 日韩欧美在线网站| 色婷婷综合中文久久一本| 国产美女主播视频一区| 日韩综合一区二区| 亚洲欧洲制服丝袜| 99re6这里只有精品视频在线观看| 国产日韩欧美电影| 国产成人综合自拍| 亚洲人一二三区| 欧美日韩精品综合在线| 紧缚奴在线一区二区三区| 欧美日韩一区二区三区视频 | 国产人妖乱国产精品人妖| 日韩电影在线看| 国产精品午夜久久| 色哟哟欧美精品| 亚洲国产精品久久一线不卡| 4438x亚洲最大成人网| 亚洲在线视频免费观看| 欧美经典一区二区| 欧美性一二三区| 97久久超碰精品国产| 日本女优在线视频一区二区| 91老师国产黑色丝袜在线| 国产精品美女久久久久久2018| 日韩精品免费专区| 国产精品久久久久永久免费观看| 最新不卡av在线| 欧美一区二区福利视频| 国产成人午夜视频| 国产在线不卡一区| 精品在线一区二区| 国产又粗又猛又爽又黄91精品| 免费在线看成人av| 麻豆精品一区二区三区| 美女一区二区三区在线观看| 三级成人在线视频| 午夜视频在线观看一区二区 | 精品视频一区二区不卡| 欧美在线你懂得| 欧美日韩一区小说| 91麻豆精品国产91久久久更新时间| 欧美性猛交xxxx乱大交退制版| 欧美视频三区在线播放| 欧美亚洲动漫精品| 91精品免费观看| 精品成人佐山爱一区二区| 久久综合狠狠综合久久综合88| 久久亚洲一区二区三区明星换脸| 欧美肥胖老妇做爰| 911精品产国品一二三产区| 欧美电视剧免费全集观看| 国产日产精品一区| 一区二区三区小说| 丝袜诱惑亚洲看片| 九九久久精品视频| 成人综合激情网| 91成人在线精品| 在线不卡的av| 一区二区日韩av| 麻豆精品视频在线观看| 国产美女主播视频一区| 国产成人一级电影| 国产黄人亚洲片| 97精品视频在线观看自产线路二| 在线观看中文字幕不卡| 日本韩国欧美三级| 欧美日韩美少妇| 在线播放中文字幕一区| 国产视频一区在线播放| 亚洲欧美日韩系列| 日本va欧美va欧美va精品| 国产传媒久久文化传媒| 在线中文字幕一区| 精品久久久久久久人人人人传媒| 中文字幕欧美激情| 石原莉奈在线亚洲三区| 国产黄色精品视频| 欧美日韩国产首页在线观看| 精品av久久707| 亚洲图片欧美色图| 丰满亚洲少妇av| 91麻豆精品国产自产在线观看一区 | 婷婷丁香激情综合| 成人性色生活片免费看爆迷你毛片| 欧美综合色免费| 久久综合久久综合久久| 国产精品国产馆在线真实露脸| 亚洲视频在线观看一区| 麻豆精品一区二区综合av| 色综合久久综合中文综合网| 久久综合给合久久狠狠狠97色69| 亚洲精品成人悠悠色影视| 国产一区在线观看视频| 欧美高清dvd| 一区二区三区.www| 欧美日韩三级视频| 自拍偷自拍亚洲精品播放| 久久草av在线| 欧亚一区二区三区| 国产精品视频一二三| 轻轻草成人在线| 欧美日韩一区视频| 中文字幕佐山爱一区二区免费| 国产一区二区免费看| 91精品国产入口在线| 亚洲小说春色综合另类电影| 久久精品国产免费看久久精品| 9久草视频在线视频精品| 欧美变态口味重另类| 日本一不卡视频| 欧美日韩久久一区| 亚洲愉拍自拍另类高清精品| 99re这里都是精品| 日韩一区在线播放| av成人免费在线观看| 国产免费成人在线视频| 国模少妇一区二区三区| 日韩欧美一级二级| 看电影不卡的网站| 精品日韩av一区二区| 九色综合狠狠综合久久| 日韩欧美国产综合一区| 青青草97国产精品免费观看 | 成人综合在线观看| 日韩欧美国产小视频| 日韩中文字幕亚洲一区二区va在线| 色综合久久久网| 久久久久久久久久久99999| 麻豆精品视频在线观看视频| 欧美一区二区视频在线观看 | 91黄色小视频| 伊人性伊人情综合网| 色哟哟国产精品免费观看| 一区二区三区中文字幕| 色噜噜久久综合| 一区二区三区四区激情 | 自拍偷自拍亚洲精品播放| 欧美变态tickling挠脚心| 久久er99精品| 国产亚洲一区字幕| 不卡一卡二卡三乱码免费网站| 亚洲国产经典视频| 99国产精品国产精品毛片| 一区二区三区精品在线| 欧美在线一区二区| 免费观看久久久4p| 国产日产欧美一区二区三区 | 国产精品91xxx| 亚洲美女免费视频| 91福利视频在线| 激情丁香综合五月| 亚洲精品老司机| 精品成人一区二区| 色妹子一区二区| 国产综合色视频| 亚洲精品欧美在线| 久久久亚洲综合| 欧美色综合网站| 国产福利一区二区三区视频在线| 亚洲永久免费视频| 国产三级久久久| 制服丝袜在线91| 91小视频在线观看| 国产麻豆视频一区二区| 亚洲不卡在线观看| 国产精品久久久久一区二区三区| 欧美一二三四在线| 色婷婷激情久久| 懂色av一区二区在线播放| 免费在线观看一区二区三区| 亚洲日本一区二区| 国产欧美日韩视频在线观看| 5月丁香婷婷综合| 欧亚洲嫩模精品一区三区| 成人黄色在线视频|