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

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

?? store.c

?? DVD轉換到AVI的源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* 
 *	Copyright (C) Chia-chen Kuo - Jan 2001
 *
 *  This file is part of DVD2AVI, a free MPEG-2 decoder
 *	
 *  DVD2AVI is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2, or (at your option)
 *  any later version.
 *   
 *  DVD2AVI is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 *  GNU General Public License for more details.
 *   
 *  You should have received a copy of the GNU General Public License
 *  along with GNU Make; see the file COPYING.  If not, write to
 *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. 
 *
 */

#include "global.h"

#define MAX_AVI_SIZE	2073600000

__forceinline static void Store_RGB24(unsigned char *src[], DWORD frame);
__forceinline static void Store_YUY2(unsigned char *src[], DWORD frame);

static void Luminance_Filter(unsigned char *src, unsigned char *dst);
static void conv420to422(unsigned char *src, unsigned char *dst);
static void conv422to444(unsigned char *src, unsigned char *dst);
static void conv444toRGB24odd(unsigned char *py, unsigned char *pu, unsigned char *pv, unsigned char *dst);
static void conv444toRGB24even(unsigned char *py, unsigned char *pu, unsigned char *pv, unsigned char *dst);
static void Flush_RGB24();
static void conv422toyuy2odd(unsigned char *py, unsigned char *pu, unsigned char *pv, unsigned char *dst);
static void conv422toyuy2even(unsigned char *py, unsigned char *pu, unsigned char *pv, unsigned char *dst);
static void Flush_YUY2();
static void AVIKill();

PAVIFILE pfile;
PAVISTREAM ps, psCompressed;
AVICOMPRESSOPTIONS opts;
LPAVICOMPRESSOPTIONS lpopts = &opts;
AVISTREAMINFO strinfo;
ICCOMPRESSFRAMES iccf;
COMPVARS compvars;
PCOMPVARS pcompvars = &compvars;

static unsigned char *y444;
static int AVI_Init, avi_size, avi_count, frame_count;
static int TFF, RFF, TFB, BFB, playback, Old_Playback, frame_size, frame_type;
static char VideoOut[_MAX_PATH];

static char *FrameType[3] = {
	"", "Interlaced", "Progressive"
};

static const __int64 mmmask_0001 = 0x0001000100010001;
static const __int64 mmmask_0002 = 0x0002000200020002;
static const __int64 mmmask_0003 = 0x0003000300030003;
static const __int64 mmmask_0004 = 0x0004000400040004;
static const __int64 mmmask_0005 = 0x0005000500050005;
static const __int64 mmmask_0007 = 0x0007000700070007;
static const __int64 mmmask_0064 = 0x0040004000400040;
static const __int64 mmmask_0128 = 0x0080008000800080;
static const __int64 mmmask_cbu = 0x0000408D0000408D;
static const __int64 mmmask_cgu_cgv = 0xF377E5FCF377E5FC;
static const __int64 mmmask_crv = 0x0000331300003313;

void Write_Frame(unsigned char *src[], D2VData d2v, DWORD frame)
{
	int i, repeat;

	if (Fault_Flag)
	{
		if (Fault_Flag < CRITICAL_ERROR_LEVEL)
		{
			SetDlgItemText(hDlg, IDC_DEBUG, "V.E.");
			Fault_Flag = 0;		// Fault Tolerance
		}
		else
		{
			if (AVI_Flag)
				AVIKill();
			ThreadKill();
		}
	}

	frame_type = d2v.pf;
	TFF = d2v.trf>>1;
	RFF = d2v.trf & 0x01;

	if (!frame)
	{
		AVI_Init = 1; TFB = BFB = 0; Old_Playback = 0;
		frame_size = 0; avi_size = 0; avi_count = 1; frame_count = 0; playback = 0;

		if (process.locate==LOCATE_RIP && FO_Flag==FO_SWAP)
		{
			if (TFF)
				BFB = 1;
			else
				TFB = 1;

			ZeroMemory(rgb24, Coded_Picture_Width*Coded_Picture_Height*3);
			for (i=0; i<Coded_Picture_Width*Coded_Picture_Height*2; i += 2)
			{
				yuy2[i] = 0;
				yuy2[i+1] = 128;
			}
		}

		if (FO_Flag!=FO_FILM)
		{
			if ((TFF && FO_Flag!=FO_SWAP) || (!TFF && FO_Flag==FO_SWAP))
				SetDlgItemText(hDlg, IDC_DEBUG, "T");
			else
				SetDlgItemText(hDlg, IDC_DEBUG, "B");
		}
	}

	repeat = DetectVideoType(frame, d2v.trf);

	if (FO_Flag!=FO_FILM || repeat)
	{
		if (Store_Flag==STORE_YUY2)
			Store_YUY2(src, frame);
		else
			Store_RGB24(src, frame);
	}

	if (FO_Flag==FO_FILM && repeat==2)
	{
		if (Store_Flag==STORE_YUY2)
			Store_YUY2(src, frame);
		else
			Store_RGB24(src, frame);
	}

	__asm emms;

	if (Statistics_Flag && process.locate==LOCATE_RIP)
	{
		sprintf(szBuffer, "%s", FrameType[frame_type+1]);
		SetDlgItemText(hDlg, IDC_FRAME_TYPE, szBuffer);

		sprintf(szBuffer, "%d", frame+1);
		SetDlgItemText(hDlg, IDC_CODED_NUMBER, szBuffer);

		sprintf(szBuffer, "%d", playback);
		SetDlgItemText(hDlg, IDC_PLAYBACK_NUMBER, szBuffer);

		if (AVI_Flag)
		{
			sprintf(szBuffer, "%d", avi_count-1);
			SetDlgItemText(hDlg, IDC_FILE, szBuffer);
	
			sprintf(szBuffer, "%d MB", avi_size>>20);
			SetDlgItemText(hDlg, IDC_FILE_SIZE, szBuffer);
		}

		if ((frame & 63) == 63)
		{
			process.ed = timeGetTime();
			sprintf(szBuffer, "%.2f FPS", 1000.0*(playback-1)/(process.ed-process.op+1));
			SetDlgItemText(hDlg, IDC_FPS, szBuffer);

			SendDlgItemMessage(hDlg, IDC_PROGRESS, PBM_SETPOS, (int)(Bitrate_Meter*Frame_Rate/(playback-Old_Playback))>>7, 0);

			Bitrate_Meter = 0;
			Old_Playback = playback;
		}
	}

	if (AVI_Flag && avi_size>=MAX_AVI_SIZE)
		AVIKill();
}

static void Store_RGB24(unsigned char *src[], DWORD frame)
{
	// store AVI
	if (AVI_Flag && AVI_Init)
	{
		if (!frame)
		{
			compvars.cbSize = sizeof(compvars);

			if (!ICCompressorChoose(hWnd, ICMF_CHOOSE_DATARATE | ICMF_CHOOSE_KEYFRAME,
				lpbirgb, NULL, pcompvars, NULL))
				ThreadKill();

			// set AVI header
			ZeroMemory(&strinfo, sizeof(AVISTREAMINFO));
			strinfo.fccType					= streamtypeVIDEO;
			strinfo.fccHandler				= compvars.fccHandler;
			strinfo.dwQuality				= -1;
			strinfo.dwSuggestedBufferSize	= birgb.biSizeImage;
			strinfo.dwScale	= 1000;
			strinfo.dwRate = (unsigned int)((FO_Flag==FO_FILM) ? frame_rate*800 : frame_rate*1000);

			// set AVI save options
			opts.cbFormat = sizeof(birgb);
			opts.fccType = streamtypeVIDEO;
			opts.fccHandler = compvars.fccHandler;
			opts.dwKeyFrameEvery = compvars.lKey;
			opts.dwQuality = compvars.lQ;
			opts.dwBytesPerSecond = compvars.lDataRate<<10;
			opts.dwFlags = AVICOMPRESSF_VALID | AVICOMPRESSF_KEYFRAMES | AVICOMPRESSF_DATARATE;
			opts.dwInterleaveEvery = 0;
			opts.lpFormat = lpbirgb;
			opts.cbParms = compvars.cbState;
			opts.lpParms = compvars.lpState;
		}

		AVI_Init = 0; avi_size = 0;
		AVIFileInit();

		sprintf(VideoOut, "%s %02d.avi", szOutput, avi_count++);

		if (AVIFileOpen(&pfile, VideoOut, OF_WRITE | OF_CREATE, NULL) != AVIERR_OK)
		{
			AVIKill();
			ThreadKill();
		}

		if (AVIFileCreateStream(pfile, &ps, &strinfo) != AVIERR_OK)
		{
			AVIKill();
			ThreadKill();
		}

		if (AVIMakeCompressedStream(&psCompressed, ps, lpopts, NULL) != AVIERR_OK)
		{
			AVIKill();
			ThreadKill();
		}

		if (AVIStreamSetFormat(psCompressed, 0, lpbirgb, birgb.biSize) != AVIERR_OK)
		{
			AVIKill();
			ThreadKill();
		}
	}

	if (chroma_format==CHROMA420)
	{
		conv420to422(src[1], u422);
		conv420to422(src[2], v422);

		conv422to444(u422, u444);
		conv422to444(v422, v444);
	}
	else
	{
		conv422to444(src[1], u444);
		conv422to444(src[2], v444);
	}

	if (Luminance_Flag)
	{
		Luminance_Filter(src[0], lum);
		y444 = lum;
	}
	else
		y444 = src[0];

	if (BFB)
	{
		conv444toRGB24odd(y444, u444, v444, rgb24);
		Flush_RGB24();
		conv444toRGB24even(y444, u444, v444, rgb24);
		Flush_RGB24();
	}
	else
	{
		conv444toRGB24even(y444, u444, v444, rgb24);
		Flush_RGB24();
		conv444toRGB24odd(y444, u444, v444, rgb24);
		Flush_RGB24();
	}

	if (FO_Flag!=FO_FILM && RFF)
		if (TFF)
		{
			conv444toRGB24odd(y444, u444, v444, rgb24);
			Flush_RGB24();
		}
		else
		{
			conv444toRGB24even(y444, u444, v444, rgb24);
			Flush_RGB24();
		}
}

static void Flush_RGB24()
{
	if (TFB & BFB)
	{
		if (AVI_Flag)
		{
			__asm emms;

			if (AVIStreamWrite(psCompressed, frame_count++, 1, rgb24,
				birgb.biSizeImage, 0, NULL, &frame_size) != AVIERR_OK)
			{
				AVIKill();
				ThreadKill();
			}

			avi_size += frame_size;
		}

		if (Display_Flag)
			RenderRGB24();

		playback++;
		TFB = BFB = 0;
	}
}

//--------------------------------------------------------------------------------------

static void Store_YUY2(unsigned char *src[], DWORD frame)
{
	// Save AVI
	if (AVI_Flag && AVI_Init)
	{
		if (!frame)
		{
			compvars.cbSize = sizeof(compvars);

			if (!ICCompressorChoose(hWnd, ICMF_CHOOSE_DATARATE | ICMF_CHOOSE_KEYFRAME,
				lpbiyuv, NULL, pcompvars, NULL))
				ThreadKill();

			// set AVI header
			ZeroMemory(&strinfo, sizeof(AVISTREAMINFO));
			strinfo.fccType					= streamtypeVIDEO;
			strinfo.fccHandler				= compvars.fccHandler;
			strinfo.dwQuality				= -1;
			strinfo.dwSuggestedBufferSize	= biyuv.biSizeImage;
			strinfo.dwScale	= 1000;
			strinfo.dwRate = (unsigned int)((FO_Flag==FO_FILM) ? frame_rate*800 : frame_rate*1000);

			// set AVI save options
			opts.cbFormat = sizeof(biyuv);
			opts.fccType = streamtypeVIDEO;
			opts.fccHandler = compvars.fccHandler;
			opts.dwKeyFrameEvery = compvars.lKey;
			opts.dwQuality = compvars.lQ;
			opts.dwBytesPerSecond = compvars.lDataRate<<10;
			opts.dwFlags = AVICOMPRESSF_VALID | AVICOMPRESSF_KEYFRAMES | AVICOMPRESSF_DATARATE;
			opts.dwInterleaveEvery = 0;
			opts.lpFormat = lpbiyuv;
			opts.cbParms = compvars.cbState;
			opts.lpParms = compvars.lpState;

			iccf.dwRate = strinfo.dwRate;
			iccf.dwScale = strinfo.dwScale;
			iccf.lQuality = compvars.lQ;
			iccf.lDataRate = compvars.lDataRate<<10;
			iccf.lKeyRate = compvars.lKey;

			ICSendMessage(compvars.hic, ICM_COMPRESS_FRAMES_INFO, (WPARAM)&iccf, (DWORD)sizeof(ICCOMPRESSFRAMES));
		}

		AVI_Init = 0; avi_size = 0;
		AVIFileInit();

		sprintf(VideoOut, "%s %02d.avi", szOutput, avi_count++);

		if (AVIFileOpen(&pfile, VideoOut, OF_WRITE | OF_CREATE, NULL) != AVIERR_OK)
		{
			AVIKill();
			ThreadKill();
		}

		if (AVIFileCreateStream(pfile, &ps, &strinfo) != AVIERR_OK)
		{
			AVIKill();
			ThreadKill();
		}

		if (AVIMakeCompressedStream(&psCompressed, ps, lpopts, NULL) != AVIERR_OK)
		{
			AVIKill();
			ThreadKill();
		}

		if (AVIStreamSetFormat(psCompressed, 0, lpbirgb, birgb.biSize) != AVIERR_OK)
		{
			AVIKill();
			ThreadKill();
		}

		if (!frame && !ICSeqCompressFrameStart(pcompvars, (LPBITMAPINFO)lpbiyuv))
		{
			AVIKill();
			ThreadKill();
		}
	}

	if (chroma_format==CHROMA420)
	{
		conv420to422(src[1], u422);
		conv420to422(src[2], v422);
	}
	else
	{
		u422 = src[1];
		v422 = src[2];
	}

	if (Luminance_Flag)
	{
		Luminance_Filter(src[0], lum);
		y444 = lum;
	}
	else
		y444 = src[0];

	if (BFB)
	{
		conv422toyuy2odd(y444, u422, v422, yuy2);
		Flush_YUY2();
		conv422toyuy2even(y444, u422, v422, yuy2);
		Flush_YUY2();
	}
	else
	{
		conv422toyuy2even(y444, u422, v422, yuy2);
		Flush_YUY2();

		conv422toyuy2odd(y444, u422, v422, yuy2);
		Flush_YUY2();
	}

	if (FO_Flag!=FO_FILM && RFF)
		if (TFF)
		{
			conv422toyuy2odd(y444, u422, v422, yuy2);
			Flush_YUY2();
		}
		else
		{
			conv422toyuy2even(y444, u422, v422, yuy2);
			Flush_YUY2();
		}
}

static void Flush_YUY2()
{
	void *yuy2c; int key_flag, yuy2c_size;

	if (TFB & BFB)
	{
		if (AVI_Flag)
		{
			__asm emms;

			if ((yuy2c = ICSeqCompressFrame(pcompvars, 0, yuy2, &key_flag, &yuy2c_size)) == NULL)
			{
				AVIKill();
				ThreadKill();
			}

			if (AVIStreamWrite(ps, frame_count++, 1, yuy2c, yuy2c_size,
				key_flag ? AVIIF_KEYFRAME : 0, NULL, &frame_size) != AVIERR_OK)
			{
				AVIKill();
				ThreadKill();
			}

			avi_size += frame_size;
		}

		if (DDOverlay_Flag && Display_Flag)
			RenderYUY2();

		playback++;
		TFB = BFB = 0;
	}
}

//-------------------------------------------------------------------------------------

static void Luminance_Filter(unsigned char *src, unsigned char *dst)
{
	int AREA = Coded_Picture_Width * Coded_Picture_Height;

	__asm
	{
		mov			eax, [src]
		mov			ebx, [dst]
		mov			esi, 0x00
		mov			edi, [AREA]
		pxor		mm0, mm0
		movq		mm5, [LumOffsetMask]
		movq		mm6, [LumGainMask]
		movq		mm7, [mmmask_0064]

lumconv:
		movq		mm1, [eax+esi]
		movq		mm2, mm1

		punpcklbw	mm1, mm0
		punpckhbw	mm2, mm0

		pmullw		mm1, mm6
		pmullw		mm2, mm6

		paddw		mm1, mm7
		paddw		mm2, mm7

		psrlw		mm1, 7
		psrlw		mm2, 7

		paddw		mm1, mm5
		paddw		mm2, mm5

		packuswb	mm1, mm0
		packuswb	mm2, mm0

		add			esi, 0x08
		cmp			esi, edi
		movq		[ebx+esi-8], mm1
		movq		[ebx+esi-4], mm2
		jl			lumconv
	}
}

static void conv422to444(unsigned char *src, unsigned char *dst)
{
	int RIGHT_BOUND = (Coded_Picture_Width>>1) - 8;
	int SRC_STRIDE = Coded_Picture_Width>>1;

	__asm
	{
		mov			eax, [src]
		mov			ebx, [dst]
		mov			edi, [Coded_Picture_Height]

		movq		mm1, [mmmask_0001]
		pxor		mm0, mm0

convyuv444init:
		movq		mm7, [eax]
		mov			esi, 0x00

convyuv444:
		movq		mm2, mm7
		movq		mm7, [eax+esi+8]
		movq		mm3, mm2
		movq		mm4, mm7

		psrlq		mm3, 8
		psllq		mm4, 56
		por			mm3, mm4

		movq		mm4, mm2
		movq		mm5, mm3

		punpcklbw	mm4, mm0
		punpcklbw	mm5, mm0

		movq		mm6, mm4
		paddusw		mm4, mm1
		paddusw		mm4, mm5
		psrlw		mm4, 1
		psllq		mm4, 8
		por			mm4, mm6

		punpckhbw	mm2, mm0
		punpckhbw	mm3, mm0

		movq		mm6, mm2
		paddusw		mm2, mm1
		paddusw		mm2, mm3

		movq		[ebx+esi*2], mm4

		psrlw		mm2, 1
		psllq		mm2, 8
		por			mm2, mm6

		add			esi, 0x08
		cmp			esi, [RIGHT_BOUND]
		movq		[ebx+esi*2-8], mm2
		jl			convyuv444

		movq		mm2, mm7
		punpcklbw	mm2, mm0
		movq		mm3, mm2

		psllq		mm2, 8
		por			mm2, mm3

		movq		[ebx+esi*2], mm2

		punpckhbw	mm7, mm0
		movq		mm6, mm7

		psllq		mm6, 8
		por			mm6, mm7

		movq		[ebx+esi*2+8], mm6

		add			eax, [SRC_STRIDE]		
		add			ebx, [Coded_Picture_Width]
		sub			edi, 0x01
		cmp			edi, 0x00
		jg			convyuv444init
	}
}

static void conv420to422(unsigned char *src, unsigned char *dst)
{
	int PROGRESSIVE_HEIGHT = (Coded_Picture_Height>>1) - 2;
	int INTERLACED_HEIGHT = (Coded_Picture_Height>>2) - 2;
	int HALF_WIDTH = Coded_Picture_Width>>1;
	int DOUBLE_WIDTH = Coded_Picture_Width<<1;

	if (frame_type)
	{
		__asm
		{
			mov			eax, [src]
			mov			ebx, [dst]
			mov			ecx, ebx
			add			ecx, [HALF_WIDTH]
			mov			esi, 0x00
			movq		mm3, [mmmask_0003]
			pxor		mm0, mm0
			movq		mm4, [mmmask_0002]

			mov			edx, eax
			add			edx, [HALF_WIDTH]
convyuv422topp:
			movd		mm1, [eax+esi]
			movd		mm2, [edx+esi]
			movd		[ebx+esi], mm1
			punpcklbw	mm1, mm0
			pmullw		mm1, mm3
			paddusw		mm1, mm4
			punpcklbw	mm2, mm0
			paddusw		mm2, mm1
			psrlw		mm2, 0x02
			packuswb	mm2, mm0

			add			esi, 0x04
			cmp			esi, [HALF_WIDTH]
			movd		[ecx+esi-4], mm2
			jl			convyuv422topp

			add			eax, [HALF_WIDTH]
			add			ebx, [Coded_Picture_Width]
			add			ecx, [Coded_Picture_Width]
			mov			esi, 0x00

			mov			edi, [PROGRESSIVE_HEIGHT]
convyuv422p:
			movd		mm1, [eax+esi]

			punpcklbw	mm1, mm0
			mov			edx, eax

			pmullw		mm1, mm3
			sub			edx, [HALF_WIDTH]

			movd		mm5, [edx+esi]
			movd		mm2, [edx+esi]

			punpcklbw	mm5, mm0
			punpcklbw	mm2, mm0
			paddusw		mm5, mm1
			paddusw		mm2, mm1
			paddusw		mm5, mm4
			paddusw		mm2, mm4
			psrlw		mm5, 0x02
			psrlw		mm2, 0x02
			packuswb	mm5, mm0
			packuswb	mm2, mm0

			mov			edx, eax
			add			edx, [HALF_WIDTH]
			add			esi, 0x04
			cmp			esi, [HALF_WIDTH]
			movd		[ebx+esi-4], mm5
			movd		[ecx+esi-4], mm2

			jl			convyuv422p

			add			eax, [HALF_WIDTH]
			add			ebx, [Coded_Picture_Width]
			add			ecx, [Coded_Picture_Width]
			mov			esi, 0x00
			sub			edi, 0x01
			cmp			edi, 0x00
			jg			convyuv422p

			mov			edx, eax
			sub			edx, [HALF_WIDTH]
convyuv422bottomp:
			movd		mm1, [eax+esi]
			movd		mm5, [edx+esi]
			punpcklbw	mm5, mm0
			movd		[ecx+esi], mm1

			punpcklbw	mm1, mm0
			pmullw		mm1, mm3
			paddusw		mm5, mm1
			paddusw		mm5, mm4
			psrlw		mm5, 0x02
			packuswb	mm5, mm0

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩国产在线观看| 国产一区二区三区四区在线观看| av不卡一区二区三区| 久久久亚洲午夜电影| 国产一区二区不卡老阿姨| 精品捆绑美女sm三区| 精品一区二区影视| 国产日韩亚洲欧美综合| 成人黄页毛片网站| 亚洲高清久久久| 欧美日韩一区二区三区视频| 亚州成人在线电影| 精品国产99国产精品| 懂色av一区二区三区免费观看| 国产精品久线在线观看| 欧美色视频在线| 久久99精品久久久久| 亚洲国产精品精华液2区45| av网站免费线看精品| 亚洲国产wwwccc36天堂| 精品国产凹凸成av人导航| 成人免费毛片嘿嘿连载视频| 亚洲夂夂婷婷色拍ww47| 日韩美一区二区三区| av一区二区三区在线| 午夜精品福利一区二区三区av | 欧美三级中文字| 美腿丝袜在线亚洲一区| 国产日韩欧美综合一区| 色婷婷av一区| 另类小说一区二区三区| 中文av一区二区| 欧美日韩精品一区二区三区蜜桃 | 在线观看免费一区| 经典一区二区三区| 亚洲精选视频免费看| 精品久久免费看| 色噜噜久久综合| 激情综合色播五月| 亚洲福利国产精品| 国产欧美精品一区二区色综合朱莉| 在线观看一区二区精品视频| 韩国v欧美v亚洲v日本v| 一区二区成人在线观看| 久久综合资源网| 欧美日韩一级片在线观看| 成人一区二区三区中文字幕| 免费av成人在线| 一区二区三区不卡视频在线观看| 精品成人免费观看| 欧美三级视频在线观看 | 成人综合在线视频| 五月婷婷久久综合| 成人欧美一区二区三区白人| 精品国精品自拍自在线| 欧美日韩国产成人在线免费| 99re热这里只有精品视频| 国产原创一区二区三区| 视频一区免费在线观看| 一区二区三区免费观看| 国产精品久久久久久久第一福利| 26uuu欧美| 日韩一级精品视频在线观看| 911精品国产一区二区在线| 日本精品一区二区三区高清| aaa欧美色吧激情视频| 国产v综合v亚洲欧| 极品销魂美女一区二区三区| 日本最新不卡在线| 视频一区欧美精品| 亚洲成av人片| 午夜精品一区二区三区电影天堂 | 亚洲一区二区三区视频在线| 国产精品久久精品日日| 国产精品嫩草影院com| 久久只精品国产| 欧美大肚乱孕交hd孕妇| 欧美一区二区在线不卡| 91精品国产91综合久久蜜臀| 欧美日韩在线一区二区| 91黄色小视频| 精品视频1区2区| 欧美精品久久99| 欧美一区三区二区| 日韩欧美在线1卡| 欧美精品一区二| 国产欧美日韩综合| 国产精品沙发午睡系列990531| 国产视频一区二区三区在线观看| 久久精品一二三| 国产精品天美传媒沈樵| 亚洲天堂精品在线观看| 一区二区三区影院| 日日摸夜夜添夜夜添国产精品| 青青草视频一区| 亚洲第一主播视频| 欧美日韩久久不卡| 日韩西西人体444www| 欧美tk丨vk视频| 日本一区免费视频| 中文字幕一区二区三区不卡| 亚洲午夜私人影院| 蜜臀av性久久久久蜜臀av麻豆| 精品在线免费视频| 春色校园综合激情亚洲| 在线免费观看日韩欧美| 91精品综合久久久久久| 久久久综合精品| 伊人开心综合网| 日韩精品欧美成人高清一区二区| 麻豆高清免费国产一区| 福利一区二区在线| 日本久久精品电影| 精品嫩草影院久久| 亚洲乱码国产乱码精品精98午夜| 偷拍与自拍一区| 国产成人综合在线观看| 欧美综合色免费| 久久婷婷国产综合国色天香| 国产精品伦理在线| 日本不卡视频在线观看| 风间由美性色一区二区三区| 欧美性感一类影片在线播放| 精品三级在线观看| 亚洲精品日韩一| 另类小说一区二区三区| 日本久久一区二区| 久久久精品日韩欧美| 亚洲国产一区二区a毛片| 国产福利一区二区三区视频| 欧美欧美欧美欧美首页| 国产精品久久久久四虎| 免费视频最近日韩| 欧美视频在线观看一区二区| xf在线a精品一区二区视频网站| 亚洲国产精品久久久久婷婷884 | 国产精品一区二区免费不卡 | 另类调教123区| 91亚洲精品久久久蜜桃| 精品久久国产字幕高潮| 亚洲一区二区美女| 成人免费观看av| 欧美mv日韩mv亚洲| 午夜精品免费在线| 99re热视频精品| 久久久精品tv| 久久精品国产99国产精品| 欧美午夜寂寞影院| 亚洲同性gay激情无套| 国产裸体歌舞团一区二区| 91精品国产综合久久香蕉麻豆| 亚洲色图欧美在线| 成人亚洲精品久久久久软件| 精品国产91乱码一区二区三区| 午夜精品久久久久久久99水蜜桃 | 国产日产欧产精品推荐色 | 中文字幕一区二区三中文字幕| 老司机精品视频在线| 在线欧美小视频| ...xxx性欧美| 成人国产视频在线观看| 欧美激情中文字幕| 国产精品996| 久久久99精品免费观看| 国产在线播放一区| 久久奇米777| 国产一区二区三区四| 亚洲精品在线电影| 国内一区二区视频| 国产三级精品视频| 一本大道久久a久久综合| 国产精品久线观看视频| 国产91精品露脸国语对白| 久久久久久久久久久黄色| 国产在线乱码一区二区三区| 欧美tk—视频vk| 国产成人亚洲综合色影视| 日本一区二区三级电影在线观看| 成人小视频免费观看| 亚洲欧洲精品天堂一级| 97se亚洲国产综合自在线不卡 | 国产精品久久久久久久久久免费看| 国产精品 日产精品 欧美精品| 精品国产乱码久久久久久1区2区| 麻豆成人av在线| 69久久99精品久久久久婷婷| 蜜桃av一区二区三区电影| 26uuu另类欧美| 国产91综合网| 亚洲老妇xxxxxx| 777a∨成人精品桃花网| 久久国产精品72免费观看| 国产网站一区二区| 一本色道a无线码一区v| 午夜日韩在线电影| 精品国产乱码久久久久久老虎| 国产成人精品综合在线观看| 一区二区三区91| 欧美一区二区三区四区视频| 国产乱子轮精品视频|