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

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

?? malib.c

?? 是一個手機功能的模擬程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
/****************************************************************************
 *
 *		Copyright (C) 2002-2003	YAMAHA CORPORATION. All rights reserved.
 *
 *		Module		: malib.c
 *
 *		Description	: Libraly Functions
 *
 *		Version		: 2.0.0 	2003.05.14
 *
 ****************************************************************************/

#include "madefs.h"
#include "madebug.h"
#include "mamachdep.h"

#include "mammfcnv.h"
#include "malib.h"

/****************************************************************************
 *	macro
 ****************************************************************************/
#define	MALIB_MAKEDWORD(a, b, c, d)	(UINT32)(((UINT32)(a) << 24) | \
						((UINT32)(b) << 16) | ((UINT32)(c) << 8) | (UINT32)(d))

/****************************************************************************
 *	define
 ****************************************************************************/
#define	MALIB_SIZE_OF_CHUNKHEADER	(8)
#define	MALIB_SIZE_OF_CRC			(2)
#define	MALIB_SIZE_OF_MIN_CNTI		(5)
/* for Phrase */
#define	MALIB_CNTI_CLASS_YAMAHA		(0x00)
#define	MALIB_CNTI_TYPE_PHRASE		(0xF0)
#define	MALIB_PHRASE_TIMEBASE		(20)

/* for Audio */
#define	MALIB_MIN_STREAM_FS			(4000)
#define	MALIB_MAX_4BIT_MONO_FS		(24000)
#define	MALIB_MAX_4BIT_STEREO_FS	(24000)
#define	MALIB_MAX_8BIT_MONO_FS		(12000)
#define	MALIB_MAX_8BIT_STEREO_FS	(12000)

#define	MALIB_AUDIO_SIZE_MAX		(0x100000)		/* 1MByte				*/


/* Chunk ID		*/
#define	MALIB_CHUNKID_MMMD			0x4D4D4D44
#define	MALIB_CHUNKID_CNTI			0x434E5449
#define	MALIB_CHUNKID_OPDA			0x4F504441
#define	MALIB_CHUNKID_DCH			0x44636800
#define	MALIB_CHUNKID_M5P			0x50726F00
#define	MALIB_CHUNKID_MTR			0x4D545200
#define	MALIB_CHUNKID_MSPI			0x4D737049
#define	MALIB_CHUNKID_MTSU			0x4D747375
#define	MALIB_CHUNKID_MTSQ			0x4D747371
#define	MALIB_CHUNKID_MTSP			0x4D747370
#define	MALIB_CHUNKID_MWA			0x4D776100
#define	MALIB_CHUNKID_ATR			0x41545200
#define	MALIB_CHUNKID_ASPI			0x41737049
#define	MALIB_CHUNKID_ATSU			0x41747375
#define	MALIB_CHUNKID_ATSQ			0x41747371
#define	MALIB_CHUNKID_AWA			0x41776100
#define	MALIB_CHUNKID_MTHV			0x4D746876
#define	MALIB_CHUNKID_MHVS			0x4D687673
#define	MALIB_CHUNKID_HVP			0x48565000
#define	MALIB_CHUNKID_MHSC			0x4D687363


/****************************************************************************
 *	table
 ****************************************************************************/
static const UINT16 crctable[256] = {
  0x0000U,0x1021U,0x2042U,0x3063U,0x4084U,0x50A5U,0x60C6U,0x70E7U,
  0x8108U,0x9129U,0xA14AU,0xB16BU,0xC18CU,0xD1ADU,0xE1CEU,0xF1EFU,
  0x1231U,0x0210U,0x3273U,0x2252U,0x52B5U,0x4294U,0x72F7U,0x62D6U,
  0x9339U,0x8318U,0xB37BU,0xA35AU,0xD3BDU,0xC39CU,0xF3FFU,0xE3DEU,
  0x2462U,0x3443U,0x0420U,0x1401U,0x64E6U,0x74C7U,0x44A4U,0x5485U,
  0xA56AU,0xB54BU,0x8528U,0x9509U,0xE5EEU,0xF5CFU,0xC5ACU,0xD58DU,
  0x3653U,0x2672U,0x1611U,0x0630U,0x76D7U,0x66F6U,0x5695U,0x46B4U,
  0xB75BU,0xA77AU,0x9719U,0x8738U,0xF7DFU,0xE7FEU,0xD79DU,0xC7BCU,
  0x48C4U,0x58E5U,0x6886U,0x78A7U,0x0840U,0x1861U,0x2802U,0x3823U,
  0xC9CCU,0xD9EDU,0xE98EU,0xF9AFU,0x8948U,0x9969U,0xA90AU,0xB92BU,
  0x5AF5U,0x4AD4U,0x7AB7U,0x6A96U,0x1A71U,0x0A50U,0x3A33U,0x2A12U,
  0xDBFDU,0xCBDCU,0xFBBFU,0xEB9EU,0x9B79U,0x8B58U,0xBB3BU,0xAB1AU,
  0x6CA6U,0x7C87U,0x4CE4U,0x5CC5U,0x2C22U,0x3C03U,0x0C60U,0x1C41U,
  0xEDAEU,0xFD8FU,0xCDECU,0xDDCDU,0xAD2AU,0xBD0BU,0x8D68U,0x9D49U,
  0x7E97U,0x6EB6U,0x5ED5U,0x4EF4U,0x3E13U,0x2E32U,0x1E51U,0x0E70U,
  0xFF9FU,0xEFBEU,0xDFDDU,0xCFFCU,0xBF1BU,0xAF3AU,0x9F59U,0x8F78U,
  0x9188U,0x81A9U,0xB1CAU,0xA1EBU,0xD10CU,0xC12DU,0xF14EU,0xE16FU,
  0x1080U,0x00A1U,0x30C2U,0x20E3U,0x5004U,0x4025U,0x7046U,0x6067U,
  0x83B9U,0x9398U,0xA3FBU,0xB3DAU,0xC33DU,0xD31CU,0xE37FU,0xF35EU,
  0x02B1U,0x1290U,0x22F3U,0x32D2U,0x4235U,0x5214U,0x6277U,0x7256U,
  0xB5EAU,0xA5CBU,0x95A8U,0x8589U,0xF56EU,0xE54FU,0xD52CU,0xC50DU,
  0x34E2U,0x24C3U,0x14A0U,0x0481U,0x7466U,0x6447U,0x5424U,0x4405U,
  0xA7DBU,0xB7FAU,0x8799U,0x97B8U,0xE75FU,0xF77EU,0xC71DU,0xD73CU,
  0x26D3U,0x36F2U,0x0691U,0x16B0U,0x6657U,0x7676U,0x4615U,0x5634U,
  0xD94CU,0xC96DU,0xF90EU,0xE92FU,0x99C8U,0x89E9U,0xB98AU,0xA9ABU,
  0x5844U,0x4865U,0x7806U,0x6827U,0x18C0U,0x08E1U,0x3882U,0x28A3U,
  0xCB7DU,0xDB5CU,0xEB3FU,0xFB1EU,0x8BF9U,0x9BD8U,0xABBBU,0xBB9AU,
  0x4A75U,0x5A54U,0x6A37U,0x7A16U,0x0AF1U,0x1AD0U,0x2AB3U,0x3A92U,
  0xFD2EU,0xED0FU,0xDD6CU,0xCD4DU,0xBDAAU,0xAD8BU,0x9DE8U,0x8DC9U,
  0x7C26U,0x6C07U,0x5C64U,0x4C45U,0x3CA2U,0x2C83U,0x1CE0U,0x0CC1U,
  0xEF1FU,0xFF3EU,0xCF5DU,0xDF7CU,0xAF9BU,0xBFBAU,0x8FD9U,0x9FF8U,
  0x6E17U,0x7E36U,0x4E55U,0x5E74U,0x2E93U,0x3EB2U,0x0ED1U,0x1EF0U
};

static const UINT8 abMask[8] = {
	0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01 };

/*******************************************************************************
 *	malib_MakeCRC
 *
 *	Function:
 *			calculate CRC
 *	Argument:
 *			dSize		size of data
 *			pbData		pointer to data
 *	Return:
 *			value of CRC
 *
*******************************************************************************/
UINT16				malib_MakeCRC(
	UINT32			dSize,
	UINT8*			pbData
)
{
	UINT16			wRes;
	UINT8			bData;

	wRes  = 0xFFFFU;
	while( --dSize >= 2 ){
		bData = *pbData++;
		wRes = (UINT16)((wRes << 8) ^ crctable[(UINT8)(wRes >> 8) ^ bData]);
	}
	return (UINT16)(~wRes & 0xFFFFU);
}


/*******************************************************************************
 *	malib_Decode_7bitData
 *
 *	Function:
 *			change 7bit decode data to 8bit data
 *	Argument:
 *			pb7bit		pointer to 7bit data
 *			d7Size		size of 7bit data
 *			pb8bit		pointer to 8bit data
 *			d8Size		area size of 8bit data
 *	Return:
 *			
 *
*******************************************************************/
UINT32				malib_Decode_7bitData(
	UINT8*			pb7bit,
	UINT32			d7Size,
	UINT8*			pb8bit,
	UINT32			d8Size
)
{
	UINT32			dIndex7, dIndex8, dRemain, i;
	UINT8			bMsb;

	if((pb7bit == 0) || (d7Size == 0) || (pb8bit == 0) || (d8Size == 0))
		return 0;

	for (i = 0; i < d8Size; i ++)
		pb8bit[i] = 0;

	dIndex7	= 0;
	dIndex8	= 0;
	while (d7Size > dIndex7) {
		if (d7Size >= dIndex7 + 8)
			dRemain = 8;
		else
			dRemain = d7Size - dIndex7;
		bMsb	= pb7bit[dIndex7];
		for (i = 1; i < dRemain; i++) {
			if (d8Size <= dIndex8)
				return dIndex8;
			if (bMsb & abMask[i])
				pb8bit[dIndex8]	= (UINT8)(pb7bit[dIndex7 + i] | 0x80);
			else
				pb8bit[dIndex8]	= (UINT8)(pb7bit[dIndex7 + i] & 0x7F);
			dIndex8++;
		}
		dIndex7 += dRemain;
	}
	return dIndex8;
}

/****************************************************************************
 *	PhrChk_VoiceChunkCheck
 *
 *	Function:
 *			Check SMAF/Phrase voice chunk body.
 *	Argument:
 *			pbVoc		Pointer to the head of VOIC
 *			dSize		size of VOIC chunk
 *	Return:
 *			0		success.
 *			< 0		error code.
 *
 ****************************************************************************/
static SINT32	PhrChk_VoiceChunkCheck(UINT8* pbVoc, UINT32 dSize)
{
	UINT32		dChunkId;
	UINT32		dChunkSize;

	while(dSize >= (UINT32)(MALIB_SIZE_OF_CHUNKHEADER)) {
		dChunkId	= MALIB_MAKEDWORD(pbVoc[0], pbVoc[1], pbVoc[2], pbVoc[3]);
		dChunkSize	= MALIB_MAKEDWORD(pbVoc[4], pbVoc[5], pbVoc[6], pbVoc[7]);
		pbVoc		+= (UINT32)MALIB_SIZE_OF_CHUNKHEADER;
		/*	Check chunk size	*/
		if(dSize < (UINT32)(MALIB_SIZE_OF_CHUNKHEADER + dChunkSize)) {
			return (MASMW_ERROR_CHUNK_SIZE);
		}
		/*	Update	*/
		pbVoc	+= dChunkSize;
		dSize	-= (UINT32)(MALIB_SIZE_OF_CHUNKHEADER + dChunkSize);
	}

	return (MASMW_SUCCESS);
}

/****************************************************************************
 *	PhrChk_SequenceChunkCheck
 *
 *	Function:
 *			Check SMAF/Phrase sequence chunk.
 *	Argument:
 *			pbSeq		Pointer to the head of SEQU
 *			dSize		size of SEQU chunk
 *	Return:
 *			>=0		playback time[tick].
 *			< 0		error code.
 *
 ****************************************************************************/
static SINT32	PhrChk_SequenceChunkCheck(UINT8* pbSeq, UINT32 dSize)
{
	UINT32		dData;
	UINT32		dIdx;
	UINT32		dDuration;
	UINT32		dPlayTime;

	/*	Get play back time				*/
	dIdx		= 0L;
	dPlayTime	= 0L;
	while(dIdx < dSize) {
		/*	Check Size	*/
		if(dSize < (dIdx + 2L)) return (MASMW_ERROR_CHUNK_SIZE);

		/*	Duration 1 or 2byte	*/
		dDuration = (UINT32)(pbSeq[dIdx++]);
		if(dDuration & 0x80) {
			dDuration = (UINT32)((((dDuration & 0x7F) << 7)
										+ (UINT32)pbSeq[dIdx++]) + 128);
		}

		/*	Update play back time	*/
		dPlayTime += dDuration;

		/* Event */
		if(dSize < (dIdx + 2L)) return (MASMW_ERROR_CHUNK_SIZE);
		dData = (UINT32)pbSeq[dIdx++];
		switch (dData) {
		case 0x00L:
			/* Control Message */
			dData = (UINT32)pbSeq[dIdx++];
			if((dData & 0x30) == 0x30L) {	/*	3byte	*/
				if(dSize < (dIdx + 1L)) {
					return (MASMW_ERROR_CHUNK_SIZE);
				}
				dIdx++;
			}
			break;

		case 0xFFL:
			/* Exclusive Message or NOP */
			dData = (UINT32)pbSeq[dIdx++];
			if(dData == 0xF0L) {
				if(dSize < (dIdx + 1L)) {
					return (MASMW_ERROR_CHUNK_SIZE);
				}
				dData = (UINT32)pbSeq[dIdx++];
				if(dSize < (UINT32)(dIdx + dData)) {
					return (MASMW_ERROR_CHUNK_SIZE);
				}
				dIdx += dData;
			}
			break;

		default:
			/* Note Message */
			/* Gatetime 1 or 2byte */
			dDuration = (UINT32)pbSeq[dIdx++];
			if(dDuration & 0x80) {
				if(dSize < (dIdx + 1L)) {
					return (MASMW_ERROR_CHUNK_SIZE);
				}
				dDuration = (UINT32)(((dDuration & 0x7F) << 7)
												+ (UINT32)pbSeq[dIdx++] + 128);
			}
			break;
		}
	}

	if(dPlayTime <= 1) {	/*	20ms	*/
		return (MASMW_ERROR_SHORT_LENGTH);
	}

	return (SINT32)(dPlayTime);
}

/****************************************************************************
 *	PhrChk_PhraseBody
 *
 *	Function:
 *			Check SMAF/Phrase chunk.
 *	Argument:
 *			pbData		Pointer to the head of MMMG
 *			dSize		size of MMMG chunk
 *			pPi			pointer to MALIBPHRINFO
 *	Return:
 *			0		success.
 *			< 0		error code.
 *
 ****************************************************************************/
static SINT32	PhrChk_PhraseBody(UINT8* pbData, UINT32 dSize,
															PMALIBPHRINFO pPi)
{
	SINT32	sdRet;
	UINT32	dFound;
	UINT32	dChunkId;
	UINT32	dChunkSize;

	if(dSize < 2) return (MASMW_ERROR_CHUNK_SIZE);

	/*	Check Version		*/
	pPi->dVersion = (UINT32)(*pbData);
	if((pPi->dVersion != 1L) && (pPi->dVersion != 2L)) {
		return (MASMW_ERROR_FILE);
	}

	if(pPi->dErrChk) {
		/*	Check Timer base	*/
		if(*(pbData + 1) != MALIB_PHRASE_TIMEBASE) {
			return (MASMW_ERROR_FILE);
		}
	}

	/*	Search "VOIC", "SEQU" Chunk		*/
	dFound	= 0x00L;
	pbData	+= 2;	/*	Skip	*/
	dSize	-= 2L;
	while(dSize >= (UINT32)MALIB_SIZE_OF_CHUNKHEADER) {
		dChunkId	= MALIB_MAKEDWORD(pbData[0], pbData[1], pbData[2], pbData[3]);
		dChunkSize	= MALIB_MAKEDWORD(pbData[4], pbData[5], pbData[6], pbData[7]);
		pbData		+= (UINT32)MALIB_SIZE_OF_CHUNKHEADER;

		/*	Check chunk size	*/
		if(dSize < (UINT32)(MALIB_SIZE_OF_CHUNKHEADER + dChunkSize)) {
			return (MASMW_ERROR_CHUNK_SIZE);
		}

		if(	(dChunkId == MALIB_MAKEDWORD('V', 'O', 'I', 'C'))	&&
			!(dFound & 0x01)) {
			sdRet = PhrChk_VoiceChunkCheck(pbData, dChunkSize);
			if(sdRet < MASMW_SUCCESS) return (sdRet);
			pPi->pbVoice	= pbData;
			pPi->dVoiceSize	= dChunkSize;
			dFound |= 0x01L;
		}
		else if((dChunkId == MALIB_MAKEDWORD('S', 'E', 'Q', 'U'))	&&
				!(dFound & 0x02)) {
			sdRet = PhrChk_SequenceChunkCheck(pbData, dChunkSize);
			if(sdRet < MASMW_SUCCESS) return (sdRet);
			pPi->pbSeq		= pbData;
			pPi->dSeqSize	= dChunkSize;
			pPi->dPlayTime	= (UINT32)sdRet;
			dFound |= 0x02L;
		}

		/*	Update	*/
		pbData	+= dChunkSize;
		dSize	-= (UINT32)(dChunkSize + MALIB_SIZE_OF_CHUNKHEADER);
	}

	if((dFound & 0x02) == 0x00L) {
		return (MASMW_ERROR_CHUNK);
	}
	return (MASMW_SUCCESS);
}

/****************************************************************************
 *	SmafPhrChecker
 *
 *	Function:
 *			Check SMAF/Phrase data.
 *	Argument:
 *			pbData		Pointer to SMAF/Phrase data
 *			dSize		size of data
 *			pPi			pointer to MALIBPHRINFO
 *	Return:
 *			0		success.
 *			< 0		error code.
 *
 ****************************************************************************/
static SINT32	SmafPhrChecker(UINT8* pbData, UINT32 dSize, PMALIBPHRINFO pPi)
{
	UINT32			dCRC;
	UINT32			dRemain;
	UINT32			dChunkId;
	UINT32			dChunkSize;

	if(dSize < (UINT32)(MALIB_SIZE_OF_CHUNKHEADER + MALIB_SIZE_OF_CRC))
		 return (MASMW_ERROR_CHUNK_SIZE);

	/*	Check header ID and size	*/
	dChunkId	= MALIB_MAKEDWORD(pbData[0], pbData[1], pbData[2], pbData[3]);
	dChunkSize	= MALIB_MAKEDWORD(pbData[4], pbData[5], pbData[6], pbData[7]);

	if(dChunkId != MALIB_MAKEDWORD('M', 'M', 'M', 'D')) {
		return (MASMW_ERROR_CHUNK);
	}
	if((UINT32)(dChunkSize + MALIB_SIZE_OF_CHUNKHEADER) != dSize) {
		return (MASMW_ERROR_CHUNK_SIZE);
	}

	/*	Check CRC			*/
	if(pPi->dErrChk) {
		dCRC = (UINT32)(((UINT32)pbData[dSize - 2L] << 8) |	\
					   ((UINT32)pbData[dSize - 1L] << 0));
		if((UINT32)malib_MakeCRC(dSize, pbData) != dCRC) {
			return (MASMW_ERROR_FILE);
		}
	}

	pbData	+= (UINT32)MALIB_SIZE_OF_CHUNKHEADER;
	dRemain	= dChunkSize;
	if(dRemain < (UINT32)(MALIB_SIZE_OF_CHUNKHEADER
							+ MALIB_SIZE_OF_MIN_CNTI + MALIB_SIZE_OF_CRC)) {
		return (MASMW_ERROR_FILE);
	}

	/*	Check Contents Info ID				*/
	dChunkId	= MALIB_MAKEDWORD(pbData[0], pbData[1], pbData[2], pbData[3]);
	dChunkSize	= MALIB_MAKEDWORD(pbData[4], pbData[5], pbData[6], pbData[7]);
	pbData		+= MALIB_SIZE_OF_CHUNKHEADER;

	if(dChunkId != MALIB_MAKEDWORD('C', 'N', 'T', 'I')) {
		return (MASMW_ERROR_CHUNK);
	}
	if(	(dChunkSize < (UINT32)MALIB_SIZE_OF_MIN_CNTI)	||
		(dRemain < (UINT32)(MALIB_SIZE_OF_CHUNKHEADER
						 + dChunkSize + MALIB_SIZE_OF_CRC))) {
		return (MASMW_ERROR_CHUNK_SIZE);
	}

	/*	Check contents class & type		*/
	if(pPi->dErrChk) {
		if(*(pbData) != MALIB_CNTI_CLASS_YAMAHA) {
			return (MASMW_ERROR_CONTENTS_CLASS);
		}
		if(*(pbData + 1) != MALIB_CNTI_TYPE_PHRASE) {
			return (MASMW_ERROR_CONTENTS_TYPE);
		}
	}

	pbData	+= dChunkSize;
	dRemain -= (UINT32)(dChunkSize + MALIB_SIZE_OF_CHUNKHEADER);

	/*	Phrase Check					*/
	while(dRemain >= (UINT32)(MALIB_SIZE_OF_CHUNKHEADER + MALIB_SIZE_OF_CRC)) {
		/*	Search "MMMG" Chunk				*/
		dChunkId	= MALIB_MAKEDWORD(pbData[0], pbData[1], pbData[2], pbData[3]);
		dChunkSize	= MALIB_MAKEDWORD(pbData[4], pbData[5], pbData[6], pbData[7]);
		pbData		+= (UINT32)MALIB_SIZE_OF_CHUNKHEADER;
		if(dRemain < (UINT32)(MALIB_SIZE_OF_CHUNKHEADER
					 + dChunkSize + MALIB_SIZE_OF_CRC)) {
			return (MASMW_ERROR_CHUNK_SIZE);
		}

		if(dChunkId == MALIB_MAKEDWORD('M', 'M', 'M', 'G')) {
			/*	Support only the first "MMMG" Chunk	*/
			return (PhrChk_PhraseBody(pbData, dChunkSize, pPi));
		}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合九色综合欧美就去吻| 国产精品一区免费在线观看| 97se亚洲国产综合在线| 日本一区二区不卡视频| 岛国av在线一区| 国产精品久久久久久久久快鸭 | 欧美妇女性影城| 天堂成人免费av电影一区| 日韩无一区二区| 国产精品一区免费视频| 亚洲欧洲三级电影| 色94色欧美sute亚洲线路一久| 一区二区免费视频| 在线播放/欧美激情| 美女www一区二区| 久久久国产午夜精品| 99久久婷婷国产综合精品电影| 一区二区三区成人在线视频| 91麻豆精品国产91久久久久| 久久精品国产第一区二区三区| 欧美一区二区三区的| 国产高清精品网站| 亚洲码国产岛国毛片在线| 欧美日韩国产影片| 国产精品 日产精品 欧美精品| 亚洲黄色免费网站| 久久亚洲一区二区三区明星换脸| gogo大胆日本视频一区| 性欧美疯狂xxxxbbbb| 亚洲电影一区二区| 精品国产精品网麻豆系列| 91视频观看免费| 捆绑紧缚一区二区三区视频| 亚洲天堂av一区| 日韩一级大片在线| av一二三不卡影片| 久久不见久久见免费视频7| 亚洲欧美日韩中文字幕一区二区三区 | 国产成人综合精品三级| 一区二区三区精品视频| 日韩午夜激情电影| 成人精品一区二区三区四区| 日韩精品在线一区| 成人精品视频网站| 青青草精品视频| 亚洲精品水蜜桃| 久久综合久久综合亚洲| 欧美片在线播放| 国产精品小仙女| 美女网站在线免费欧美精品| 亚洲欧美日韩国产另类专区| 久久久久久夜精品精品免费| 欧美男人的天堂一二区| 日本久久电影网| 成人美女视频在线看| 麻豆成人免费电影| 日韩电影在线观看一区| 亚洲品质自拍视频| 中文字幕佐山爱一区二区免费| 久久免费美女视频| 日韩午夜av电影| 69堂亚洲精品首页| 欧美性淫爽ww久久久久无| 51久久夜色精品国产麻豆| 色婷婷av一区二区| www.日本不卡| 成人免费视频免费观看| 国产成人精品一区二区三区四区 | 久久er精品视频| 日韩国产欧美在线播放| 亚洲一区免费视频| 亚洲国产毛片aaaaa无费看| 亚洲三级视频在线观看| 最新热久久免费视频| 欧美国产综合色视频| 久久蜜桃一区二区| 久久久亚洲综合| 久久精品人人做人人综合| 久久久综合视频| 国产视频视频一区| 国产精品无人区| 国产日韩成人精品| 亚洲欧美一区二区视频| 亚洲免费观看高清| 亚洲最快最全在线视频| 亚洲大尺度视频在线观看| 日韩av电影一区| 久久成人麻豆午夜电影| 国产一区二区三区在线观看精品| 国产米奇在线777精品观看| 国产成人精品免费| 99视频精品在线| 欧美亚洲综合色| 91精品免费观看| 久久久高清一区二区三区| 欧美激情一区在线观看| 中文字幕一区二区三区色视频| 樱花草国产18久久久久| 人人爽香蕉精品| 丁香婷婷深情五月亚洲| 色综合久久综合网欧美综合网| 在线观看国产精品网站| 日韩一区二区免费电影| 国产色婷婷亚洲99精品小说| 亚洲啪啪综合av一区二区三区| 亚洲高清在线视频| 激情丁香综合五月| 成人在线视频一区| 欧美色综合网站| 久久免费美女视频| 亚洲一区日韩精品中文字幕| 久久精品免费看| 96av麻豆蜜桃一区二区| 欧美一区二区三区免费在线看| 精品日韩成人av| 亚洲精品国产视频| 国产精品影视在线| 欧美久久久一区| 国产精品看片你懂得| 免费成人在线影院| 一本色道久久综合狠狠躁的推荐 | 国产成人免费av在线| 欧美日韩成人一区二区| 欧美国产禁国产网站cc| 亚瑟在线精品视频| 99re视频这里只有精品| 日韩欧美成人一区二区| 成人欧美一区二区三区视频网页 | 5858s免费视频成人| 亚洲国产电影在线观看| 日韩高清在线观看| 99精品黄色片免费大全| 久久综合久久综合九色| 日韩高清一级片| 91麻豆精品在线观看| 欧美精品一区二区三区蜜臀 | 欧美成人aa大片| 亚洲宅男天堂在线观看无病毒| 成人国产在线观看| 欧美大度的电影原声| 亚洲第一狼人社区| 色婷婷综合久久久久中文 | 91欧美一区二区| 国产亚洲美州欧州综合国| 三级一区在线视频先锋 | 精品福利在线导航| 日本色综合中文字幕| 在线观看av一区| 亚洲激情在线激情| 99精品一区二区| 成人免费小视频| 成人av午夜影院| 国产午夜亚洲精品理论片色戒 | 国产精品一区二区久久精品爱涩 | 欧美日韩成人高清| 亚洲免费av高清| 色婷婷亚洲综合| 亚洲视频一区在线| 99久久精品国产导航| 中文字幕欧美一区| 成人国产在线观看| 中文字幕一区二区日韩精品绯色| 国产老妇另类xxxxx| 久久午夜老司机| 激情深爱一区二区| 国产亚洲一区二区三区在线观看| 黄一区二区三区| 久久亚洲影视婷婷| 国产成人免费高清| 中文字幕一区二区视频| 91在线观看一区二区| 亚洲欧美在线观看| 欧美写真视频网站| 亚洲国产精品一区二区久久恐怖片| 在线一区二区三区| 亚洲成va人在线观看| 欧美一级欧美三级在线观看| 日韩国产高清在线| 久久综合成人精品亚洲另类欧美 | 色噜噜狠狠一区二区三区果冻| 亚洲欧美视频在线观看视频| 欧美在线不卡一区| 日韩国产在线观看一区| 精品91自产拍在线观看一区| 国产精品亚洲专一区二区三区| 国产精品国产三级国产aⅴ中文| 色综合天天综合在线视频| 亚洲国产综合色| 欧美电视剧在线看免费| 成人av网站在线| 亚洲一二三专区| 日韩视频一区在线观看| 国产成人综合在线观看| 亚洲欧洲精品天堂一级| 欧美日韩国产美| 国产一区二区电影| 亚洲啪啪综合av一区二区三区| 91精品蜜臀在线一区尤物| 国产成人啪午夜精品网站男同| 亚洲欧美日韩综合aⅴ视频|