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

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

?? imagedecoder.cpp

?? Evc下的圖片解碼類
?? CPP
字號:
/*
ImageDecoder.cpp
  Class ImageDecoder Implementation, base upon imaging com interface.
*/

#include "ImageDecoder.h"
#include "debug.h"

ImageDecoder::ImageDecoder(TCHAR* ImageFileName)
{
	HRESULT hr;
	ImageInfo ii;

	lstrcpy(this->filename, ImageFileName);
	
	if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED)))
    {
        DBGMSG(TEXT("CoInitializeEx failed, hr: 0x%08x\n"), hr);
		goto finish;
    }

	hr = CoCreateInstance(CLSID_ImagingFactory, 
                          NULL, 
                          CLSCTX_INPROC_SERVER, 
                          IID_IImagingFactory, 
                          (void**) &pImagingFactory);
    if(FAILED(hr))
    {
		DBGMSG(TEXT("CoCreateInstance failed, hr:0x08x\n"), hr);
		goto finish;
	}
	DBGMSG(TEXT("Opening %s"), filename);

	if(FAILED(hr = CreateStreamOnFile(filename, &pStream)))
	{
		DBGMSG(TEXT("CreateStreamOnFile failed, hr: 0x%08x\n"), hr);
		goto finish;
	}

	GetCodecCLSID(pImagingFactory, NULL, NULL, eDecoder);
	
	if(FAILED(hr = pImagingFactory->CreateImageDecoder(pStream, DecoderInitFlagBuiltIn1st, &pImageDecoder)))
	{
		DBGMSG(TEXT("CreateImageDecoder failed, hr: 0x%08x\n"), hr);
		goto finish;
	}
		
    if (FAILED(hr = pImageDecoder->GetFrameCount(&FrameDimensionTime, &nFrameCount)))
	{
        //DBGMSG(TEXT("GetFrameCount failed, hr: 0x%08x\n"), hr);
        nFrameCount = 0;
        //JPG file will fail this call, just pass it
		//goto finish;
	}

	pImageDecoder->GetImageInfo(&ii);
	
    this->ii = ii;

	if(FAILED(hr = pImagingFactory->CreateNewBitmap(ii.Width, ii.Height, ii.PixelFormat, &pBitmapImage)))
	{
		DBGMSG(TEXT("CreateNewBitmap failed, hr = 0x%08x\n"), hr);
		goto finish;
	}
	
	if(FAILED(hr = pBitmapImage->QueryInterface(IID_IImageSink, (void**)&pImageSink)))
	{
		DBGMSG(TEXT("QueryInterface for ImageSink from BitmapImage failed, hr: 0x%08x\n"), hr);
		goto finish;
	}
	
	if(FAILED(hr = pBitmapImage->QueryInterface(IID_IImage, (void**)&pImage)))
	{
		DBGMSG(TEXT("QueryInterface for Image from BitmapImage failed, hr: 0x%08x\n"), hr);
		goto finish;
	}

	if (FAILED(hr = pBitmapImage->QueryInterface(IID_IBasicBitmapOps, (void**)&pBasicBitmapOps)))
	{
		DBGMSG(TEXT("QueryInterface for BasicBitmapOps from BitmapImage failed, hr: 0x%08x\n"), hr);
		goto finish;
	}
	state = Init;
	goto finish_ok;

finish:
	state = UnInit;
finish_ok:
	Angle = 0;
	pBitmapImageRotate = NULL;
	pImageRotate = NULL;
    nSelectedFrame = 0;
	return;
}

ImageDecoder::ImageDecoder(HRSRC hRes)
{
	HRESULT hr;
	ImageInfo ii;

	//lstrcpy(this->filename, ImageFileName);
	
	if (FAILED(hr = CoInitializeEx(NULL, COINIT_MULTITHREADED)))
    {
        DBGMSG(TEXT("CoInitializeEx failed, hr: 0x%08x\n"), hr);
		goto finish;
    }

	hr = CoCreateInstance(CLSID_ImagingFactory, 
                          NULL, 
                          CLSCTX_INPROC_SERVER, 
                          IID_IImagingFactory, 
                          (void**) &pImagingFactory);
    if(FAILED(hr))
    {
		DBGMSG(TEXT("CoCreateInstance failed, hr:0x08x\n"), hr);
		goto finish;
	}
	
	//DBGMSG(TEXT("Opening %s"), filename);

	//if(FAILED(hr = CreateStreamOnFile(filename, &pStream)))
	if(FAILED(hr = CreateStreamOnResource(hRes, &pStream)))
	{
		DBGMSG(TEXT("CreateStreamOnFile failed, hr: 0x%08x\n"), hr);
		goto finish;
	}

	GetCodecCLSID(pImagingFactory, NULL, NULL, eDecoder);
	
	if(FAILED(hr = pImagingFactory->CreateImageDecoder(pStream, DecoderInitFlagBuiltIn1st, &pImageDecoder)))
	{
		DBGMSG(TEXT("CreateImageDecoder failed, hr: 0x%08x\n"), hr);
		goto finish;
	}
		
    if (FAILED(hr = pImageDecoder->GetFrameCount(&FrameDimensionTime, &nFrameCount)))
	{
        //DBGMSG(TEXT("GetFrameCount failed, hr: 0x%08x\n"), hr);
        nFrameCount = 0;
        //JPG file will fail this call, just pass it
		//goto finish;
	}

	pImageDecoder->GetImageInfo(&ii);
	
    this->ii = ii;

	if(FAILED(hr = pImagingFactory->CreateNewBitmap(ii.Width, ii.Height, ii.PixelFormat, &pBitmapImage)))
	{
		DBGMSG(TEXT("CreateNewBitmap failed, hr = 0x%08x\n"), hr);
		goto finish;
	}
	
	if(FAILED(hr = pBitmapImage->QueryInterface(IID_IImageSink, (void**)&pImageSink)))
	{
		DBGMSG(TEXT("QueryInterface for ImageSink from BitmapImage failed, hr: 0x%08x\n"), hr);
		goto finish;
	}
	
	if(FAILED(hr = pBitmapImage->QueryInterface(IID_IImage, (void**)&pImage)))
	{
		DBGMSG(TEXT("QueryInterface for Image from BitmapImage failed, hr: 0x%08x\n"), hr);
		goto finish;
	}

	if (FAILED(hr = pBitmapImage->QueryInterface(IID_IBasicBitmapOps, (void**)&pBasicBitmapOps)))
	{
		DBGMSG(TEXT("QueryInterface for BasicBitmapOps from BitmapImage failed, hr: 0x%08x\n"), hr);
		goto finish;
	}
	state = Init;
	goto finish_ok;

finish:
	state = UnInit;
finish_ok:
	Angle = 0;
	pBitmapImageRotate = NULL;
	pImageRotate = NULL;
    nSelectedFrame = 0;
	return;
}

ImageDecoder::~ImageDecoder()
{
    if(pImageRotate)
	{
		pImageRotate->Release();
		pImageRotate = NULL;
	}

	if(pBitmapImageRotate)
	{
		pBitmapImageRotate->Release();
		pBitmapImageRotate = NULL;
	}
	if(pBasicBitmapOps)
	{
		pBasicBitmapOps->Release();
		pBasicBitmapOps = NULL;
	}
    if(pImage)
	{
		pImage->Release();
        pImage = NULL;
	}
	if(pImageSink)	
	{
		pImageSink->Release();
		pImageSink = NULL;
	}
	if(pBitmapImage)
	{
		pBitmapImage->Release();
        pBitmapImage = NULL;
	}
    if(pImageDecoder)
	{
		pImageDecoder->Release();
		pImageDecoder = NULL;
	}
    if(pStream)
	{
		pStream->Release();
        pStream = NULL;
	}
    if(pImagingFactory)
	{
		pImagingFactory->Release();
		pImagingFactory = NULL;
	}

	CoUninitialize();
	return;
}

void ImageDecoder::Decode() //decode the image
{
	HRESULT hr;
	if (FAILED(hr = pImageDecoder->BeginDecode(pImageSink, NULL)))
	{
		DBGMSG(TEXT("BeginDecode into Bitmap Image failed, hr = 0x%08d\n"), hr);
		goto finish;
	}
	
	while (E_PENDING == (hr = pImageDecoder->Decode()))
	{
		Sleep(0);
	}

	hr = pImageDecoder->EndDecode(hr);
	
	if (FAILED(hr))
	{
		DBGMSG(TEXT("Decoding failed, hr = 0x%08x\n"), hr);
		goto finish;
	}
	state = Decoded;
finish:
	return;
}

void ImageDecoder::Rotate(int Angle)
{
	this->Angle = Angle;
}

StateType ImageDecoder::State()
{
	return state;
}

#if 0
TCHAR* ImageDecoder::FileName()
{
	//return filename;
}
#endif

int ImageDecoder::Width()
{
	return ii.Width;
}

int ImageDecoder::Height()
{
	return ii.Height;
}

UINT ImageDecoder::FrameCount()
{
    return nFrameCount;
}

void ImageDecoder::SelectNextFrame()
{
    HRESULT hr;
    nSelectedFrame++;
    if(nSelectedFrame > (nFrameCount - 1))
    {
        nSelectedFrame = 0;
    }

    ASSERT(pBitmapImage);
    pBitmapImage->Release();

    ASSERT(pImageSink);    
    pImageSink->Release();

    ASSERT(pImage);
    pImage->Release();
    
    if (FAILED(hr = pImageDecoder->SelectActiveFrame(&FrameDimensionTime, nSelectedFrame)))
    {
        ASSERT(0);
    }
    if (FAILED(hr = pImagingFactory->CreateNewBitmap(ii.Width, ii.Height, ii.PixelFormat, &pBitmapImage)))
	{
		DBGMSG(TEXT("CreateNewBitmap failed, hr = 0x%08x\n"), hr);
	    ASSERT(0);
	}
	
    if (FAILED(hr = pBitmapImage->QueryInterface(IID_IImageSink, (void**)&pImageSink)))
    {
        DBGMSG(TEXT("QueryInterface for ImageSink from BitmapImage failed, hr: 0x%08x\n"), hr);
        ASSERT(0);
    }
    
    if (FAILED(hr = pBitmapImage->QueryInterface(IID_IImage, (void**)&pImage)))
    {
        DBGMSG(TEXT("QueryInterface for Image from BitmapImage failed, hr: 0x%08x\n"), hr);
        ASSERT(0);
    }
}
void ImageDecoder::Draw(HDC hdc, RECT &dstRect)
{
	RECT rc;
	HRESULT hr;
	float fAngle = (float)Angle;
	
	GetDestRect(ii.Width, ii.Height, dstRect.right, dstRect.bottom, rc);
	
	if(Angle != 0)
	{
		if(pImageRotate)
		{
			pImageRotate->Release();
			pImageRotate = NULL;
		}
		if(pBitmapImageRotate)
		{
			pBitmapImageRotate->Release();
			pBitmapImageRotate = NULL;
		}

		if(FAILED(hr = pBasicBitmapOps->Rotate(fAngle, InterpolationHintDefault, &pBitmapImageRotate)))
		{
			DBGMSG(TEXT("Rotate Image failed, hr: 0x%08x\n"), hr);
		}
		
		if(FAILED(hr = pBitmapImageRotate->QueryInterface(IID_IImage, (void**)&pImageRotate)))
		{
			DBGMSG(TEXT("QueryInterface for Image from BitmapImage failed, hr: 0x%08x\n"), hr);
		}

		pImageRotate->Draw(hdc, &rc, NULL);
	}
	else
	{
		pImage->Draw(hdc, &rc, NULL);
	}

}

void ImageDecoder::Flip()
{
}

void ImageDecoder::Resize()
{
}

void ImageDecoder::AdjustBrightness()
{
}

void ImageDecoder::AdjustContrast()
{
}

void ImageDecoder::AdjustGamma()
{
}


BOOL ImageDecoder::GetCodecCLSID(IImagingFactory* pImagingFactory, CLSID * pclsid, WCHAR * wszMimeType, CodecType ctCodec)
{
    UINT uiCount;
    ImageCodecInfo * codecs;
    HRESULT hr;
    BOOL fRet = FALSE;
    TCHAR * tszCodec;

    if(eEncoder == ctCodec)
    {
        hr = pImagingFactory->GetInstalledEncoders(&uiCount, &codecs);
        tszCodec = TEXT("Encoder");
    }
    else
    {
        hr = pImagingFactory->GetInstalledDecoders(&uiCount, &codecs);
        tszCodec = TEXT("Decoder");
    }
    if(FAILED(hr))
    {
        DBGMSG(TEXT("GetInstalled%ss returned 0x%08x\n"), tszCodec, hr);
        return FALSE;
    }

    for(UINT i = 0; i < uiCount; i++)
    {
        //DBGMSG(TEXT("%s %d of %d: MimeType = %s\n"), tszCodec, i + 1, uiCount, codecs[i].MimeType);
        if (wszMimeType && !wcscmp(wszMimeType, codecs[i].MimeType))
        {
            *pclsid = codecs[i].Clsid;
            fRet = TRUE;
            break;
        }
    }
    CoTaskMemFree(codecs);
    return fRet;
}

HRESULT ImageDecoder::CreateStreamOnFile(const TCHAR * tszFilename, IStream ** ppStream)
{
    HRESULT hrRet = S_OK;
    HGLOBAL hg = NULL;
    HANDLE hFile = NULL;
    DWORD dwSize, dwRead;
    BYTE* pbLocked = NULL;

    // Open the file
    hFile = CreateFile(tszFilename, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
    if(INVALID_HANDLE_VALUE == hFile)
    {
        DBGMSG(TEXT("CreateFile failed with GLE = %d\n"), GetLastError());
        hrRet = 0x80000000 + GetLastError();
        goto error;
    }

    dwSize = GetFileSize(hFile, NULL);
    if(0xffffffff == dwSize)
    {
        DBGMSG(TEXT("GetFileSize failed with GLE = %d\n"), GetLastError());
        hrRet = 0x80000000 + GetLastError();
        goto error;
    }

    // Open a memory object
    hg = GlobalAlloc(GMEM_MOVEABLE, dwSize);
    if(NULL == hg)
    {
        DBGMSG(TEXT("GlobalAlloc failed with GLE = %d\n"), GetLastError());
        hrRet = 0x80000000 + GetLastError();
        goto error;
    }

    // Ge a pointer to the memory we just allocated
    pbLocked = (BYTE*) GlobalLock(hg);
    if(NULL == pbLocked)
    {
        DBGMSG(TEXT("GlobalLock failed with GLE = %d\n"), GetLastError());
        hrRet = 0x80000000 + GetLastError();
        goto error;
    }

    // copy the file
    if(!ReadFile(hFile, pbLocked, dwSize, &dwRead, NULL))
    {
        DBGMSG(TEXT("ReadFile failed with GLE = %d\n"), GetLastError());
        hrRet = 0x80000000 + GetLastError();
        goto error;
    }

    GlobalUnlock(hg);
    
    // Create the stream
    hrRet = CreateStreamOnHGlobal(hg, TRUE, ppStream);

    CloseHandle(hFile);
    return hrRet;
error:
    if(pbLocked)
        GlobalUnlock(hg);
    if(hg)
        GlobalFree(hg);
    if(hFile)
        CloseHandle(hFile);
    return hrRet;
}


HRESULT ImageDecoder::CreateStreamOnResource(HRSRC hRes, IStream ** ppStream)
{
    HRESULT hrRet = S_OK;
    HGLOBAL hg = NULL;
    //HANDLE hFile = NULL;
    DWORD dwSize; //dwRead;
    BYTE* pbLocked = NULL;

    // Open the file
	#if 0
	hFile = CreateFile(tszFilename, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
    if(INVALID_HANDLE_VALUE == hFile)
    {
        DBGMSG(TEXT("CreateFile failed with GLE = %d"), GetLastError());
        hrRet = 0x80000000 + GetLastError();
        goto error;
    }

    dwSize = GetFileSize(hFile, NULL);
    if(0xffffffff == dwSize)
    {
        DBGMSG(TEXT("GetFileSize failed with GLE = %d"), GetLastError());
        hrRet = 0x80000000 + GetLastError();
        goto error;
    }
	#endif
	
	HGLOBAL hGbl = LoadResource(GetModuleHandle(NULL), hRes);
	BYTE* pbData = (BYTE*)LockResource(hGbl);
	dwSize = SizeofResource(GetModuleHandle(NULL), hRes);

	
    // Open a memory object
    hg = GlobalAlloc(GMEM_MOVEABLE, dwSize);
    if(NULL == hg)
    {
        DBGMSG(TEXT("GlobalAlloc failed with GLE = %d\n"), GetLastError());
        hrRet = 0x80000000 + GetLastError();
        goto error;
    }

    // Ge a pointer to the memory we just allocated
    pbLocked = (BYTE*) GlobalLock(hg);
    if(NULL == pbLocked)
    {
        DBGMSG(TEXT("GlobalLock failed with GLE = %d\n"), GetLastError());
        hrRet = 0x80000000 + GetLastError();
        goto error;
    }

    // copy the file
    memcpy(pbLocked, pbData, dwSize);
    #if 0
    if(!ReadFile(hFile, pbLocked, dwSize, &dwRead, NULL))
    {
        DBGMSG(TEXT("ReadFile failed with GLE = %d"), GetLastError());
        hrRet = 0x80000000 + GetLastError();
        goto error;
    }
	#endif

    GlobalUnlock(hg);
    
    // Create the stream
    hrRet = CreateStreamOnHGlobal(hg, TRUE, ppStream);

    //CloseHandle(hFile);
    return hrRet;
error:
    if(pbLocked)
        GlobalUnlock(hg);
    if(hg)
        GlobalFree(hg);
//    if(hFile)
//        CloseHandle(hFile);
    return hrRet;
}


void ImageDecoder::
GetDestRect(int srcWidth, int srcHeight, int dstWidth, int dstHeight, RECT &out)
{
	int x, y, width, height;
	float XRatio, YRatio;
	x = 0;
    y = 0;
	if(Angle == 0 || Angle == 360 || Angle == 180)
	{
		width = srcWidth;
		height = srcHeight;
	}
	else
	{
		width = srcHeight;
		height = srcWidth;
	}
	XRatio = (float)dstWidth/(float)width;
	YRatio = (float)dstHeight/(float)height;

	if(XRatio < YRatio)
	{
		height = (int)((float)height * XRatio);
		width = dstWidth;
		y = (dstHeight - height)/2;
		
	}
	else
	{
		height = dstHeight;
		width = (int)((float)width * YRatio);
		x = (dstWidth - width)/2;
	}

	out.left = x;
	out.right = x + width;
	out.top = y;
	out.bottom = y + height;

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美bbbbb| 亚洲超碰精品一区二区| 日韩一级免费观看| 欧美日韩国产成人在线91| 欧美日韩在线亚洲一区蜜芽| 欧美日韩在线三级| 日韩一区二区在线观看| 精品国产乱码久久久久久牛牛| 日韩一卡二卡三卡国产欧美| 日韩精品中午字幕| 国产日韩影视精品| 亚洲色图制服诱惑| 丝袜亚洲另类欧美| 国内精品视频666| 成人精品小蝌蚪| 91丨九色丨蝌蚪富婆spa| 欧美天堂亚洲电影院在线播放| 欧美日本一道本在线视频| 欧美一区二区三区在线观看视频 | 日韩一区中文字幕| 一区二区久久久久| 蜜桃视频一区二区| 成人国产视频在线观看| 欧美日韩国产影片| 久久综合久久综合久久综合| 国产精品福利一区二区三区| 亚洲国产视频一区| 国产成人免费在线观看| 91在线播放网址| 欧美成人福利视频| 亚洲精品美腿丝袜| 国产一区二区在线免费观看| 在线观看日韩高清av| 91精品欧美一区二区三区综合在| 久久精品日韩一区二区三区| 亚洲一二三四区| 91无套直看片红桃| 欧美v国产在线一区二区三区| 亚洲特黄一级片| 国产中文一区二区三区| 欧美日韩不卡一区| 国产精品视频麻豆| 激情五月播播久久久精品| 日本韩国欧美三级| 久久久久久免费| 五月天精品一区二区三区| 91网上在线视频| 久久精品欧美日韩| 美女国产一区二区| 欧美群妇大交群中文字幕| 亚洲人成人一区二区在线观看| 国产美女精品在线| 日韩网站在线看片你懂的| 亚洲精品日韩一| 99国产一区二区三精品乱码| 国产亚洲人成网站| 久久99精品久久久久| 欧美一区二区精品在线| 亚洲成av人在线观看| 欧美亚洲综合在线| 亚洲女爱视频在线| 99精品国产一区二区三区不卡| 欧美激情综合网| 国产黄色精品网站| 精品粉嫩超白一线天av| 久久国产麻豆精品| 欧美mv日韩mv亚洲| 久久99精品国产麻豆婷婷| 欧美成人艳星乳罩| 激情六月婷婷久久| 久久久久久久久伊人| 韩国成人福利片在线播放| 日韩视频免费直播| 美女视频黄频大全不卡视频在线播放 | 欧美日韩综合色| 一区二区三区精品在线观看| 色天使久久综合网天天| 一区二区三区精品在线| 在线看一区二区| 亚洲成人av在线电影| 欧美一级日韩免费不卡| 麻豆精品视频在线观看免费| 久久久久久久久97黄色工厂| 福利一区福利二区| 亚洲精品美腿丝袜| 欧美高清你懂得| 国产一区二区三区高清播放| 国产亚洲成av人在线观看导航 | 国内偷窥港台综合视频在线播放| 欧美成人一区二区三区在线观看 | 亚洲日本韩国一区| 色88888久久久久久影院按摩| 亚洲网友自拍偷拍| 欧美一级二级在线观看| 国产成人在线影院| 一区二区三区中文字幕| 日韩一级欧美一级| 丁香网亚洲国际| 亚洲综合免费观看高清在线观看| 欧美一区二区三区喷汁尤物| 国产在线精品一区二区三区不卡| 最好看的中文字幕久久| 久久久一区二区三区| 色婷婷综合久久久| 日本网站在线观看一区二区三区| 精品国产百合女同互慰| 色狠狠一区二区三区香蕉| 日本不卡在线视频| 最新久久zyz资源站| 欧美一卡二卡三卡| 91一区二区三区在线观看| 日本中文字幕一区二区视频| 中文字幕 久热精品 视频在线| 欧洲av一区二区嗯嗯嗯啊| 国产精品一级片| 天堂va蜜桃一区二区三区漫画版| 国产精品网站在线观看| 欧美另类一区二区三区| a在线欧美一区| 三级在线观看一区二区| 中文字幕一区免费在线观看| 日韩精品专区在线| 欧美日韩一级黄| 97国产一区二区| 国产在线不卡一区| 日本视频在线一区| 亚洲一区二区精品视频| 国产欧美一区二区精品秋霞影院| 欧美一区二区三区思思人| 欧美在线综合视频| 色综合久久天天| 国产成人精品亚洲午夜麻豆| 蜜桃视频在线一区| 亚洲国产日韩a在线播放性色| 日本一区二区三区国色天香| 日韩欧美中文字幕制服| 欧美日韩久久一区| 欧美伊人精品成人久久综合97| 成年人国产精品| 国产aⅴ精品一区二区三区色成熟| 日韩高清一区在线| 日韩精品高清不卡| 日韩黄色免费网站| 日产国产欧美视频一区精品| 午夜成人免费视频| 天天射综合影视| 日韩精品亚洲专区| 日韩精品成人一区二区在线| 亚洲一区二区三区四区在线免费观看| 国产精品久久久久久久久免费桃花 | 久久精品夜色噜噜亚洲aⅴ| 精品国产乱码久久久久久图片| 日韩欧美国产一区二区在线播放 | 91丨porny丨国产入口| 99久久精品免费| 色综合天天综合网天天狠天天 | 国产成人午夜电影网| 国产乱人伦偷精品视频不卡 | 天堂在线一区二区| 麻豆精品久久精品色综合| 麻豆精品在线观看| 国产超碰在线一区| 成人h动漫精品一区二| 91视视频在线观看入口直接观看www| 91在线视频免费91| 久久亚洲一级片| 日本一二三不卡| 亚洲日韩欧美一区二区在线| 亚洲一区二区三区四区在线| 男人操女人的视频在线观看欧美 | 亚洲一本大道在线| 日韩av不卡在线观看| 国产一区二区福利| av不卡一区二区三区| 精品国产乱码久久久久久1区2区 | 国产综合久久久久久鬼色| 成人毛片在线观看| 欧美色国产精品| 欧美v日韩v国产v| 中文字幕av一区二区三区高| 亚洲一区二区免费视频| 激情成人午夜视频| 99vv1com这只有精品| 91精品国产一区二区三区| 国产亚洲综合色| 香港成人在线视频| 国产91精品一区二区麻豆网站| 91成人免费电影| 欧美精品一区二区三区蜜臀| 亚洲婷婷国产精品电影人久久| 蜜臀a∨国产成人精品| 99热精品一区二区| 日韩写真欧美这视频| 亚洲色图欧美在线| 韩日精品视频一区| 欧美三级在线视频| 欧美国产综合一区二区| 奇米精品一区二区三区在线观看 | 91福利视频在线| 欧美极品aⅴ影院|