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

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

?? fileplayer.cpp.svn-base

?? sigmadesign smp8623 gui source code ,bingo
?? SVN-BASE
?? 第 1 頁 / 共 4 頁
字號:
/***************************************** Copyright (c) 2001-2003 Sigma Designs, Inc. All Rights Reserved Proprietary and Confidential *****************************************/#ifndef ALLOW_OS_CODE#define ALLOW_OS_CODE 1#endif //ALLOW_OS_CODE#include "common.h"#include "fileplayer.h"#include "em86xx.h"#include "gui/gui.h"#include "rmasfdemux/include/wmdrmopl.h"#include "rmlibcw/include/rmlibcw.h"#ifdef WITH_MONO//#define USE_SAME_THREAD#define MONODBG ENABLEextern RMbool g_useKeyboard;extern typeCuracaoContext context;#include "rmdef/rmdef.h"#include "rmlibcw/include/rmfile.h"#include "rmvdemux/include/rmvdemuxapi.h"#define ERROR_CLEANUP(i)	do { error = (i); goto cleanup; }  while(0)#ifndef USE_SAME_THREADstatic RMthread g_thread = NULL;static RMthread g_subthread = NULL;#endifstatic struct playback_cmdline play_opt;static struct video_cmdline video_opt;static struct audio_cmdline audio_opt;static struct demux_cmdline demux_opt;// osd for mp4 subtitlesstruct osd_subtitles_context{	struct DCCVideoSource *pSPU_double_buffer_source;	struct OSDdoubleBuffer doubleBuffer;};static struct osd_subtitles_context osd_subt;// callback for the application to receive dcc contextvoid RMDCCInfo(struct dcc_context *dcc_info){	context.decoder->SetDCCInfo(dcc_info);	context.player->SetState(STATE_PLAY, 0);	context.player->SetSampleType();	// notify gui of initialization	context.gui->Notify(CURACAO_MESSAGE_DECODER_INITIALIZED, NULL);}// callback for the application to act upon receiving EOSvoid RMEOSCallback(){	// notify gui of EOS	printf("received EOS\n");	context.gui->Notify(CURACAO_MESSAGE_EOS, NULL);}// callback to pass stream information to the application, DRM protected, number of chapters, etcvoid RMFileStreamInfoCallback(struct RMFileStreamInfo *streamInfo){	RMDBGLOG((ENABLE, "got stream info!\n"));	context.player->SetStreamInfo(streamInfo);}// these functions need implementations (see mono/mono.c as a sample)RMstatus RMInitSPU(RMuint32 width, RMuint32 height){	struct DCCOSDProfile osdProfile;	RMstatus status = RM_OK;	osdProfile.ColorSpace = EMhwlibColorSpace_YUV_601;	osdProfile.SamplingMode = EMhwlibSamplingMode_444;	osdProfile.ColorMode = EMhwlibColorMode_TrueColor;	osdProfile.ColorFormat = EMhwlibColorFormat_32BPP; // unused	osdProfile.PixelAspectRatio.X = 1;	osdProfile.PixelAspectRatio.Y = 1;	osdProfile.Width = width; // should be the dimensions from the track, but they are wrong, so we hard code	osdProfile.Height = height;	RMDBGLOG((ENABLE, "RMinitSPU(%lu x %lu)\n", width, height));	// make sure we don't already have a buffer	if (osd_subt.pSPU_double_buffer_source) {		RMDBGLOG((ENABLE, "doubleBuffer already exists\n"));		status = RMCloseSPU();		if (status != RM_OK)			return status;	}	// Init SPU DoubleBuffer OSD	status = RMInitDoubleBufferOSD(NULL, osdProfile, &(osd_subt.doubleBuffer));	if (status != RM_OK) {		RMDBGLOG((ENABLE, "cant init doubleBufferOSD\n"));		// allow playing even if SPU cannot be shown		return RMCloseSPU();	}	return RM_OK;}RMstatus RMInitDoubleBufferOSD(RMuint32 *moduleID, struct DCCOSDProfile osdProfile, struct OSDdoubleBuffer *doubleBuffer){	enum EMhwlibMixerSourceState state;	RMuint32 mixer, scaler, src_index, mixer_src;	struct EMhwlibDisplayWindow window;	RMuint32 pic_luma_addr[2], pic_addr[2], pic_luma_size[2], surface_addr;	RMuint8 *buf_map;	RMuint32 buf_addr, buf_size;	RMstatus err;	struct RUA *pRUA = (RUA *) context.decoder->GetRUAInstance();	struct DCC *pDCC = (DCC *) context.decoder->GetDCCInstance();	RMDBGLOG((ENABLE, "init doubleBuffer OSD, size %lu x %lu\n", osdProfile.Width, osdProfile.Height));	mixer = EMHWLIB_MODULE(DispMainMixer, 0);	scaler = EMHWLIB_MODULE(DispGFXMultiScaler,0);	// set a NULL surface, this will force a full register update when next surface is set	err = DCCSetSurfaceSource(pDCC, scaler, NULL);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot unset gfx scaler's surface\n"));		return err;	}	err = RUAExchangeProperty(pRUA, mixer, RMGenericPropertyID_MixerSourceIndex, &scaler, sizeof(scaler), &src_index, sizeof(src_index));	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot get scaler index\n"));		return err;	}	mixer_src = EMHWLIB_TARGET_MODULE((enum RMcategoryID)mixer, 0 , src_index);	state = EMhwlibMixerSourceState_Master;	window.X = 0;	window.Y = 0;	window.Width = 4096;	window.Height = 4096;	window.XPositionMode = EMhwlibDisplayWindowPositionMode_FrontEdgeToBorder;	window.YPositionMode = EMhwlibDisplayWindowPositionMode_FrontEdgeToBorder;	window.XMode = EMhwlibDisplayWindowValueMode_Relative;	window.YMode = EMhwlibDisplayWindowValueMode_Relative;	window.WidthMode = EMhwlibDisplayWindowValueMode_Relative;	window.HeightMode = EMhwlibDisplayWindowValueMode_Relative;	RUASetProperty(pRUA, mixer_src, RMGenericPropertyID_MixerSourceWindow, &window, sizeof(window), 0);	window.X = 0;	window.Y = 0;	window.Width = 4096;	window.Height = 4096;	window.XPositionMode = EMhwlibDisplayWindowPositionMode_FrontEdgeToBorder;	window.YPositionMode = EMhwlibDisplayWindowPositionMode_FrontEdgeToBorder;	window.XMode = EMhwlibDisplayWindowValueMode_Relative;	window.YMode = EMhwlibDisplayWindowValueMode_Relative;	window.WidthMode = EMhwlibDisplayWindowValueMode_Relative;	window.HeightMode = EMhwlibDisplayWindowValueMode_Relative;	RUASetProperty(pRUA, scaler, RMGenericPropertyID_ScalerInputWindow, &window, sizeof(window), 0);	while((err =  RUASetProperty(pRUA, mixer_src, RMGenericPropertyID_MixerSourceState, &state, sizeof(state), 0))==RM_PENDING);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot set scaler's state on mixer\n"));		return err;	}	while ((err = RUASetProperty(pRUA, mixer, RMGenericPropertyID_Validate, NULL, 0, 0)) == RM_PENDING);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot validate mixer\n"));		return err;	}	while ((err = RUASetProperty(pRUA, scaler, RMGenericPropertyID_Validate, NULL, 0, 0)) == RM_PENDING);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot validate mixer\n"));		return err;	}	err = DCCOpenMultiplePictureOSDVideoSource(pDCC, &osdProfile, 2, &(osd_subt.pSPU_double_buffer_source));	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot open OSD decoder %d\n", err));		return err;	}	err = DCCGetOSDSurfaceInfo(pDCC, osd_subt.pSPU_double_buffer_source, NULL, &surface_addr, NULL);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot get surface address %d\n", err));		return err;	}	err = DCCGetOSDPictureInfo(osd_subt.pSPU_double_buffer_source, 0, &(pic_addr[0]),  &(pic_luma_addr[0]), &(pic_luma_size[0]), NULL, NULL);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot get osd buffer info %d\n", err));		return err;	}	err = DCCGetOSDPictureInfo(osd_subt.pSPU_double_buffer_source, 1, &(pic_addr[1]), &(pic_luma_addr[1]), &(pic_luma_size[1]), NULL, NULL);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot get osd buffer info %d\n", err));		return err;	}	// first pic (for double buffering)	buf_size = pic_luma_size[0];	buf_addr = pic_luma_addr[0];	err = RUALock(pRUA, buf_addr, buf_size);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Error locking OSD buffer at 0x%08lX (0x%08lX bytes)\n", buf_addr, buf_size));		return err;	}	buf_map = RUAMap(pRUA, buf_addr, buf_size);	if (buf_map == NULL) {		RMDBGLOG((ENABLE, "Error mapping OSD buffer at 0x%08lX (0x%08lX bytes)\n", buf_addr, buf_size));		return RM_ERROR;	}	memset(buf_map, 0x80, buf_size);	doubleBuffer->buf0 = buf_map;	doubleBuffer->buf0Size = buf_size;	doubleBuffer->buf0Addr = buf_addr;	doubleBuffer->isBuf0inUse = FALSE;	doubleBuffer->buf0Cleared = FALSE;	doubleBuffer->width = osdProfile.Width;	doubleBuffer->height = osdProfile.Height;	RUAUnMap(pRUA, buf_map, buf_size);	err = RUAUnLock(pRUA, buf_addr, buf_size);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Error unlocking OSD buffer at 0x%08lX (0x%08lX bytes)\n", buf_addr, buf_size));		return err;	}	// second pic	buf_size = pic_luma_size[1];	buf_addr = pic_luma_addr[1];	err = RUALock(pRUA, buf_addr, buf_size);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Error locking OSD buffer at 0x%08lX (0x%08lX bytes)\n", buf_addr, buf_size));		return err;	}	buf_map = RUAMap(pRUA, buf_addr, buf_size);	if (buf_map == NULL) {		RMDBGLOG((ENABLE, "Error mapping OSD buffer at 0x%08lX (0x%08lX bytes)\n", buf_addr, buf_size));		return RM_ERROR;	}	memset(buf_map, 0x90, buf_size);	doubleBuffer->buf1 = buf_map;	doubleBuffer->buf1Size = buf_size;	doubleBuffer->buf1Addr = buf_addr;	doubleBuffer->isBuf1inUse = FALSE;	doubleBuffer->buf1Cleared = FALSE;	RUAUnMap(pRUA, buf_map, buf_size);	err = RUAUnLock(pRUA, buf_addr, buf_size);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Error unlocking OSD buffer at 0x%08lX (0x%08lX bytes)\n", buf_addr, buf_size));		return err;	}	RMDBGLOG((ENABLE, "bitmap size %lu, buf0 @0x%lx, buf1 @0x%lx\n", buf_size, doubleBuffer->buf0, doubleBuffer->buf1));	// possibly clean it before this with a fill	err = DCCSetSurfaceSource(pDCC, scaler, osd_subt.pSPU_double_buffer_source);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot set the surface source %d\n", err));		return RM_ERROR;	}	err = DCCEnableVideoSource(osd_subt.pSPU_double_buffer_source, TRUE);	if (RMFAILED(err)){		RMDBGLOG((ENABLE,"Error enabling OSD buffer : %d\n",err));		return err;	}	while ((err = RUASetProperty(pRUA, scaler, RMGenericPropertyID_Validate, NULL, 0, 0)) == RM_PENDING);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot validate scaler input window %d\n", err));		return err;	}	//err = DCCInsertPictureInMultiplePictureOSDVideoSource(osd_subt.pSPU_double_buffer_source, 0);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot insert picture inside surface %d\n", err));		return err;	}	return RM_OK;}RMstatus RMCloseSPU(void){	if (osd_subt.pSPU_double_buffer_source) {		RMstatus status;		RMDBGLOG((ENABLE, "closing doubleBufferOSD\n"));		RMuint8 to_try = 0;		while((status = DCCCloseVideoSource(osd_subt.pSPU_double_buffer_source)) == RM_PENDING && ++to_try < 10 /*arbitrary*/) {			RMDBGLOG((ENABLE, "oh that sucks\n"));		}		if (RMFAILED(status)) {			RMDBGLOG((ENABLE, "Cannot close SPU doubleBuffer source %d\n", status));			return status;		}		osd_subt.pSPU_double_buffer_source = NULL;	}	return RM_OK;}RMstatus RMBlendSPU(RMuint8 *buffer){	RMstatus err;	RMuint8 *buf_map;	RMuint32 buf_size, buf_addr;	RMuint32 blendPic = 0;	struct RUA *pRUA = (RUA *) context.decoder->GetRUAInstance();	if (!osd_subt.pSPU_double_buffer_source) {		RMDBGLOG((ENABLE, "there's no double buffer for spu!\n"));		return RM_ERROR;	}	if (!osd_subt.doubleBuffer.isBuf0inUse) {		//blend buf0: copy *buffer into doublebufffer and activate it		RMDBGLOG((ENABLE, "blending buf0\n"));		buf_size = osd_subt.doubleBuffer.buf0Size;		buf_addr = osd_subt.doubleBuffer.buf0Addr;		osd_subt.doubleBuffer.isBuf0inUse = TRUE;		osd_subt.doubleBuffer.buf0Cleared = FALSE;		blendPic = 0;		osd_subt.doubleBuffer.isBuf1inUse = FALSE;	} else if (!osd_subt.doubleBuffer.isBuf1inUse) {		RMDBGLOG((ENABLE, "blending buf1\n"));		buf_size = osd_subt.doubleBuffer.buf1Size;		buf_addr = osd_subt.doubleBuffer.buf1Addr;		osd_subt.doubleBuffer.isBuf1inUse = TRUE;		osd_subt.doubleBuffer.buf1Cleared = FALSE;		blendPic = 1;		osd_subt.doubleBuffer.isBuf0inUse = FALSE;	}	else {		RMDBGLOG((ENABLE, "no buffer available for double buffer rendering\n"));		return RM_ERROR;	}	err = RUALock(pRUA, buf_addr, buf_size);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Error locking OSD buffer at 0x%08lX (0x%08lX bytes)\n", buf_addr, buf_size));		return err;	}	buf_map = RUAMap(pRUA, buf_addr, buf_size);	if (buf_map == NULL) {		RMDBGLOG((ENABLE, "Error mapping OSD buffer at 0x%08lX (0x%08lX bytes)\n", buf_addr, buf_size));		return RM_ERROR;	}	// reorder Y,V,U,A planes into UYVA,UYVA,... pixels	{		RMuint32 bitmap_size = osd_subt.doubleBuffer.width * osd_subt.doubleBuffer.height;		RMuint8 *buf_Y = buffer;		RMuint8 *buf_V = buf_Y + (bitmap_size);		RMuint8 *buf_U = buf_V + (bitmap_size);		RMuint8 *buf_A = buf_U + (bitmap_size);		RMuint32 i = 0;		while (i < (bitmap_size*4)) {			*(buf_map+i) = *buf_U++;    // bleu			*(buf_map+i+1) = *buf_Y++;			*(buf_map+i+2) = *buf_V++;  // rouge?			// alpha values are in the [0,16] range, convert them to [0,255]			if (*buf_A)				*(buf_map+i+3) = RMmin(*buf_A * 16, 255);			else				*(buf_map+i+3) = 0;			buf_A++;			i+=4;		}	}	RUAUnMap(pRUA, buf_map, buf_size);	err = RUAUnLock(pRUA, buf_addr, buf_size);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Error unlocking OSD buffer at 0x%08lX (0x%08lX bytes)\n", buf_addr, buf_size));		return err;	}	err = DCCInsertPictureInMultiplePictureOSDVideoSource(osd_subt.pSPU_double_buffer_source, blendPic);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot insert picture inside surface %d\n", err));		return err;	}	return RM_OK;}RMstatus RMClearSPU(){	RMstatus err;	RMuint8 *buf_map;	RMuint32 buf_size, buf_addr;	RMuint32 blendPic = 0;	struct RUA *pRUA = (RUA *) context.decoder->GetRUAInstance();	if (!osd_subt.pSPU_double_buffer_source)		return RM_ERROR;	if (osd_subt.doubleBuffer.buf0Cleared)		return RM_OK;	RMDBGLOG((ENABLE, "clearSPU\n"));	buf_size = osd_subt.doubleBuffer.buf0Size;	buf_addr = osd_subt.doubleBuffer.buf0Addr;	osd_subt.doubleBuffer.isBuf0inUse = FALSE;	osd_subt.doubleBuffer.buf0Cleared = TRUE;	blendPic = 0;	osd_subt.doubleBuffer.isBuf1inUse = FALSE;	err = RUALock(pRUA, buf_addr, buf_size);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Error locking OSD buffer at 0x%08lX (0x%08lX bytes)\n", buf_addr, buf_size));		return err;	}	buf_map = RUAMap(pRUA, buf_addr, buf_size);	if (buf_map == NULL) {		RMDBGLOG((ENABLE, "Error mapping OSD buffer at 0x%08lX (0x%08lX bytes)\n", buf_addr, buf_size));		return RM_ERROR;	}	// clear buffer	memset(buf_map, 0, buf_size);	RUAUnMap(pRUA, buf_map, buf_size);	err = RUAUnLock(pRUA, buf_addr, buf_size);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Error unlocking OSD buffer at 0x%08lX (0x%08lX bytes)\n", buf_addr, buf_size));		return err;	}	err = DCCInsertPictureInMultiplePictureOSDVideoSource(osd_subt.pSPU_double_buffer_source, blendPic);	if (RMFAILED(err)) {		RMDBGLOG((ENABLE, "Cannot insert picture inside surface %d\n", err));		return err;	}	return RM_OK;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av电影在线| 亚洲人成网站在线| 亚洲女厕所小便bbb| 精品一区二区三区在线视频| av在线不卡观看免费观看| 欧美一级生活片| 亚洲国产欧美在线人成| 成人h动漫精品一区二区| 欧美电视剧免费观看| 午夜精品福利视频网站| 99精品视频中文字幕| 精品国产乱码久久久久久浪潮| 一区二区三区 在线观看视频| 国产寡妇亲子伦一区二区| 555www色欧美视频| 无码av免费一区二区三区试看| 91欧美一区二区| 国产精品久久午夜| 波多野结衣中文一区| 久久伊99综合婷婷久久伊| 蓝色福利精品导航| 日韩欧美一区二区免费| 日韩国产成人精品| 91麻豆精品国产| 亚洲一区二区欧美| 91久久香蕉国产日韩欧美9色| 亚洲欧洲精品成人久久奇米网| 国产精品 欧美精品| 国产亚洲1区2区3区| 国产乱妇无码大片在线观看| 精品久久久久av影院| 免费不卡在线观看| 日韩欧美区一区二| 国产一区二区成人久久免费影院| 欧美大片免费久久精品三p | 国产精品自拍网站| 久久综合九色欧美综合狠狠| 国内不卡的二区三区中文字幕 | 亚洲精品一区二区三区香蕉| 麻豆成人久久精品二区三区小说| 欧美成人精品二区三区99精品| 日本特黄久久久高潮 | 欧美日韩亚洲综合一区| 亚洲一区视频在线观看视频| 色素色在线综合| 午夜欧美2019年伦理| 欧美一级夜夜爽| 国产精品一区专区| 亚洲日穴在线视频| 在线不卡中文字幕| 国产一级精品在线| 国产精品国产三级国产三级人妇| 日本精品一区二区三区高清| 亚洲电影中文字幕在线观看| 欧美一级高清大全免费观看| 捆绑紧缚一区二区三区视频 | 精品国产91久久久久久久妲己| 国产一区二区三区美女| 国产精品国产三级国产aⅴ原创| 日本乱码高清不卡字幕| 美国三级日本三级久久99| 久久精品综合网| 91激情在线视频| 精品一二线国产| 亚洲欧美日韩在线播放| 日韩一区二区电影在线| 成人精品电影在线观看| 日本成人在线一区| 国产精品久久久爽爽爽麻豆色哟哟| 欧美亚洲综合色| 高清视频一区二区| 日韩一区欧美二区| 国产精品家庭影院| 欧美大黄免费观看| 欧美亚洲综合另类| 懂色av噜噜一区二区三区av| 亚欧色一区w666天堂| 中文av一区特黄| 欧美不卡激情三级在线观看| 色婷婷综合激情| 国产超碰在线一区| 美女一区二区三区在线观看| 亚洲风情在线资源站| 久久久久久久久久久99999| 在线观看91精品国产入口| 国产乱子轮精品视频| 日韩精品每日更新| 亚洲一区二区不卡免费| 中文字幕一区二区三区四区| 欧美videos中文字幕| 欧美亚洲尤物久久| 91丨九色丨蝌蚪富婆spa| 国产精品一区二区免费不卡 | 精品蜜桃在线看| 欧美日韩免费在线视频| 91蜜桃免费观看视频| 国产999精品久久久久久| 国产综合一区二区| 免费精品视频在线| 日韩精品乱码免费| 亚洲成av人片在www色猫咪| 日韩毛片在线免费观看| 欧美国产精品一区二区| 欧美精品一区二区三| 日韩视频免费观看高清完整版在线观看| 91啪亚洲精品| 91色视频在线| 色天天综合色天天久久| 91免费视频观看| 本田岬高潮一区二区三区| 粉嫩13p一区二区三区| 久久99热这里只有精品| 久久99精品国产麻豆婷婷| 美国一区二区三区在线播放| 麻豆视频观看网址久久| 开心九九激情九九欧美日韩精美视频电影 | 国产精品免费免费| 亚洲欧洲精品一区二区三区不卡| 国产精品久久三区| 亚洲丝袜自拍清纯另类| 亚洲欧美一区二区三区极速播放| 亚洲欧洲制服丝袜| 亚洲一区av在线| 五月天国产精品| 六月丁香综合在线视频| 韩国一区二区在线观看| 欧美性色欧美a在线播放| 色一情一伦一子一伦一区| 欧美午夜精品电影| 日韩欧美国产综合一区 | 国产精品亚洲а∨天堂免在线| 国产一区中文字幕| 99精品视频在线观看| 欧洲在线/亚洲| 精品久久人人做人人爽| 国产精品视频线看| 亚洲专区一二三| 久久不见久久见免费视频1| 东方aⅴ免费观看久久av| 色婷婷综合在线| 日韩欧美中文字幕一区| 国产精品久久久久久一区二区三区 | 日本电影亚洲天堂一区| 91精品国产综合久久久久久漫画| 精品国产凹凸成av人网站| **欧美大码日韩| 日韩**一区毛片| 丁香激情综合五月| 欧美日韩第一区日日骚| 久久你懂得1024| 亚洲精品日日夜夜| 国产一区日韩二区欧美三区| 一本在线高清不卡dvd| 欧美一区中文字幕| 日韩一区在线看| 久久电影网电视剧免费观看| 成人av网站在线观看免费| 欧美一级二级三级乱码| 日本一区二区电影| 日本不卡一二三区黄网| 91免费视频观看| 2023国产精品自拍| 亚洲一区二区在线视频| 国产成人aaa| 精品免费国产二区三区| 亚洲成精国产精品女| 国产成人精品影视| 欧美一区二区免费| 一区二区三区四区视频精品免费 | 久久99精品国产麻豆婷婷洗澡| 色综合色综合色综合色综合色综合| 日韩视频一区二区三区| 亚洲小说欧美激情另类| 欧美日韩亚洲另类| 国产精品久久久久久久久免费桃花 | 久久精品欧美日韩精品 | 亚洲综合男人的天堂| 国产成人在线影院| 欧美大胆一级视频| 蜜臀久久久久久久| 欧美日韩国产一级片| 一区二区三区免费网站| av爱爱亚洲一区| 国产精品成人在线观看| 国产91在线观看| 久久久久久电影| 国产一区二区三区视频在线播放| 日韩一区二区高清| 青青草视频一区| 日韩美女视频在线| 玖玖九九国产精品| 精品日韩欧美一区二区| 日韩av中文字幕一区二区| 欧美放荡的少妇| 免费人成在线不卡| 91麻豆精品国产91久久久久久| 亚瑟在线精品视频| 欧美一级生活片| 国产精品综合久久| 国产色产综合产在线视频|