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

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

?? mxd_sdk_api.c

?? MXD_SDK_Ax.x.xxx :MXD1320 軟件開發包源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
 *
 * \return Return code by MXD_RTN_CODE_E enumeration
 *
 * \remarks 
 * 
 */
MXD_RTN_CODE_E MXD_API DTMB_SetDeviceMode(
							IN HMXDDEV hDevice ,
							IN DEVICE_WORK_MODE_E eDeviceMode )
{
	/* set device mode */
	switch( eDeviceMode )
	{
		case DEV_MODE_DTMB_MC:
		{
			return DDS_WriteReg( hDevice,  DTMB_FDP_CARRIER_MODE_REG, 0x02 );
		}

		case DEV_MODE_DTMB_SC:
		{
			return DDS_WriteReg( hDevice,  DTMB_FDP_CARRIER_MODE_REG, 0x03 );
		}

		case DEV_MODE_DTMB_AUTO:
		{
			return DDS_WriteReg( hDevice,  DTMB_FDP_CARRIER_MODE_REG, 0x00 );
		}

		case DEV_MODE_TDMB:
		case DEV_MODE_DEFAULT:
		default:
		{
			return MXD_RTN_UNDEFINED_ERR;	
		}
	}
} /* end of DTMB_SetDeviceMode( ) */

/*!
 * Calitrate device CYP.
 *
 * \param hDevice:  [in] Device handle. 
 *
 * \return the DU.
 *
 * \remarks This function must be called after Init tuner, tune freq, init device, download mtx.
 * 
 */
MXD_RTN_CODE_E MXD_API DTMB_CypCalibrate( 
								 IN HMXDDEV hDevice,
								 IN MXD_U8 frmNumStart,
								 IN MXD_U8 cypThd)
{
	MXD_U8 regVal;
	MXD_U8 ofoValH,ofoValL;
	MXD_S32 i;
	MXD_U8 frmNum = 0;
	MXD_S16 frmLen = 0;
	MXD_S32 dN[7];
	MXD_S32 dU;

	MXD_U16 ofoLen = 0;
	MXD_S16 ofoVal;
	MXD_U8 cypFlag = 0;

	MXD_S32 duSum = 0;
	MXD_U32 dtU = 0;
	PDEVICE_PROPERTY_S psDeviceProperty;

	psDeviceProperty = ( PDEVICE_PROPERTY_S )hDevice;

	/* Init du to zero */
	DDS_WriteReg( hDevice,  DTMB_TDP_DU_H_REG, 0x0 );
	DDS_WriteReg( hDevice,  DTMB_TDP_DU_M_REG, 0x0 );
	DDS_WriteReg( hDevice,  DTMB_TDP_DU_L_REG, 0x0 );

	for( frmNum=frmNumStart; frmNum<3; frmNum++ )
	{		
		switch( psDeviceProperty->m_PnType )
		{
			case 0: /*420*/
			case 1:
			{
				frmLen = FRAME_LEN_420;
				ofoLen = ( frmNum+1 )*225;
				break;
			}
			case 2: /*945*/
			case 3:
			{
				frmLen = FRAME_LEN_945;
				ofoLen = ( frmNum+1 )*200;
				break;
			}
			case 4: /*595*/
			{
				frmLen = FRAME_LEN_595;
				ofoLen = ( frmNum+1 )*200;
				break;
			}
			default:
			return MXD_RTN_FAIL;
		}/* end of switch ( PN type) */
		
		DDS_WriteReg( hDevice,  DTMB_TDP_OFO_LENGTH_REG, frmNum );
		
		/* Set TDP work mode to calibration mode*/
		DDS_WriteReg( hDevice,  DTMB_TDP_WORK_MODE_REG, 0x02 ); 

		DDS_WriteReg( hDevice,  DTMB_TDP_INIT_FO_H_REG, (MXD_U8)(psDeviceProperty->m_InitFo>>16));
		DDS_WriteReg( hDevice,  DTMB_TDP_INIT_FO_M_REG, (MXD_U8)(psDeviceProperty->m_InitFo>>8));	
		DDS_WriteReg( hDevice,  DTMB_TDP_INIT_FO_L_REG, (MXD_U8)(psDeviceProperty->m_InitFo));		
		DDS_WriteReg( hDevice,  DTMB_TDP_INIT_REG, 0x01 ); 
	
		/* polling cyp ready interrupt */
		for( i=0; i<CYP_TIMEOUT_THLD; i++)
		{
			cypFlag = 0;
			OAL_Sleep(1);
			DDS_ReadRegFields( hDevice,  DTMB_TDP_INT_STATUS_REG, MXD_BIT0, 1, &regVal );

			if( 1 == regVal )/* Ofo ready */
			{
				cypFlag = 1;
				break;

			}
			else
			{
				cypFlag = 0;
			}
		}
		if( 1 == cypFlag )
		{
			DDS_WriteReg( hDevice,  DTMB_TDP_INT_CLEAR_REG, 0x01 );
			DDS_ReadReg( hDevice,  DTMB_TDP_OFO_VALUE_H_REG, &ofoValH );
			DDS_ReadReg( hDevice,  DTMB_TDP_OFO_VALUE_L_REG, &ofoValL );

			if( ofoValH & DTMB_TDP_OFO_VALUE_MINUS_SET )
			{
				ofoVal = (MXD_S16)((MXD_U16)(ofoValH<<8) + (MXD_U8)ofoValL - (1 << 14));
			}
			else
			{
				ofoVal = (MXD_S16)((MXD_U16)(ofoValH<<8) + (MXD_U8)ofoValL);
			}
						
			if( ofoVal > ( frmLen/2) )/* restrict to half frame length */
			{
				dN[frmNum] = ofoVal - frmLen;
			}
			else if( ofoVal < (-frmLen/2) )
			{
				dN[frmNum] = ofoVal + frmLen;
			}
			else
			{
				dN[frmNum] = ofoVal;
			}

			if(frmNum>1)
			{
				if( (dN[frmNum]>dN[frmNum-1])&&(dN[frmNum]<-dN[frmNum-1]))
				{
					dN[frmNum] = 0;
				}
			}
					
			dU = (MXD_S32)((((dN[frmNum]*4096)*(8388608/945))/( ofoLen*frmLen - dN[frmNum]))*4 +1 )/2;
			duSum += dU; 
			if( duSum>=0 )
			{
				dtU = (MXD_U32)duSum;
			}
			else
			{
				dtU = (MXD_U32)( duSum + 16777216 );
			}
			DDS_WriteReg( hDevice,  DTMB_TDP_DU_H_REG, (MXD_U8)(dtU>>16) );
			DDS_WriteReg( hDevice,  DTMB_TDP_DU_M_REG, (MXD_U8)(dtU>>8) );
			DDS_WriteReg( hDevice,  DTMB_TDP_DU_L_REG, (MXD_U8)dtU );
										
			if( ( dN[frmNum] <= cypThd ) && ( dN[frmNum] >= -cypThd ) )
			{
				psDeviceProperty->m_DU = dtU;
				OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_CypCalibrate:: OK! The Value is 0x%x \n", dtU );
				DDS_WriteReg( hDevice, DTMB_TDP_WORK_MODE_REG, 0x0 );
				return MXD_RTN_OK;
			}		
		}
		else
		{
			OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_CypCalibrate:: Timeout!\n" );
			return MXD_RTN_FAIL;
		}
	}/* end of for( frm number) */

	return MXD_RTN_OK; 
    
} /* end of DTMB_CypCalibrate() */

/*!
 * Calitrate device UFO.
 *
 * \param hDevice:  [in] Device handle. 
 *
 * \Return code by MXD_RTN_CODE_E enumeration
 *
 * \remarks This function must be called after Init tuner, tune freq, init device, download mtx.
 * 
 */
MXD_RTN_CODE_E MXD_API DTMB_UfoCalibrate( IN HMXDDEV hDevice )
{
	MXD_U8 regVal;
	MXD_U8 ufoIdxH;
	MXD_U8 ufoIdxL;
	MXD_S16 ufoVal;
	MXD_S32 ufoKhz[10];

	MXD_S32 i;
	MXD_U8 ufoFlag;
	MXD_U8 ufoCount;
	PDEVICE_PROPERTY_S psDeviceProperty;
	PTUNER_PROPERTY_S psTunerProperty;

	MXD_S32 ufoSum = 0;
	
	psDeviceProperty = ( PDEVICE_PROPERTY_S )hDevice;
	psTunerProperty = &(psDeviceProperty->m_sTuner);
	ufoFlag = 0;

	DDS_WriteReg( hDevice,  DTMB_TDP_WORK_MODE_REG, 0x0b );

	psDeviceProperty->m_InitFo = DTMB_CalcCpp( psTunerProperty->m_LifFreqKhz, psTunerProperty->m_IfRate );

	for(ufoCount = 0; ufoCount<6; ufoCount++)
	{
		ufoFlag = 0;

		/* config initial frequency offset value */
		/* to be changed */
		DDS_WriteReg( hDevice,  DTMB_TDP_INIT_FO_H_REG, (MXD_U8)(psDeviceProperty->m_InitFo>>16));
		DDS_WriteReg( hDevice,  DTMB_TDP_INIT_FO_M_REG, (MXD_U8)(psDeviceProperty->m_InitFo>>8));	
		DDS_WriteReg( hDevice,  DTMB_TDP_INIT_FO_L_REG, (MXD_U8)(psDeviceProperty->m_InitFo));
		DDS_WriteReg( hDevice,  DTMB_TDP_INIT_REG, 0x01 );

		/* polling ufo ready interrupt */
		for( i=0; i<UFO_TIMEOUT_THLD; i++)
		{
			OAL_Sleep(1);
			DDS_ReadReg( hDevice,  DTMB_TDP_INT_STATUS_REG, &regVal );
			if( regVal&0x1 )/* ufo ready */
			{
				ufoFlag = 1;
				break;
			}
			else
			{
				ufoFlag = 0;
			}
		}
		if( 1 == ufoFlag )
		{
			DDS_ReadReg( hDevice,  DTMB_FDP_UFO_IDX_H_REG, &ufoIdxH );
			DDS_ReadReg( hDevice,  DTMB_FDP_UFO_IDX_L_REG, &ufoIdxL );
			if( ufoIdxH&0x08)
			{
				ufoVal = (MXD_S16)((MXD_U16)(ufoIdxH<<8) + (MXD_U8)ufoIdxL - 4096 );
			}
			else
			{
				ufoVal = (MXD_S16)((MXD_U16)(ufoIdxH<<8) + (MXD_U8)ufoIdxL );
			}

			ufoKhz[ufoCount] = (ufoVal*7560)/4096;
			if((ufoKhz[ufoCount] >UFO_MAX_LIMIT)||(ufoKhz[ufoCount]<-UFO_MAX_LIMIT))
			{
				OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_UfoCalibrate :: ERROR! ufo is: %f! \n" ,ufoKhz[ufoCount]);
				return MXD_RTN_FAIL;				
			}
			if(ufoCount>0)
			{
				if( ufoKhz[ufoCount-1]>= 0 )
				{
					if( (ufoKhz[ufoCount]>ufoKhz[ufoCount-1])||(ufoKhz[ufoCount]<-ufoKhz[ufoCount-1]))
					{
						ufoKhz[ufoCount] = 0;
					}				
				}
				else
				{
					if( (ufoKhz[ufoCount]>-ufoKhz[ufoCount-1])||(ufoKhz[ufoCount]<ufoKhz[ufoCount-1]))
					{
						ufoKhz[ufoCount] = 0;
					}
				}

			}
			ufoSum += ufoKhz[ufoCount];

			psDeviceProperty->m_InitFo = DTMB_CalcCpp( (psTunerProperty->m_LifFreqKhz-ufoSum), psTunerProperty->m_IfRate );

			OAL_DebugPrint( 1, "DTMB_UfoCalibrate :: The Value is : %d ,0x%x, SUM is: %d..\n", ufoKhz[ufoCount],psDeviceProperty->m_InitFo, ufoSum );
			
			DDS_WriteReg( hDevice, DTMB_TDP_INT_CLEAR_REG, 0xff );

			if( (ufoKhz[ufoCount] <= UFO_OK_THRESHOLD)&&(ufoKhz[ufoCount] >= -UFO_OK_THRESHOLD) )
			{
				DDS_ReadReg( hDevice,  DTMB_TDP_FID_RESULT_REG, &regVal );
				if( ( regVal == 0 ) || (psDeviceProperty->m_PnType > 0x4) )
				{
					OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_UfoCalibrate :: FID result ERROR!" );
					return MXD_RTN_UNDEFINED_ERR;
				}
				else
				{
					psDeviceProperty->m_PnType = regVal&0x07; /* update pntype to hDevice */
					OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_UfoCalibrate :: OK! The Pn Value is : %d ,CPP is: 0x%x, UFO sum is: %d..\n", psDeviceProperty->m_PnType,psDeviceProperty->m_InitFo, ufoSum );				
					return MXD_RTN_OK;
				}
			}					
		}
		else
		{
			OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_UfoCalibrate :: Interrupt Time out! \n" );
			
			DDS_WriteReg( hDevice, DTMB_TDP_INT_CLEAR_REG, 0xff );

			psDeviceProperty->m_InitFo = DTMB_CalcCpp( psTunerProperty->m_LifFreqKhz, psTunerProperty->m_IfRate );
			return MXD_RTN_FAIL;
		}
	}
	OAL_DebugPrint( MXD_ULTRA_TRACE, "DTMB_UfoCalibrate :: Error! \n" );
	psDeviceProperty->m_InitFo = DTMB_CalcCpp(  psTunerProperty->m_LifFreqKhz, psTunerProperty->m_IfRate );	
	return MXD_RTN_FAIL;
	
}/* end of DTMB_UfoCalibrate() */


/*!
 * Download MTX matrix to the SDRAM address appointed.
 *
 * \param hDevice:    [in] Device handle. 
 * \param sdramAddr:  [in] DRAM addrss allocated for MTX table
 * \param pMtxTable: [in] pointer to the table of MTX to be downloaded.
 * \param mtxLen:	  [in] length of MTX table, unit: byte
 *
 * \return Return code by MXD_RTN_CODE_E enumeration
 *
 * \remarks null
 * 
 */
MXD_RTN_CODE_E MXD_API DTMB_DownloadMtx( 
						 	IN HMXDDEV hDevice,
						 	IN MXD_U32 sdramAddr,
						 	IN MXD_U8 *pMtxTable,
						 	IN MXD_U32 mtxLen)
{
#ifndef __EEPROM_USED__ 
	MXD_U32 mtxCount;
	MXD_U16 rtnLen;
	MXD_U32 i,j;
#endif
	MXD_RTN_CODE_E eRtnCode = MXD_RTN_FAIL;
	MXD_U16 blockLen;
	PDEVICE_PROPERTY_S psDeviceProperty;
	PDEMOD_PROPERTY_S psDemodProperty;
	PCHANNEL_PROPERTY_S psChannelProperty;
	
	psDeviceProperty = (PDEVICE_PROPERTY_S)hDevice;
	psDemodProperty = &(psDeviceProperty->m_sDemod);
	psChannelProperty = &(psDemodProperty->m_sChannelProperty);

	DDS_WriteReg( hDevice,  DTMB_HIC_FLUSH_RELOAD_REG, 0x02 );
	blockLen = psDemodProperty->m_MtxLoadLen;

#ifdef __EEPROM_USED__		
	eRtnCode = DTMB_LoadEeprom( hDevice, sdramAddr );
	return eRtnCode;
#else
	DDS_WriteReg( hDevice,  DTMB_HIC_MTX_ROW_EADDR_H_REG, (MXD_U8)(sdramAddr>>8) );
	DDS_WriteReg( hDevice,  DTMB_HIC_MTX_ROW_EADDR_L_REG, (MXD_U8)sdramAddr );
	mtxCount = mtxLen/blockLen;	
		
	/* Write MTX Table via I2C */
	if( MXD_I2C_IF == psChannelProperty->m_eRegAccessType )
	{
		DDS_WriteReg( hDevice,  DTMB_HIC_MTX_SEL_REG, 0x03 );
		for( i=0; i<mtxCount; i++ )
		{
	        ((PDEVICE_PROPERTY_S)hDevice)->m_sDemod.m_sI2cProperty.m_pPIL_I2cWrite(
				                          NULL, 
                                          ((PDEVICE_PROPERTY_S)hDevice)->m_sDemod.m_sI2cProperty.m_DemodSlaveAddr, 
                                          I2C_BLOCK_BUF_ADDR,                                             
                                          blockLen, 
										  pMtxTable+i*blockLen,
                                          &rtnLen );
		}
		/* when mtx load over, HIC mtx select must be disabled */
		DDS_WriteReg( hDevice,  DTMB_HIC_MTX_SEL_REG, 0x00 );

		return MXD_RTN_OK;
	}
	else 	/* Write MTX Table via SPI */
	{
		DDS_WriteReg( hDevice,  DTMB_HIC_SDRM_DIR_ENABLE_REG, 0x01 );
		DDS_WriteReg( hDevice,  DTMB_HIC_SDRM_DIR_ADDR_H_REG, (MXD_U8)(sdramAddr>>8) );
		for( i=0; i<mtxCount; i++ )
		{
			DDS_WriteReg( hDevice,  DTMB_HIC_SDRM_DIR_ADDR_M_REG, (MXD_U8)i );
			for( j=0; j<256; j++ )
			{
				DDS_WriteReg( hDevice,  DTMB_HIC_SDRM_DIR_ADDR_L_REG, (MXD_U8)j );
				DDS_WriteReg( hDevice,  DTMB_HIC_SDRM_DIR_WR_DATA_H_REG, pMtxTable[i*512+2*j] );
				DDS_WriteReg( hDevice,  DTMB_HIC_SDRM_DIR_WR_DATA_L_REG, pMtxTable[i*512+2*j+1] );
				DDS_WriteReg( hDevice,  DTMB_HIC_SDRM_DIR_ACCESS_REG, 0x01 );
			
			}
			/* when mtx write over, sdram direct R/W must be disabled */
			DDS_WriteReg( hDevice,  DTMB_HIC_SDRM_DIR_ENABLE_REG, 0x00 );
		}
		
		return MXD_RTN_OK;
	}
#endif
}/* end of DTMB_DownloadMtx( ) */

/*!
 * Init DTMB device but not start, excluding tuner.
 *
 * \param hDevice:  [in] Device handle
 *
 * \return Return code by MXD_RTN_CODE_E enumeration.
 *
 * \remarks
 *
 */
MXD_RTN_CODE_E MXD_API DTMB_InitDevice( IN HMXDDEV hDevice )
{
	MXD_RTN_CODE_E eRtnCode = MXD_RTN_OK;
	MXD_S32 videoStreamThd;
	PDEVICE_PROPERTY_S psDeviceProperty;
	PTUNER_PROPERTY_S psTunerProperty;
	PDEMOD_PROPERTY_S psDemodProperty;
	MXD_U8 intCtrlVal= 0;
	MXD_U8 ifType;
	
	psDeviceProperty = ( PDEVICE_PROPERTY_S )hDevice;
	psTunerProperty = &(psDeviceProperty->m_sTuner);
	psDemodProperty = &(psDeviceProperty->m_sDemod);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品免费在线观看| 午夜电影一区二区| 亚洲视频在线一区观看| 亚洲国产精品精华液2区45| 国产亚洲精品精华液| 国产精品色噜噜| 伊人一区二区三区| 日日骚欧美日韩| 国产91对白在线观看九色| 成人午夜av在线| 欧美日韩免费观看一区二区三区| 欧美另类videos死尸| 久久久美女艺术照精彩视频福利播放| 国产日韩精品一区| 午夜精品久久久久影视| 国产精品自在在线| 在线视频你懂得一区二区三区| 69av一区二区三区| 国产精品色哟哟| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产精品亚洲午夜一区二区三区 | 99久久亚洲一区二区三区青草| 亚洲一区二区在线免费观看视频 | 亚洲精品ww久久久久久p站| 国产激情视频一区二区在线观看 | 99精品视频在线观看免费| 欧美日韩精品高清| 亚洲不卡av一区二区三区| 色婷婷av一区二区| 亚洲国产精品一区二区尤物区| 国产精品一卡二| 国产午夜精品一区二区三区嫩草 | 欧美精品一区二区三区四区| 亚洲大片在线观看| 97久久精品人人做人人爽50路| 国产精品亲子乱子伦xxxx裸| 欧美精品一区二区三区蜜桃视频| 亚洲欧美日韩小说| 欧美精品国产精品| 亚洲v精品v日韩v欧美v专区| 91麻豆精品国产无毒不卡在线观看| 亚洲男同性恋视频| 欧美日韩在线综合| 蜜臀av国产精品久久久久| 欧美精品一区二区高清在线观看| 日本午夜一区二区| 国产色一区二区| 91老师国产黑色丝袜在线| 亚洲va欧美va人人爽午夜| 欧美精品自拍偷拍| 国产在线播放一区三区四| 亚洲国产成人私人影院tom| 99免费精品在线观看| 亚洲综合区在线| 欧美一区二区三区电影| 国产乱色国产精品免费视频| 亚洲免费av在线| 亚洲精品国产精华液| 亚洲美女屁股眼交| 香蕉影视欧美成人| 亚洲国产精品久久不卡毛片| 精品国产网站在线观看| 欧美老人xxxx18| 色视频欧美一区二区三区| 久久爱另类一区二区小说| 亚洲精品视频在线看| 国产精品美女一区二区三区 | 国产精品资源站在线| 亚洲成人av在线电影| 亚洲视频免费观看| 亚洲视频狠狠干| 亚洲欧美在线视频观看| 中文字幕国产一区二区| 亚洲一区中文在线| 亚洲精品大片www| 亚洲线精品一区二区三区| 3d动漫精品啪啪一区二区竹菊| 欧美日韩一区高清| 日韩美女在线视频| 亚洲日本一区二区| 丝瓜av网站精品一区二区| 国产美女在线观看一区| 91免费视频网| 久久久久久黄色| 欧美色老头old∨ideo| 极品少妇xxxx精品少妇| 综合激情成人伊人| 大桥未久av一区二区三区中文| 亚洲成人免费视| 中文字幕日韩精品一区| 精品国产乱码久久久久久牛牛 | 一级做a爱片久久| 久久综合色天天久久综合图片| 一本久道久久综合中文字幕| 久久国产欧美日韩精品| 精品制服美女丁香| 久久精品99国产精品日本| 日韩电影在线看| 男女性色大片免费观看一区二区| 中文字幕亚洲区| 国产精品麻豆视频| 亚洲人xxxx| 亚洲高清久久久| 亚洲成a人片综合在线| 亚洲成av人在线观看| 亚洲国产经典视频| 亚洲视频免费在线观看| 亚洲综合色视频| 不卡的av网站| 成人免费视频视频在线观看免费| av激情亚洲男人天堂| 精品欧美乱码久久久久久1区2区| 欧美网站大全在线观看| 成人精品电影在线观看| 蜜臀久久久99精品久久久久久| 婷婷亚洲久悠悠色悠在线播放 | 精品亚洲免费视频| 久久免费看少妇高潮| 国产精品视频麻豆| 国产农村妇女精品| 亚洲自拍偷拍av| 国产一区二区在线影院| 欧美性大战久久| 久久久久国产一区二区三区四区| 亚洲丝袜另类动漫二区| 91网站在线观看视频| 欧美一区二区三区免费大片 | 中文字幕亚洲一区二区av在线| 视频一区国产视频| 成人激情文学综合网| 日韩欧美国产不卡| 亚洲一区二区三区自拍| 成人精品鲁一区一区二区| 日韩视频免费观看高清在线视频| 国产精品久久久久一区二区三区| 日韩精品每日更新| 欧美亚洲免费在线一区| 国产精品青草久久| 国产精品亚洲一区二区三区妖精| 欧美高清视频www夜色资源网| 国产精品福利av| 国产精品18久久久久| 欧美精品99久久久**| 亚洲激情图片一区| 91在线免费视频观看| 国产蜜臀97一区二区三区| 久久成人免费日本黄色| 欧美日韩精品一区二区在线播放 | 久久亚洲精品国产精品紫薇| 亚洲第一综合色| 97se亚洲国产综合自在线| 欧美激情综合在线| 国产精品影音先锋| 欧美电影免费观看高清完整版在线观看| 亚洲一区二区三区影院| 欧美在线观看禁18| 中文字幕在线一区| 精品久久久久久亚洲综合网| 亚洲一二三区视频在线观看| 91麻豆国产自产在线观看| 国产精品国模大尺度视频| 99视频一区二区三区| 国产精品久久久久久久久图文区| 国产精品综合二区| 欧美激情一区二区三区不卡| 成人国产电影网| 中文字幕一区二区三区不卡在线| 成人黄色小视频| 最好看的中文字幕久久| 色成年激情久久综合| 亚洲综合在线五月| 欧美三级日本三级少妇99| 亚洲福利视频三区| 日韩免费看的电影| 国产高清在线精品| 国产精品久久久久久久久久免费看| 成人综合在线网站| 亚洲精品亚洲人成人网| 欧美日韩另类国产亚洲欧美一级| 天堂影院一区二区| 日韩欧美亚洲国产另类| 国产福利视频一区二区三区| 国产精品入口麻豆原神| 91在线观看美女| 亚洲国产精品视频| 欧美mv和日韩mv的网站| 成人av电影在线| 午夜精品一区在线观看| 欧美成人一区二区| 成人aa视频在线观看| 亚洲精品免费在线播放| 在线不卡的av| 国产精品一区二区在线看| 中文字幕视频一区| 欧美男人的天堂一二区| 国内外成人在线| 亚洲少妇中出一区| 欧美电影精品一区二区| 成人黄色小视频在线观看| 亚洲第一二三四区|