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

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

?? rtcodeccomm.cpp

?? freesacle mx21下的聲卡alc5620的驅動程序
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
//-----------------------------------------------------------------// INCLUDE FILES//-----------------------------------------------------------------#include <windows.h>#include <types.h>#include <memory.h>#include <excpt.h>#include <wavepdd.h>#include <waveddsi.h>#include "bsp.h"#include "RTCodecComm.h"//ALC5620 I2C's device ID is 0x32(A1 pull low,the Device ID=0x30,A1 pull high the device ID=0x32)#define DEV_AUDIO				0x32BYTE		   CodecDevId=DEV_AUDIO;//*************************************************************************************************************//initize codec registerCodecRegister Set_Codec_Reg_Init[]={	{RT_SPEAKER_OUT_VOL		,0x0000},//default Speark to 0DB,Enable ZC	{RT_HP_OUT_VOL			,0x0000},//default HP to 0DB,Enable ZC	{RT_ADC_RECORD_MIXER	,0x3F3F},//default Record is MicIn	{RT_STEREO_DAC_VOL		,0x0808},//default stereo DAC volume	{RT_MICROPHONE_CTRL		,0x0400},//set boost to +20DB	{RT_POWERDOWN_CTRL_STAT	,0x0000},//power on all PR bit	{RT_EQ_ANALOG_CTRL_INDEX,0x0054},//AD_DA_Mixer_internal Register5	{RT_EQ_ANALOG_CTRL_DATA	,0xE184},//To reduce power consumption for DAC reference#if 1			//Speaker is Class AB		{RT_OUTPUT_MIXER_CTRL	,0x4b40},//default output mixer control,CLASS AB	{RT_EQ_ANALOG_CTRL_INDEX,0x0044},//advacne register of Class AB control	{RT_EQ_ANALOG_CTRL_DATA	,0xf920},//power on Class_AB Positive/Negative channel#else			//Speaker Class D	{RT_OUTPUT_MIXER_CTRL	,0x6b40},//default output mixer control,CLASS D		{RT_EQ_ANALOG_CTRL_INDEX,0x0046},//advacne register of Class D control	{RT_EQ_ANALOG_CTRL_DATA	,0xff00},//power on Class_D Positive/Negative channel	#endif		{RT_MAIN_SDP_CTRL		,0x0002},	//set I2S codec to slave mode	//flove053007#if 0//if you need use AVC function,please fill below initize value of AVC,below value only be refer	{RT_EQ_ANALOG_CTRL_INDEX,0x0020},//Auto Volume Control Register 0 	{RT_EQ_ANALOG_CTRL_DATA	,0x0058},//2^11 samples for monitor window control	{RT_EQ_ANALOG_CTRL_INDEX,0x0021},//Auto Volume Control Register 1 	{RT_EQ_ANALOG_CTRL_DATA	,0x0400},//Maximum PCM absolute level	{RT_EQ_ANALOG_CTRL_INDEX,0x0022},//Auto Volume Control Register 2 	{RT_EQ_ANALOG_CTRL_DATA	,0x0350},//Mimimum PCM absolute level	{RT_EQ_ANALOG_CTRL_INDEX,0x0023},//Auto Volume Control Register 3 	{RT_EQ_ANALOG_CTRL_DATA	,0x0001},//Non-active PCM absolute level	{RT_EQ_ANALOG_CTRL_INDEX,0x0024},//Auto Volume Control Register 4 	{RT_EQ_ANALOG_CTRL_DATA	,0x03FF},//control the sensitivity to increase Gain	{RT_EQ_ANALOG_CTRL_INDEX,0x0025},//Auto Volume Control Register 5 	{RT_EQ_ANALOG_CTRL_DATA	,0x0400},//control the sensitivity to decrease Gain#endif	};#define SET_CODEC_REG_INIT_NUM	(sizeof(Set_Codec_Reg_Init)/sizeof(CodecRegister))//*************************************************************************************************************//Hardware EQ HW_EQ_PRESET *HwEq_Preset;HW_EQ_PRESET HwEq_Preset_48k[]={//		0x0	0x1	0x2  0x3   0x4	0x5	0x6	0x7	0x8	0x9	0xa	0xb	0xc	0x10		{CLUB,{0x1F2C,0x13D1,0xC1CB,0x1E5D,0x0C73,0xCD47,0x188D,0x0C73,0xC3B5,0x1CD0,0x0C73,0x1DF8,0x2FB2},0x800E},	{DANCE,{0x1F2C,0x13D1,0xC070,0x1F95,0x0BCE,0xCA43,0x1A29,0xFA73,0xDEDF,0x0ED8,0xF8B1,0x1DF8,0x2FB2},0x800F},	{LIVE,{0x1E74,0xFA92,0xC249,0x1DF8,0x2298,0xC882,0x1C10,0x0D73,0xDA40,0x1561,0x0556,0x1DF8,0x2FB2},0x800F},	{POP,{0x1EB5,0xFCB5,0xC1D3,0x1E5D,0x1FC4,0xD9D7,0x15F6,0xFB53,0xFFFF,0x06D3,0xF804,0x1DF8,0x2FB2},0x800F},	{ROCK,{0x1EB5,0xFCB5,0xC070,0x1F95,0x0556,0xC3D8,0x1C56,0xF6E7,0x0C5D,0x0FC7,0x4030,0x1DF8,0x2FB2},0x800F},};HW_EQ_PRESET HwEq_Preset_44k[]={//			0x0		0x1		0x2	  0x3	0x4		0x5		0x6		0x7	0x8		0x9		0xa	0xb		0xc		0x10				{CLUB ,{0x1DCC,0x13D1,0xC289,0x1E39,0x0C73,0xE1A2,0x17F8,0x0C73,0xC5E5,0x1C8B,0x0C73,0x1180,0x2FB2},0x800E},	{DANCE,{0x1DCC,0x13D1,0xC08E,0x1F8C,0x0BCE,0xCB7E,0x19B2,0xFA73,0x0655,0x0DBB,0xF8B1,0x1180,0x2FB2},0x800F},	{LIVE ,{0x1CB9,0xFA92,0xC36D,0x1DCC,0x2298,0xD8CA,0x1BBC,0x0D73,0x0748,0x1496,0x0556,0x1180,0x2FB2},0x800F},	{POP  ,{0x1D40,0xFCB5,0xC2AE,0x1E39,0x1FC4,0x075E,0x1537,0xFB53,0x23D6,0x056C,0xF804,0x1180,0x2FB2},0x800F},	{ROCK ,{0x1D40,0xFCB5,0xC08E,0x1F8C,0x0556,0xC4D7,0x1C08,0xF6E7,0x2CAB,0x0EA5,0x4030,0x1180,0x2FB2},0x800F},};//*************************************************************************************************************//store/restore register in the suspend/resume modeBYTE RestoreRegIndex[]={						RT_SPEAKER_OUT_VOL,			//0x02						RT_HP_OUT_VOL,				//0x04						RT_PHONEIN_MONO_OUT_VOL,	//0x08						RT_LINE_IN_VOL,				//0x0A						RT_STEREO_DAC_VOL,			//0x0C						RT_MIC_VOL,					//0x0E						RT_MIC_ROUTING_CTRL,		//0x10						RT_ADC_RECORD_GAIN,			//0x12						RT_ADC_RECORD_MIXER,		//0x14						RT_VOICE_DAC_OUT_VOL,		//0x18						RT_OUTPUT_MIXER_CTRL,		//0x1C						RT_MICROPHONE_CTRL,			//0x22						RT_POWERDOWN_CTRL_STAT,		//0x26									RT_MAIN_SDP_CTRL,			//0x34						RT_MISC_CTRL,				//0X5E					   };#define RESTORE_REG_INDEX_NUM	(sizeof(RestoreRegIndex)/sizeof(BYTE))unsigned short int 	CodecShadowRegisters[RESTORE_REG_INDEX_NUM];EXT_CODEC_INDEX RestoreExtRegIndex[]={						HW_EQ_LP0_A1,				//0x00						HW_EQ_LP0_H0,				//0x01						HW_EQ_BP1_A1,				//0x02						HW_EQ_BP1_A2,				//0x03						HW_EQ_BP1_H0,				//0x04						HW_EQ_BP2_A1,				//0x05						HW_EQ_BP2_A2,				//0x06						HW_EQ_BP2_H0,				//0x07						HW_EQ_BP3_A1,				//0x08						HW_EQ_BP3_A2,				//0x09						HW_EQ_BP3_H0,				//0x0A						HW_EQ_BP4_A1,				//0x0B						HW_EQ_HP4_H0,				//0x0C						HW_EQ_CONTROL,				//0x10#if 1		//Speaker is Class AB						CLASS_AB_REG,				//0x44	#else		//Speaker is Class D						CLASS_D_REG,				//0x46#endif						AD_DA_MIXER_IR5,			//0x54						};#define RESTORE_EXTREG_INDEX_NUM	(sizeof(RestoreExtRegIndex)/sizeof(EXT_CODEC_INDEX)) unsigned short int 	ExtCodecShadowRegisters[RESTORE_EXTREG_INDEX_NUM];//------------------------------------------------------------------------// function implement//------------------------------------------------------------------------RT_CodecComm::RT_CodecComm(void){	 m_i2c = DDKCreateI2CObject();    if(!m_i2c)    {      //  ERRORMSG(ZONE_WM8731_ERROR, (TEXT("RT_CodecComm: I2cClass NULL pointer!\r\n")));        return;    }}RT_CodecComm::~RT_CodecComm(void){	if(m_i2c)    {        DDKDeleteObject(m_i2c);        m_i2c = NULL;    }}BOOL RT_CodecComm::Init(unsigned short int SampleRate){	m_WaveOutSampleRate=SampleRate;	m_WaveInSampleRate=SampleRate;			return TRUE;}void RT_CodecComm::DelayMSTime(unsigned int MilliSec){}//*****************************************************************************////function:Initialize Register of Codec function////*****************************************************************************BOOL RT_CodecComm::InitRTCodecReg(void){	int i;	BOOL bRetVal=FALSE;				for(i=0;i<SET_CODEC_REG_INIT_NUM;i++)	{		bRetVal=ShadowWriteCodec( Set_Codec_Reg_Init[i].CodecIndex,Set_Codec_Reg_Init[i].wCodecValue, CodecDevId ); 		if(!bRetVal)			break;	}	 		return bRetVal;}//*****************************************************************************////function:Save codec register to shadow////*****************************************************************************void RT_CodecComm::SaveCodecRegToShadow(){	int i;	for(i=0;i<RESTORE_REG_INDEX_NUM;i++)	{				if(!ShadowReadCodec(RestoreRegIndex[i],&CodecShadowRegisters[i],CodecDevId))		{			return;		}				}	}//*****************************************************************************////function:restore shadow register to codec////*****************************************************************************void RT_CodecComm::RestoreRegToCodec(){	int i;	for(i=0;i<RESTORE_REG_INDEX_NUM;i++)	{		if(!ShadowWriteCodec(RestoreRegIndex[i],CodecShadowRegisters[i],CodecDevId))			{				return;			}	}	}//*****************************************************************************////function:Save codec extend register to shadow////*****************************************************************************void RT_CodecComm::SaveCodecExtRegToShadow(){	int i;	for(i=0;i<RESTORE_EXTREG_INDEX_NUM;i++)	{		if(!ReadCodecAdvance(RestoreExtRegIndex[i],&ExtCodecShadowRegisters[i]))		{			return;		}	}	}//*****************************************************************************////function:restore shadow extend register to codec////*****************************************************************************void RT_CodecComm::ReStoreExtRegToCodec(){	int i;	for(i=0;i<RESTORE_EXTREG_INDEX_NUM;i++)	{		if(!WriteCodecAdvance(RestoreExtRegIndex[i],ExtCodecShadowRegisters[i]))		{			return;		}	}	}//*****************************************************************************////function:restore shadow read register to codec////*****************************************************************************BOOL RT_CodecComm::ShadowReadCodec(BYTE Offset, unsigned short int *Data, BYTE DevId){	BOOL b_retVal=TRUE;	BYTE bytesBuf[2];    DDKI2CLock(m_i2c);    DDKSetI2CFrequency(m_i2c, 300000);	DDKI2CWriteMasterData(m_i2c, DevId, (BYTE *)&Offset, sizeof(Offset));    	DDKI2CReadMasterData(m_i2c, DevId,bytesBuf, sizeof(bytesBuf));    DDKI2CUnlock(m_i2c);	    if(DDKGetI2CErrorCode(m_i2c))        return FALSE;	*Data=(bytesBuf[0]<<8) | (bytesBuf[1]);			return b_retVal;}//*****************************************************************************////function:restore shadow write register to codec////*****************************************************************************BOOL RT_CodecComm::ShadowWriteCodec(BYTE Offset, unsigned short int Data, BYTE DevId){	BOOL b_retVal=TRUE;	BYTE bytesBuf[3];	bytesBuf[0]=(BYTE)(Offset);	bytesBuf[1]=(BYTE)((Data&0xff00)>>8);	bytesBuf[2]=(BYTE)(Data&0xff);    DDKI2CLock(m_i2c);    DDKSetI2CFrequency(m_i2c, 300000);    DDKI2CWriteMasterData(m_i2c, DevId, bytesBuf, sizeof(bytesBuf));    DDKI2CUnlock(m_i2c);    if(DDKGetI2CErrorCode(m_i2c))        return FALSE;	return b_retVal;}//*****************************************************************************////function:write codec register with mask////*****************************************************************************BOOL RT_CodecComm::WriteCodecRegMask(BYTE Offset, unsigned short int Data,unsigned short int Mask){	BOOL RetVal=FALSE;	unsigned short int CodecData;	if(!Mask)		return RetVal; 	if(Mask!=ALL_FIELD)	 {		if(ShadowReadCodec(Offset,&CodecData,DEV_AUDIO))		{			CodecData&=~Mask;			CodecData|=(Data&Mask);			RetVal=ShadowWriteCodec(Offset,CodecData,DEV_AUDIO);		}	 }			else	{		RetVal=ShadowWriteCodec(Offset,Data,DEV_AUDIO);	}	return RetVal;}//*****************************************************************************////function:Write advance register of codec////*****************************************************************************BOOL RT_CodecComm::WriteCodecAdvance(EXT_CODEC_INDEX Ext_Index,unsigned short int Ext_Data){	BOOL RetVal=FALSE;					RetVal=ShadowWriteCodec(RT_EQ_ANALOG_CTRL_INDEX,Ext_Index,CodecDevId);	// write codec advance index		if(RetVal)		{			RetVal=ShadowWriteCodec(RT_EQ_ANALOG_CTRL_DATA,Ext_Data,CodecDevId);//write codec advance data		}							return  RetVal;				}//*****************************************************************************////function:Read advance register of codec////*****************************************************************************BOOL RT_CodecComm::ReadCodecAdvance(EXT_CODEC_INDEX Ext_Index,unsigned short int *Data){	BOOL RetVal=FALSE;			RetVal=ShadowWriteCodec(RT_EQ_ANALOG_CTRL_INDEX,Ext_Index,CodecDevId);	// write codec advance index			if(RetVal)	 {		RetVal=ShadowReadCodec(RT_EQ_ANALOG_CTRL_DATA,Data,CodecDevId);	// read codec advance data				 }	return RetVal;}//*****************************************************************************////function:Write advance register of codec compare with Mask bit////*****************************************************************************BOOL RT_CodecComm::WriteCodecAdvanceMask(EXT_CODEC_INDEX Ext_Index,unsigned short int Ext_Data,unsigned short int Ext_Data_Mask){		unsigned short int CodecAdvData;	BOOL RetVal=FALSE;	if(!Ext_Data_Mask)		return RetVal; 	if(Ext_Data_Mask!=ALL_FIELD)	 {		if(ReadCodecAdvance(Ext_Index,&CodecAdvData))		{			CodecAdvData&=~Ext_Data_Mask;			CodecAdvData|=(Ext_Data&Ext_Data_Mask);						RetVal=WriteCodecAdvance(Ext_Index,CodecAdvData);		}	 }			else	{		RetVal=WriteCodecAdvance(Ext_Index,Ext_Data);	}	return RetVal;}//*****************************************************************************////Function:Enable/Disable Main Spatial function////*****************************************************************************BOOL RT_CodecComm::Enable_Main_Spatial(BOOL Enable_Main_Spatial){	BOOL bRetVal=FALSE;		if(Enable_Main_Spatial)	{		//Enable Main Spatial 		bRetVal=WriteCodecRegMask(RT_PSEDUEO_SPATIAL_CTRL,SPATIAL_CTRL_EN,SPATIAL_CTRL_EN);			}	else	{		//Disable Main Spatial 		bRetVal=WriteCodecRegMask(RT_PSEDUEO_SPATIAL_CTRL,0,SPATIAL_CTRL_EN);		}	return bRetVal;}//*****************************************************************************////Function:Enable/Disable 3D spatial control function(use this function,enable Main Spatial function first)////*****************************************************************************BOOL RT_CodecComm::Enable_3D_Spatial(S_3D_SPATIAL s3D_Spatial){	BOOL bRetVal=FALSE;		if(s3D_Spatial.bEnable3D)	{		Enable_Main_Spatial(TRUE);		bRetVal=WriteCodecRegMask(RT_PSEDUEO_SPATIAL_CTRL,(STEREO_EXPENSION_EN  | (s3D_Spatial.b3D_Gain<<6) | (s3D_Spatial.b3D_Ratio<<4) ) 														 ,SPATIAL_GAIN_MASK | SPATIAL_RATIO_MASK | STEREO_EXPENSION_EN );	}	else	{		bRetVal=WriteCodecRegMask(RT_PSEDUEO_SPATIAL_CTRL,0,STEREO_EXPENSION_EN);	}	return bRetVal;}//*****************************************************************************////function:Enable/Disable Pseudio Stereo function(use this function,enable Main Spatial function first)////*****************************************************************************BOOL RT_CodecComm::Enable_Pseudo_Stereo(BOOL Enable_Pseudo_Stereo){	BOOL bRetVal=FALSE;	if(Enable_Pseudo_Stereo)	{		Enable_Main_Spatial(TRUE);		Enable_All_Pass_Filter(TRUE);		//Enable Pseudio stereo 		bRetVal=WriteCodecRegMask(RT_PSEDUEO_SPATIAL_CTRL,PSEUDO_STEREO_EN,PSEUDO_STEREO_EN);	}	else	{		Enable_All_Pass_Filter(FALSE);			//Disable Pseudio stereo		bRetVal=WriteCodecRegMask(RT_PSEDUEO_SPATIAL_CTRL,0,PSEUDO_STEREO_EN);			}	return bRetVal;}//*****************************************************************************////function:Enable/Disable All Pass Filter function(use this function,enable Main Spatial function first)////*****************************************************************************BOOL RT_CodecComm::Enable_All_Pass_Filter(BOOL Enable_APF){	BOOL bRetVal=FALSE;		if(Enable_APF)	{

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合夜色一区| 久久久久青草大香线综合精品| 在线观看成人免费视频| 欧美一区三区二区| 欧美国产视频在线| 亚洲一区二区在线播放相泽| 久久er精品视频| 97久久精品人人做人人爽50路| 欧美久久久久久久久久| 欧美国产亚洲另类动漫| 日本午夜一本久久久综合| 99riav一区二区三区| 欧美电视剧免费观看| 亚洲欧美一区二区三区孕妇| 精品一区二区三区影院在线午夜 | 欧美丝袜自拍制服另类| 日韩精品一区二区三区视频播放 | 国产精品美女久久久久av爽李琼| 一区二区三区高清| 国产aⅴ综合色| 欧美成人精精品一区二区频| 亚洲视频资源在线| 国产成人在线观看免费网站| 欧美一区二区三区男人的天堂| 亚洲精品乱码久久久久| 国产福利精品导航| 精品久久国产字幕高潮| 亚洲第一成年网| 色琪琪一区二区三区亚洲区| 中文字幕久久午夜不卡| 国产一区二区三区精品欧美日韩一区二区三区| 欧美中文字幕不卡| 中文字幕一区二区三区四区| 国产一区二区三区四区五区美女| 欧美视频一区在线| 亚洲精品国产一区二区三区四区在线 | 精品一区二区三区免费| 欧美午夜不卡视频| 亚洲精品午夜久久久| 99热99精品| 中文字幕在线观看不卡| 国产99久久久国产精品潘金| 26uuu色噜噜精品一区二区| 日韩av一区二区在线影视| 欧美人狂配大交3d怪物一区| 亚洲国产日韩精品| 欧美性猛片xxxx免费看久爱| 亚洲日本在线看| 一本色道综合亚洲| 亚洲激情成人在线| 精品视频在线免费看| 亚洲午夜免费视频| 91精品综合久久久久久| 免费av网站大全久久| 日韩欧美一级精品久久| 毛片基地黄久久久久久天堂| 日韩精品专区在线| 国产真实乱对白精彩久久| 2023国产一二三区日本精品2022| 久久99久久精品欧美| 精品国产髙清在线看国产毛片| 日韩精品亚洲一区二区三区免费| 日韩一区二区三区视频在线| 精品中文字幕一区二区| 欧美极品美女视频| 99热国产精品| 亚洲 欧美综合在线网络| 日韩欧美亚洲国产精品字幕久久久| 免费观看在线色综合| 久久久精品黄色| 一本久道中文字幕精品亚洲嫩| 亚洲综合999| 欧美一区二区三区白人| 国产一区久久久| 日韩理论片一区二区| 欧美在线观看视频一区二区| 日韩经典一区二区| 久久久久国产成人精品亚洲午夜 | 亚洲天堂av一区| 欧美视频一区二区三区四区| 免费成人在线影院| 国产农村妇女毛片精品久久麻豆| 99久久综合国产精品| 午夜精品久久久久| 国产午夜精品一区二区三区四区| 99国产精品久久久久久久久久| 日精品一区二区三区| 久久久午夜精品理论片中文字幕| 色中色一区二区| 精品一区二区av| 一区二区在线观看视频| 日韩欧美亚洲一区二区| 91美女在线视频| 老司机精品视频导航| 国产亚洲欧洲一区高清在线观看| 日本精品一区二区三区高清| 久久www免费人成看片高清| 亚洲欧美国产毛片在线| 久久一区二区三区国产精品| 在线观看视频一区| 亚洲成人一区二区在线观看| 久久综合狠狠综合久久激情| 91久久精品一区二区| 久久电影网电视剧免费观看| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 欧美精品九九99久久| 国产精品88av| 午夜av区久久| 国产精品久久久久四虎| 欧美一区二区三区公司| 91免费看片在线观看| 国产一区二区三区四区五区美女| 夜夜爽夜夜爽精品视频| 久久久久久久久97黄色工厂| 欧美日韩日日骚| www.视频一区| 国内精品国产成人国产三级粉色 | 午夜精品一区二区三区免费视频| 国产欧美一区二区精品性色超碰| 欧美日韩成人高清| 99久久久久久| 国产福利一区在线| 精油按摩中文字幕久久| 亚洲一区二区三区不卡国产欧美| 国产欧美精品一区二区色综合| 日韩一区二区电影| 在线视频中文字幕一区二区| av不卡在线观看| 成人av在线影院| 成人h精品动漫一区二区三区| 麻豆精品新av中文字幕| 日本在线不卡视频一二三区| 亚洲午夜成aⅴ人片| 亚洲乱码一区二区三区在线观看| 国产精品久久久久久久久久免费看 | 亚洲精品亚洲人成人网在线播放| 日本一区二区三区在线观看| 精品欧美久久久| 日韩精品专区在线影院观看| 欧美日韩精品电影| 欧美日韩在线播放三区四区| 国产成人免费在线视频| 日本成人在线网站| 五月综合激情婷婷六月色窝| 日韩av一级片| 国内精品在线播放| 国产91精品露脸国语对白| 国产乱码精品1区2区3区| 国产成人精品亚洲午夜麻豆| 成人网页在线观看| eeuss国产一区二区三区| av一区二区不卡| 色诱亚洲精品久久久久久| 精品亚洲国产成人av制服丝袜| 蜜桃视频在线一区| 国产一区二区三区高清播放| 国产 日韩 欧美大片| 91日韩精品一区| 欧美亚洲综合网| 精品国产成人系列| 久久亚洲私人国产精品va媚药| 国产三级精品视频| 中文字幕日韩av资源站| 一区二区三区欧美亚洲| 日韩综合一区二区| 麻豆91精品91久久久的内涵| 国产精品一线二线三线精华| av爱爱亚洲一区| 欧美美女视频在线观看| 精品国产区一区| 中文字幕一区二区视频| 偷拍一区二区三区| 精品一区二区三区免费播放| 成人午夜av影视| 久久精品国产亚洲a| 中日韩免费视频中文字幕| 一区二区三区四区av| 久久99精品久久只有精品| av电影天堂一区二区在线观看| 欧美日韩dvd在线观看| 久久久精品免费观看| 亚洲一区二区三区爽爽爽爽爽| 久久超碰97人人做人人爱| 99国产精品一区| 日韩欧美国产综合一区 | 一区二区三区在线观看视频| 免费日韩伦理电影| 成人黄色在线网站| 欧美一区二区福利在线| 亚洲综合色噜噜狠狠| 精品一区二区在线看| 色婷婷av一区二区| 久久美女高清视频| 五月天丁香久久| av成人免费在线| 久久九九久久九九| 美日韩一区二区| 欧美日韩国产电影| 亚洲精品视频在线看| 国产成人a级片|