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

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

?? paramset.cpp

?? 小波圖像變換
?? CPP
字號:
/*************************************************************************

This software module was originally developed by 

	Simon Winder (swinder@microsoft.com), Microsoft Corporation

in the course of development of the MPEG-4 Video (ISO/IEC 14496-2). 
This software module is an implementation of a part of one or more MPEG-4 Video tools 
as specified by the MPEG-4 Video. 
ISO/IEC gives users of the MPEG-4 Video free license to this software module or modifications 
thereof for use in hardware or software products claiming conformance to the MPEG-4 Video. 
Those intending to use this software module in hardware or software products are advised that
its use may infringe existing patents. The original developer of this software module and his/her
company, the subsequent editors and their companies, and ISO/IEC have no liability for use of
this software module or modifications thereof in an implementation. Copyright is not released
for non MPEG-4 Video conforming products. Microsoft retains full right to use the code for
his/her own purpose, assign or donate the code to a third party and to inhibit third parties
from using the code for non MPEG-4 Video conforming products. This copyright notice must be
included in all copies or derivative works. 

Copyright (c) 1996, 1997.


*************************************************************************/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>

#include "paramset.h"


#ifdef __MFC_
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif

#define new DEBUG_NEW				   
#endif // __MFC_

////////////////////////////////////////////////////////////////////////
// CxParamSet
////////////////////////////////////////////////////////////////////////

CxParamSet::CxParamSet()
	: m_pCurrentEnum(NULL), m_pCreateListTail(NULL)
{
	Int i;
	for(i=0; i<PAR_HASHSIZE; i++)
		m_rgpHashList[i] = NULL;
}

CxParamSet::~CxParamSet()
{
	DeleteAll();
}

Int CxParamSet::GetParam(const char *pchName, Int iIndex, TxParamValue *ptValueRtn)
{
	if(pchName==NULL)
		return ERES_PARAMS;
	if(iIndex<-1)
		iIndex = -1;

	Int iHash;
	TxParamEntry *pEntry = FindHashEntry(pchName, iIndex, &iHash);
	if(pEntry==NULL)
		return ERES_NOOBJ;

	if(ptValueRtn!=NULL)
		*ptValueRtn = pEntry->tValue;
	
	return ERES_OK;
}

Int CxParamSet::SetParam(const char *pchName, Int iIndex, const TxParamValue *ptValue)
{
	if(pchName==NULL || ptValue==NULL)
		return ERES_PARAMS;
	if(ptValue->tType==PS_STRING && ptValue->pchData==NULL)
		return ERES_PARAMS;
	if(ptValue->tType==PS_ARRAY && ptValue->pdData==NULL)
		return ERES_PARAMS;
	if(iIndex<-1)
		iIndex = -1;

	Int iHash;
	TxParamEntry *pEntry = FindHashEntry(pchName, iIndex, &iHash);
	if(pEntry==NULL)
	{
		// validate new name
		Int i, iL;
		iL = strlen(pchName);
		for(i=0; i<iL; i++)
			if(isspace(pchName[i]) || pchName[i]=='/' || pchName[i]=='['
				|| pchName[i]=='=')
				return ERES_PARAMS;

		// create new entry at iHash
		pEntry = new TxParamEntry;
		if(pEntry==NULL)
			return ERES_MEMORY;
		pEntry->pchName = new char [strlen(pchName) + 1];
		if(pEntry->pchName==NULL)
		{
			delete pEntry;
			return ERES_MEMORY;
		}
		strcpy(pEntry->pchName, pchName);
		pEntry->iIndex = iIndex;

		// copy data
		pEntry->tValue = *ptValue;
		if(pEntry->tValue.tType==PS_STRING)
		{
			pEntry->tValue.pchData = new char [strlen(ptValue->pchData) + 1];
			if(pEntry->tValue.pchData==NULL)
			{
				delete pEntry->pchName;
				delete pEntry;
				return ERES_MEMORY;
			}
			strcpy(pEntry->tValue.pchData, ptValue->pchData);
		}
		else if(pEntry->tValue.tType==PS_ARRAY)
		{
			pEntry->tValue.pdData = new Double [pEntry->tValue.iSize + 1]; // add one in case size is zero
			if(pEntry->tValue.pdData==NULL)
			{
				delete pEntry->pchName;
				delete pEntry;
				return ERES_MEMORY;
			}
			memcpy(pEntry->tValue.pdData, ptValue->pdData, pEntry->tValue.iSize * sizeof(Double));
		}
		
		// add to hash list at head
		pEntry->pNextHash = m_rgpHashList[iHash];
		pEntry->pPrevHash = NULL;
		m_rgpHashList[iHash] = pEntry;
		if(pEntry->pNextHash)
			pEntry->pNextHash->pPrevHash = pEntry;

		// add to create list at tail
		pEntry->pPrevCreate = m_pCreateListTail;
		pEntry->pNextCreate = NULL;
		m_pCreateListTail = pEntry;
		if(pEntry->pPrevCreate)
			pEntry->pPrevCreate->pNextCreate = pEntry;
	}
	else // already exists
	{
		// make copy of string or array if necessary
		char *pchTmp = NULL;
		Double *pdTmp = NULL;
		if(ptValue->tType==PS_STRING)
		{
			pchTmp = new char [strlen(ptValue->pchData) + 1];
			if(pchTmp==NULL)
				return ERES_MEMORY;
			strcpy(pchTmp, ptValue->pchData);
		}
		else if(pEntry->tValue.tType==PS_ARRAY)
		{
			pdTmp = new Double [ptValue->iSize + 1];
			if(pdTmp==NULL)
				return ERES_MEMORY;
			memcpy(pdTmp, ptValue->pdData, ptValue->iSize * sizeof(Double));
		}

		// delete old string or array if present
		if(pEntry->tValue.tType==PS_STRING)
			delete pEntry->tValue.pchData;
		else if(pEntry->tValue.tType==PS_ARRAY)
			delete pEntry->tValue.pdData;

		// copy data
		pEntry->tValue = *ptValue;

		// assign string or array pointer
		if(ptValue->tType==PS_STRING)
			pEntry->tValue.pchData = pchTmp;
		else if(ptValue->tType==PS_ARRAY)
			pEntry->tValue.pdData = pdTmp;
	}

	return ERES_OK;
}

Int CxParamSet::DeleteParam(const char *pchName, Int iIndex)
{
	if(pchName==NULL)
		return ERES_PARAMS;
	if(iIndex<-1)
		iIndex = -1;

	Int iHash;
	TxParamEntry *pEntry = FindHashEntry(pchName, iIndex, &iHash);
	if(pEntry==NULL)
		return ERES_NOOBJ;
	
	if(pEntry==m_pCurrentEnum)
		m_pCurrentEnum = pEntry->pNextCreate;

	DeleteHashEntry(pEntry, iHash);

	return ERES_OK;
}

void CxParamSet::StartEnum()
{
	// set current enum to head of create list
	if(m_pCreateListTail==NULL)
		return;
	m_pCurrentEnum = m_pCreateListTail;
	while(m_pCurrentEnum->pPrevCreate)
		m_pCurrentEnum = m_pCurrentEnum->pPrevCreate;
}

Bool CxParamSet::NextEnum(char **ppchNameRtn, Int *piIndexRtn, TxParamValue *ptValueRtn)
{
	if(m_pCurrentEnum==NULL)
		return FALSE;

	if(ppchNameRtn)
		*ppchNameRtn = m_pCurrentEnum->pchName;
	if(piIndexRtn)
		*piIndexRtn = m_pCurrentEnum->iIndex;
	if(ptValueRtn)
		*ptValueRtn = m_pCurrentEnum->tValue;

	m_pCurrentEnum = m_pCurrentEnum->pNextCreate;
	return TRUE;
}

void CxParamSet::DeleteAll()
{
	Int i;
	for(i=0; i<PAR_HASHSIZE; i++)
	{
		TxParamEntry *pEntry;
		while((pEntry = m_rgpHashList[i])!=NULL)
			DeleteHashEntry(pEntry, i);
	}
	m_pCurrentEnum = NULL;
}

void CxParamSet::DeleteHashEntry(TxParamEntry *pEntry, Int iHash)
{
	// unlink from hash chain
	if(pEntry->pPrevHash)
		pEntry->pPrevHash->pNextHash = pEntry->pNextHash;
	else
		m_rgpHashList[iHash] = pEntry->pNextHash;
	if(pEntry->pNextHash)
		pEntry->pNextHash->pPrevHash = pEntry->pPrevHash;

	// unlink from create chain
	if(pEntry->pPrevCreate)
		pEntry->pPrevCreate->pNextCreate = pEntry->pNextCreate;
	if(pEntry->pNextCreate)
		pEntry->pNextCreate->pPrevCreate = pEntry->pPrevCreate;
	else
		m_pCreateListTail = pEntry->pPrevCreate;

	// delete
	if(pEntry->tValue.tType==PS_STRING)
		delete pEntry->tValue.pchData;
	else if(pEntry->tValue.tType==PS_ARRAY)
		delete pEntry->tValue.pdData;

	delete pEntry->pchName;
	delete pEntry;
}

TxParamEntry *CxParamSet::FindHashEntry(const char *pchName, Int iIndex, Int *piHashRtn)
{
	const char *pchPtr;
	Int iHash = (iIndex + 2) % PAR_HASHSIZE;
	for(pchPtr = pchName; *pchPtr!='\0'; pchPtr++)
		iHash = (iHash * 17 + *pchPtr) % PAR_HASHSIZE;

	*piHashRtn = iHash;

	TxParamEntry *pEntry = m_rgpHashList[iHash];
	for(; pEntry!=NULL; pEntry = pEntry->pNextHash)
		if(iIndex==pEntry->iIndex && strcmp(pchName, pEntry->pchName)==0)
			break;

	return pEntry;
}

Int CxParamSet::GetC()
{
	Int ch = getc(m_fp);
	if(ch=='\n')
		(*m_piErrLine)++;
	return ch;
}

void CxParamSet::UnGetC(Int ch)
{
	ungetc(ch, m_fp);
	if(ch=='\n')
		(*m_piErrLine)--;
}

Int CxParamSet::GetToken(char *pchBuf)
{
	SkipSpace();
	Int ch = GetC();
	if(ch==EOF)
		return ERES_EOF;
	if(ch=='/')
	{
		SkipComment();
		ch = GetC();
		if(ch==EOF)
			return ERES_EOF;
	}
	if(ch=='[' || ch==']' || ch=='=' || ch=='{' || ch=='}' || ch==','
		|| ch=='\"')
	{
		pchBuf[0] = (char)ch;
		pchBuf[1] = '\0';
		return ERES_OK;
	}
	pchBuf[0] = (char)ch;
	Int i;
	for(i=1;i<TOKEN_SIZE - 1;i++)
	{
		ch = GetC();
		if(ch==EOF)
		{
			pchBuf[i] = '\0';
			return ERES_EOF;
		}
		if(isspace(ch) || ch=='[' || ch==']' || ch=='=' || ch=='{'
			|| ch=='}' || ch==',' || ch=='\"')
		{
			pchBuf[i] = '\0';
			UnGetC(ch);
			return ERES_OK;
		}
		if(ch=='/' && SkipComment()!=ERES_NOOBJ)
		{
			pchBuf[i] = '\0';
			return ERES_OK;
		}
		pchBuf[i] = (char)ch;
	}
	pchBuf[i] = '\0';
	return ERES_OK;
}

Int CxParamSet::SkipSpace()
{
	Int ch;

	do {
		ch = GetC();
		if(ch==EOF)
			return ERES_EOF;
	} while(isspace(ch));

	UnGetC(ch);
	return ERES_OK;	
}

Int CxParamSet::SkipComment()
{
	// assumes we already read a '/'
	// space is skipped at end
	Int ch;
	do {
		ch = GetC();
		if(ch==EOF)
			return ERES_EOF;
		if(ch!='/' && ch!='*')
		{
			UnGetC(ch);
			return ERES_NOOBJ;
		}
		if(ch=='/')
		{
			do {
				ch = GetC();
				if(ch==EOF)
					return ERES_EOF;
			} while(ch!='\n');
		}
		else if(ch=='*')
		{
			Int iState = 0;
			do {
				ch = GetC();
				if(ch==EOF)
					return ERES_EOF;
				if(iState==0 && ch=='*')
					iState = 1;
				else if(iState==1)
				{
					if(ch=='/')
						iState = 2;
					else if(ch!='*')
						iState = 0;
				}
			} while(iState!=2);
		}
		if(SkipSpace()==ERES_EOF)
			return ERES_EOF;
		ch = GetC();
		if(ch==EOF)
			return ERES_EOF;
	} while(ch=='/');
	
	UnGetC(ch);
	return ERES_OK;
}

Int CxParamSet::ReadValue(char *pchBuf, TxParamValue *ptVal)
{
	if(pchBuf[0]=='\"')
	{
		// string value
		Int i, ch;
		for(i=0; i<TOKEN_SIZE - 2; i++)
		{
			ch = GetC();
			if(ch=='\"')
			{
				pchBuf[i] = '\0';
				//printf("\"%s\"\n", pchBuf);
				SetPVString(*ptVal, pchBuf);
				return ERES_OK;
			}
			if(ch==EOF)
				return ERES_FORMAT;
			pchBuf[i] = (char)ch;
		}
		return ERES_FORMAT;
	}
	else
	{
		char *pchEnd;
		Double dVal = strtod(pchBuf, &pchEnd);
		if(*pchEnd != '\0')
			return ERES_FORMAT;
		//printf("%g\n", dVal);
		SetPVDouble(*ptVal, dVal);
		return ERES_OK;
	}
}

Int CxParamSet::Load(FILE *fp, Int *piErrLine)
{
	char pchBuf[TOKEN_SIZE], pchName[TOKEN_SIZE];
	Int iInd;
	TxParamValue tVal;

	m_piErrLine = piErrLine;
	m_fp = fp;
	*m_piErrLine = 1;

	while(!(GetToken(pchBuf)==ERES_EOF))
	{
		strcpy(pchName, pchBuf);
		if(GetToken(pchBuf)==ERES_EOF)
			goto close_on_format;

		if(pchBuf[0]=='[')
		{
			if(GetToken(pchBuf)==ERES_EOF)
				goto close_on_format;
			char *pchEnd;
			iInd = strtol(pchBuf, &pchEnd, 10);
			if(*pchEnd != '\0')
				goto close_on_format;
			if(GetToken(pchBuf)==ERES_EOF)
				goto close_on_format;
			if(pchBuf[0]!=']')
				goto close_on_format;
			if(GetToken(pchBuf)==ERES_EOF)
				goto close_on_format;
		}
		else
			iInd = -1;
		if(pchBuf[0]!='=')
			goto close_on_format;
		
		if(GetToken(pchBuf)==ERES_EOF)
			goto close_on_format;
		if(pchBuf[0]=='{')
		{
			Int iCount = 0;
			Double rgdTemp[256];
			do {
				//printf("%s[%d] = (%d)", pchName, iInd, iCount);
				if(GetToken(pchBuf)==ERES_EOF)
					goto close_on_format;
				if(pchBuf[0]=='}')
					break;
				Int er = ReadValue(pchBuf, &tVal);
				if(er==ERES_OK)
				{
					if(tVal.tType==PS_DOUBLE)
						rgdTemp[iCount] = tVal.dData;
					else
						rgdTemp[iCount] = 0.0;
				}
				else
					return er;
				if(iCount<255)
					iCount++;

				if(GetToken(pchBuf)==ERES_EOF)
					goto close_on_format;
			} while(pchBuf[0]==',');

			if(pchBuf[0]!='}')
				goto close_on_format;
			
			SetPVArray(tVal, rgdTemp, iCount);
			Int er = SetParam(pchName, iInd, &tVal);
			if(er!=ERES_OK)
				return er;
		}
		else
		{
			//printf("%s[%d] = ", pchName, iInd);
			TxParamValue tVal;
			Int er = ReadValue(pchBuf, &tVal);
			if(er==ERES_OK)
				er = SetParam(pchName, iInd, &tVal);
			if(er!=ERES_OK)
				return er;
		}
	}

	return ERES_OK;

close_on_format:
	return ERES_FORMAT;
}


Int CxParamSet::GetDouble(char *pchName, Int iIndex, Double *pdValue)
{
	TxParamValue v;
	Int er = GetParam(pchName, iIndex, &v);
	if(er==ERES_OK)
	{
		if(v.tType==PS_DOUBLE)
			*pdValue = v.dData;
		else
			return ERES_PARAMS;
	}
	return er;
}

Int CxParamSet::GetString(char *pchName, Int iIndex, char **ppchVal)
{
	TxParamValue v;
	Int er = GetParam(pchName, iIndex, &v);
	if(er==ERES_OK)
	{
		if(v.tType==PS_STRING)
		{
//			char *pchBuf = new char [strlen(v.pchData)+1];
//			if(pchBuf==NULL)
//				return ERES_MEMORY;
//			strcpy(pchBuf, v.pchData);
//			*ppchVal = pchBuf;
			*ppchVal = v.pchData; // swinder 991211
		}
		else
			return ERES_PARAMS;
	}
	return er;
}

Int CxParamSet::GetArray(char *pchName, Int iIndex, Double **ppdVal, Int *piSize)
{
	TxParamValue v;
	Int er = GetParam(pchName, iIndex, &v);
	if(er==ERES_OK)
	{
		if(v.tType==PS_ARRAY)
		{
//			Double *pdBuf = NULL;
//			if(v.iSize>0)
//			{
//				pdBuf = new Double [v.iSize];
//				if(pdBuf==NULL)
//					return ERES_MEMORY;
//				memcpy(pdBuf, v.pdData, v.iSize * sizeof(Double));
//			}
//			*ppdVal = pdBuf;
			*ppdVal = v.pdData; // swinder 991211
			*piSize = v.iSize;
		}
		else
			return ERES_PARAMS;
	}
	return er;
}

void CxParamSet::Dump(FILE *fp)
{
	StartEnum();

	char *pchName;
	int iInd, iCount;
	TxParamValue tVal;

	iCount = 0;
	while(NextEnum(&pchName, &iInd, &tVal))
	{
		iCount++;
		if(iInd<0)
			fprintf(fp, "%s = ", pchName);
		else
			fprintf(fp, "%s[%d] = ", pchName, iInd);
		if(tVal.tType==PS_DOUBLE)
			fprintf(fp, "%g", tVal.dData);
		else if(tVal.tType==PS_STRING)
			fprintf(fp, "\"%s\"", tVal.pchData);
		else
		{
			fprintf(fp, "{");
			int i;
			for(i = 0; i<tVal.iSize; i++)
			{
				fprintf(fp, "%g", tVal.pdData[i]);
				if(i+1<tVal.iSize)
					fprintf(fp, ", ");
			}
			fprintf(fp, "}");
		}
		fprintf(fp, "\n");
	}

	fprintf(fp,"\n// Total: %d parameters.\n\n", iCount);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频网在线直播| 日韩一区二区三区观看| 成人久久视频在线观看| 国产福利精品导航| 国产传媒久久文化传媒| 国产精品中文字幕一区二区三区| 久久福利视频一区二区| 国产精品一区二区男女羞羞无遮挡| 狠狠狠色丁香婷婷综合激情| 精品国产一区二区三区久久影院 | 看电影不卡的网站| 看电影不卡的网站| 国产成人亚洲精品狼色在线 | 国产在线不卡一卡二卡三卡四卡| 激情综合一区二区三区| 国产精品一区二区久久精品爱涩| 国产大片一区二区| 91电影在线观看| 日本二三区不卡| 欧美精品免费视频| 久久免费精品国产久精品久久久久 | 国产一区二区不卡在线| www.在线欧美| 欧美精品日韩一本| 中文字幕一区二区三区在线观看| 亚洲尤物视频在线| 精品一区二区三区免费播放| 91免费国产在线观看| 欧美一区二区人人喊爽| 自拍视频在线观看一区二区| 亚洲国产cao| 成人黄色大片在线观看| 欧美又粗又大又爽| 日韩欧美黄色影院| 亚洲日韩欧美一区二区在线| 亚洲欧美日韩系列| 亚洲观看高清完整版在线观看| 国产成人在线看| 欧美亚洲高清一区二区三区不卡| 欧美一区二区三级| 视频一区二区国产| av在线播放成人| 国产欧美日韩激情| 久久99国内精品| 日韩精品一区二区三区蜜臀| 亚洲欧洲综合另类| 99精品一区二区三区| 国产精品萝li| 91污片在线观看| 久久精品人人爽人人爽| 黄一区二区三区| 2023国产精品自拍| 国产一区三区三区| 久久久久久日产精品| 看电影不卡的网站| 精品嫩草影院久久| 狠狠狠色丁香婷婷综合久久五月| 欧美三级日韩三级国产三级| 国产精品久久久久久久久图文区| fc2成人免费人成在线观看播放| 国产精品入口麻豆九色| 欧美在线一二三| 韩国毛片一区二区三区| 中文字幕一区二区三区乱码在线 | 欧美亚洲综合久久| 日韩国产欧美在线播放| 国产喂奶挤奶一区二区三区| 91在线免费视频观看| 日韩电影免费一区| 国产精品乱码妇女bbbb| 欧美视频在线播放| 另类人妖一区二区av| 一区在线观看免费| 精品国产乱码久久久久久图片| 99久久婷婷国产综合精品电影 | 精品国产亚洲一区二区三区在线观看| 国产成人自拍在线| 蜜桃视频第一区免费观看| 1024成人网色www| 久久奇米777| 国产丝袜欧美中文另类| 欧美精品777| 色婷婷综合久久久久中文 | 欧美视频精品在线观看| 91在线观看高清| 国产成人8x视频一区二区| 婷婷综合在线观看| 亚洲一区二区在线免费观看视频 | 国产在线播放一区| 久99久精品视频免费观看| 琪琪一区二区三区| 捆绑紧缚一区二区三区视频| 国产精品国模大尺度视频| 国产色产综合产在线视频| 久久婷婷综合激情| 久久久久久久电影| 国产亚洲综合性久久久影院| 久久久久久久久伊人| 久久久久国产免费免费| 国产午夜精品久久久久久久 | 欧美性受极品xxxx喷水| 一本一本大道香蕉久在线精品 | 在线观看免费亚洲| 亚洲精品菠萝久久久久久久| 无吗不卡中文字幕| 成熟亚洲日本毛茸茸凸凹| 91精品国产91久久久久久最新毛片| 欧美在线观看视频在线| 懂色av一区二区三区蜜臀| 欧美色大人视频| 中文字幕不卡在线观看| 视频在线在亚洲| 色综合天天综合色综合av | 豆国产96在线|亚洲| 欧美一级搡bbbb搡bbbb| 一区二区三区在线免费播放| 国产成人av福利| 亚洲狼人国产精品| 亚洲日本乱码在线观看| 日韩精品亚洲一区二区三区免费| 大尺度一区二区| 精品国产乱码久久久久久免费| 亚洲日本韩国一区| 粉嫩欧美一区二区三区高清影视| 欧美精品九九99久久| 成人免费在线视频| 国产成人综合视频| 精品国产一区二区三区久久久蜜月| 亚洲精品国久久99热| 99精品欧美一区| 国产精品电影一区二区三区| 久久精品国产一区二区三区免费看| 欧美优质美女网站| 亚洲动漫第一页| 欧美亚洲综合网| 亚洲成人综合视频| 欧美一二三在线| 男女男精品视频网| 日韩欧美亚洲另类制服综合在线| 亚洲综合色视频| 欧美日韩激情一区二区| 亚洲高清不卡在线观看| 欧美电影一区二区| 美国毛片一区二区三区| 精品国产乱码久久久久久1区2区| 麻豆国产精品一区二区三区| 精品国产乱码久久久久久夜甘婷婷 | 91国内精品野花午夜精品| 国产精品污污网站在线观看| 成人99免费视频| 亚洲黄色性网站| 精品99999| 国产成人精品三级| 亚洲一区二区精品3399| 欧美区一区二区三区| 成人av高清在线| 三级成人在线视频| 中文字幕一区在线观看视频| 在线电影一区二区三区| 国产精品资源网站| 亚洲乱码国产乱码精品精的特点| 欧美一区三区二区| 成人精品视频.| 蜜桃av噜噜一区| 亚洲乱码国产乱码精品精小说 | 在线播放91灌醉迷j高跟美女| 日韩av中文在线观看| 中文字幕一区二区在线观看| 欧美二区三区的天堂| 97精品国产露脸对白| 国产精品夜夜嗨| 日韩黄色免费电影| 亚洲日本一区二区三区| 欧美精品免费视频| 不卡的av网站| 国产专区欧美精品| 午夜成人免费电影| 亚洲图片有声小说| **性色生活片久久毛片| 国产欧美日韩激情| 久久久久久久av麻豆果冻| 日韩视频永久免费| 欧美日本视频在线| 日本精品视频一区二区| 国产成人免费视频一区| 麻豆精品一区二区av白丝在线| 亚洲日本丝袜连裤袜办公室| 中文字幕国产一区二区| 精品国产乱码91久久久久久网站| 欧美日韩日日摸| 欧美日韩精品一区二区三区| 91视频免费观看| 91麻豆免费在线观看| 99精品黄色片免费大全| av色综合久久天堂av综合| 大陆成人av片| eeuss鲁片一区二区三区在线观看| 粉嫩av亚洲一区二区图片| 成人丝袜高跟foot| 欧美日韩午夜在线|