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

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

?? jpegencoder.c

?? JPEG壓縮編碼在TMS320VC5509的實現代碼
?? C
字號:
//JpegEncoder.c
#include "BasicDefinition.h"
#include "JpegTypesAndGlobals.h"

extern BYTE DDC4[0x400];
extern BYTE RMartix[0x4000];
extern BYTE GMartix[0x4000];
extern BYTE BMartix[0x4000];
extern BOOL m_bAlreadyOpen;//沒有打開文件

UINT m_nErrorCode;//前面操作的錯誤代碼
extern RGB2YUV(void);
extern DctBlockQuantize(int* InputBlock,const unsigned int* zigzag,const int* Q_table,int* OutputBlock);
extern Mem8x8Cpy(BYTE* SourceAddr,BYTE* DistAddr);
void DCEncode(int* InputBlock,const DC_ENCODE_TAB* dc_encode_tab,int* OldDc);
void ACEncode(int* InputBlock,const AC_ENCODE_TAB* ac_encode_tab,BOOL Y_or_CbCr);
extern void ACEncode2(int* InputBlock,const AC_ENCODE_TAB* ac_encode_tab,BOOL Y_or_CbCr);
#define K_Y_AC 0
#define K_CbCr_AC 1
extern FILE *fp1;


void JpegGloablValsInit(void)
{
	m_bAlreadyOpen = 0;//沒有打開文件
	m_nErrorCode = K_OPERATION_SUCCESS;
	OneBlockBitstream.BitstreamLength = 0;
	OneBlockBitstream.LeftedBitLength = 0;
	OldDCY = 0;
	OldDCCb = 0;
	OldDCCr = 0;
}


BOOL JpegInfoInit(void)
{
	if(m_nErrorCode == K_OPERATION_SUCCESS)
	{
		if(DDC4[0] == 'B' && DDC4[0] == 'M' && DDC4[28] != 24)//不是24位真彩色
		{
			JpegEncodeErrorMsg(K_NOT_TRUE_COLOR_ERROR);
			return K_NOT_TRUE_COLOR_ERROR;
		}
		
		ImageWidth = (DDC4[18]&0xff) + (DDC4[19]<<8);//后面兩個字節不管,不會產生這么大的圖
		ImageHight = (DDC4[22]&0xff) + (DDC4[23]<<8);
		ImageBufSize = (unsigned long)(ImageWidth) * (unsigned long)(ImageHight);	
		return K_OPERATION_SUCCESS;
	}
	else
	{
		JpegEncodeErrorMsg(K_FILE_NOT_OPEN_ERROR);
		
		return K_FILE_NOT_OPEN_ERROR;
	}
}

void JpegEncodeErrorMsg(UINT ErrorCode)//方便以后與單片機通信
{
	puts(JpegErrorMessageTable[ErrorCode]);
}

BOOL JpegMainEncoder(void)
{
	UINT xpos,ypos;
	
	if(m_nErrorCode == K_OPERATION_SUCCESS)
	{
		ImageWidthFixed = (ImageWidth>>3)<<3;
		ImageHightFixed = (ImageHight>>3)<<3;
		for(ypos=0;ypos<ImageHightFixed;ypos+=8)
			for(xpos=0;xpos<ImageWidthFixed;xpos+=8)
			{
				LoadDataUnitsFromBuffer(xpos,ypos);
											
				RGB2YUV();

				IMG_sw_fdct_8x8(YDU,TmpCalBuf);
				IMG_sw_fdct_8x8(CbDU,TmpCalBuf);
				IMG_sw_fdct_8x8(CrDU,TmpCalBuf);

				DctBlockQuantize(YDU,zigzag,LuminanceScaleTab,YDCTzigzagQ);
				DctBlockQuantize(CbDU,zigzag,ChrominanceScaleTab,CbDCTzigzagQ);
				DctBlockQuantize(CrDU,zigzag,ChrominanceScaleTab,CrDCTzigzagQ);
								
				DCEncode(YDCTzigzagQ,&YDc_EncodeTab,&OldDCY);
				ACEncode(YDCTzigzagQ,&YAc_EncodeTab,K_Y_AC);
				//ACEncode2(YDCTzigzagQ,&YAc_EncodeTab,K_Y_AC);
				
												
				DCEncode(CbDCTzigzagQ,&CrCbDc_EncodeTab,&OldDCCb);
				ACEncode(CbDCTzigzagQ,&CrCbAc_EncodeTab,K_CbCr_AC);
								
				DCEncode(CrDCTzigzagQ,&CrCbDc_EncodeTab,&OldDCCr);
				ACEncode(CrDCTzigzagQ,&CrCbAc_EncodeTab,K_CbCr_AC);
			}
			
		FillOnes();
		
		JpegEncodeEnd(fp1);
		
		return K_OPERATION_SUCCESS;
	}
	else
	{
		return K_STOP_DU_TO_PREVIOUS_ERROR;
	}
}


void LoadDataUnitsFromBuffer(UINT xpos,UINT ypos)
{
	unsigned long m_nLocation,m_nLocationTmp;//存放的地址

	m_nLocation = ((unsigned long)(ImageWidth)) * ((unsigned long)(ypos)) + (unsigned long)(xpos);
	m_nLocationTmp = m_nLocation + (unsigned long)RMartix;//裝載Red
	Mem8x8Cpy((BYTE*)m_nLocationTmp,Rbuf);
	

	m_nLocationTmp = m_nLocation + (unsigned long)GMartix;//裝載Green
	Mem8x8Cpy((BYTE*)m_nLocationTmp,Gbuf);
	

	m_nLocationTmp = m_nLocation + (unsigned long)BMartix;//裝載Blue
	Mem8x8Cpy((BYTE*)m_nLocationTmp,Bbuf);
}


void DCEncode(int* InputBlock,const DC_ENCODE_TAB* dc_encode_tab,int* OldDc)
{
	register int DiffDc,DiffDc2;//直流系數的差值
	register UINT SizeOfDiffDc;
	UINT m_nAddBitsNum;//添加的bits位數
	UINT m_nAddBitsVal;//添加的變量
	

	SizeOfDiffDc = 0;
	
	DiffDc = *InputBlock - *OldDc;
	
	DiffDc2 = abs(DiffDc);
	
	//計算直流系數的位數
	while(DiffDc2 > 0)
	{
		DiffDc2 = DiffDc2>>1;
		
		SizeOfDiffDc++;	
	}
	
	*OldDc = *InputBlock;
	
	m_nAddBitsNum = dc_encode_tab->BitStreamLengthTab[SizeOfDiffDc];//求新添加的bitstream的位數

	m_nAddBitsVal = dc_encode_tab->BitStreamTab[SizeOfDiffDc];//添加的變量

	AddBits(m_nAddBitsVal,m_nAddBitsNum);

	//if(DiffDc >= 0)
	//{
	//	DiffDc2 = DiffDc;
	//}
	//else
	if(DiffDc < 0)
	{	
		//if(SizeOfDiffDc == 16)
		//{
		//	DiffDc2 = (abs(DiffDc))^0xffff;
		//}
		//else
		//{
			//DiffDc2 = ~(0xffff<<SizeOfDiffDc);
		
			//DiffDc2 = (abs(DiffDc))^DiffDc2;
			
			DiffDc = (abs(DiffDc))^(~(0xffff<<SizeOfDiffDc));	
		//}
	}
	
	AddBits(DiffDc,SizeOfDiffDc);	
}


void AddBits(int Inputdata,UINT Length)
{
	int TmpLeftedBits;//計算的時候使用
	UINT TmpPos;
	UINT TmpShiftNum;//,TmpShiftNum2;
	UINT TmpData;
	//BYTE TmpDataLow,TmpDataHigh;
	//UINT TmpMask;
	
	if(OneBlockBitstream.BitstreamLength > 511)
	{
		AddBytes(fp1);	
	}

	TmpShiftNum = 16 - OneBlockBitstream.LeftedBitLength;//計算OneBlockBitstream.LeftedWord的移位數

	TmpLeftedBits = (int)(Length) - TmpShiftNum;//+ (int)(OneBlockBitstream.LeftedBitLength) - 16;//是否超過16位
	
	if(TmpLeftedBits >= 0)
	{		
		TmpPos = OneBlockBitstream.BitstreamLength;
		
		//TmpShiftNum = 16 - OneBlockBitstream.LeftedBitLength;//計算OneBlockBitstream.LeftedWord的移位數
		
		OneBlockBitstream.LeftedWord = (OneBlockBitstream.LeftedWord>>TmpShiftNum)<<TmpShiftNum;//清除末尾不需要的部分
		
		//TmpShiftNum2 = Length - TmpShiftNum;//計算m_nAddBitsVal的移位數
		
		//TmpMask = 1;
		
		//while(TmpShiftNum > 1)
		//{
		//	TmpMask = (TmpMask<<1) + 1;
			
		//	TmpShiftNum--;
		//}
		
		//TmpMask = (1 << TmpShiftNum) - 1;
		
		TmpData = OneBlockBitstream.LeftedWord | ((Inputdata>>TmpLeftedBits)&((1 << TmpShiftNum) - 1));//TmpMask);



		//TmpDataHigh = (BYTE)(TmpData>>8);

		OneBlockBitstream.Bitstream[TmpPos++] = (BYTE)(TmpData>>8);//TmpDataHigh;
		
		//OneBlockBitstream.BitstreamLength++;//放到后面一起加
		
		if((BYTE)(TmpData>>8) == 0xff)//(TmpDataHigh == 0xff)
		{
			OneBlockBitstream.Bitstream[TmpPos++] = 0;
			
			OneBlockBitstream.BitstreamLength++;
		}



		//TmpDataLow = (BYTE)(TmpData&0xff);

		OneBlockBitstream.Bitstream[TmpPos++] = (BYTE)(TmpData&0xff);//TmpDataLow;
		
		OneBlockBitstream.BitstreamLength += 2;
						
		if((BYTE)(TmpData&0xff) == 0xff)//(TmpDataLow == 0xff)
		{
			OneBlockBitstream.Bitstream[TmpPos++] = 0;
		
			OneBlockBitstream.BitstreamLength++;		
		}


	
		OneBlockBitstream.LeftedBitLength = TmpLeftedBits;
		
		OneBlockBitstream.LeftedWord = Inputdata<<(16-TmpLeftedBits);//(16-TmpShiftNum2);
		
	}
	else
	{
		//TmpShiftNum2 = 16 - OneBlockBitstream.LeftedBitLength;//計算移位的數量

		//TmpShiftNum = TmpShiftNum2 - Length;
		
		

		OneBlockBitstream.LeftedBitLength += Length;//更新最后bit的長度
		
		OneBlockBitstream.LeftedWord = OneBlockBitstream.LeftedWord>>TmpShiftNum;//TmpShiftNum2;//清除末尾不需要的部分

		OneBlockBitstream.LeftedWord = (OneBlockBitstream.LeftedWord<<TmpShiftNum) | (Inputdata<<abs(TmpLeftedBits));//(Inputdata<<TmpShiftNum);
	}
}

//extern UINT jpe1(int* InputBlock,UINT* m_bAllAcZero);
void ACEncode(int* InputBlock,const AC_ENCODE_TAB* ac_encode_tab,BOOL Y_or_CbCr)
{
	UINT m_bAllAcZero,EncodeAc,nrzeroes,startpos,k,nrmarker;
	register int *pInputBlock;
	register UINT Tmp,i,endpos;
	
	pInputBlock = InputBlock + 63;
	
	//m_bAllAcZero = 1;//假設所有元素都為0成立
	//endpos = 63;

//	endpos = jpe1(InputBlock,&m_bAllAcZero);
	for(i=63;i>0;i--)
	{
		if(*pInputBlock-- != 0)
		{
			//m_bAllAcZero = 0;
			break;
		}
		//endpos--;
	}
	
	if(i>0)
	{
		m_bAllAcZero = 0;
	}
	else
	{
		m_bAllAcZero = 1;//所有元素都為0成立
	}
	endpos = i;
	

	
	if(m_bAllAcZero == 1)//EOB
	{
		if(Y_or_CbCr == K_Y_AC )
		{			
			AddBits(10,4);
		}
		else
		{
			AddBits(0,2);
		}
	}
	else
	{
		i=1;
		nrzeroes = 0;//連零的數量
		pInputBlock = InputBlock + 1;
		while (i <= endpos)
		{
			startpos = i;

			while(i < endpos && *pInputBlock++ == 0)//InputBlock[i]尋找相連的零,我交換了判斷的順序
            	i++;

            nrzeroes = i - startpos;//連零的數量
            
			if(nrzeroes >= 16)//如果連零的數量大于等于16
			{
				Tmp = nrzeroes>>4;
						
            	for(nrmarker=0;nrmarker<Tmp;nrmarker++)
            	//while(Tmp-- > 0)
            	{
                	if(Y_or_CbCr == K_Y_AC )//ZRL
					{			
						AddBits(2041,11);
					}
					else
					{
						AddBits(1018,10);
					}
                	nrzeroes = nrzeroes - 16;
				}
				
				//nrzeroes -= Tmp3*16;
			}
			
			EncodeAc = 0;//AC編碼的長度
			
			Tmp = abs(InputBlock[i]);//(*(pInputBlock-1));//abs(Output8x8Block(i,j));
			
            while(Tmp > 0)//計算需要的長度
            {
                Tmp = Tmp>>1;
                
                EncodeAc++;
            }
            k = nrzeroes*10 + EncodeAc - 1;//在AcMapStrTab中的位置

			AddBits(ac_encode_tab->BitStreamTab[k],ac_encode_tab->BitStreamLengthTab[k]);

			Tmp = InputBlock[i];

		//	if(InputBlock[i] >= 0)
		//	{
		//		Tmp = InputBlock[i];
		//	}
		//	else
			if(*(InputBlock + i) < 0)
			{
			//	if(EncodeAc == 16)//好象不存在EncodeAc = 16的情況
			//	{
			//		Tmp = (abs(Tmp))^0xffff;//(abs(InputBlock[i]))^0xffff;
			//	}
			//	else
			//	{
					//Tmp = ~(0xffff<<EncodeAc);
				
					//Tmp = abs(InputBlock[i])^Tmp;
					
					Tmp = abs(Tmp)^(~(0xffff<<EncodeAc));		
			//	}
			}
			
			AddBits(Tmp,EncodeAc);
			
			i++;
		}//i <= endpos
		
		if(endpos < 63)
		{
			if(Y_or_CbCr == K_Y_AC )
			{			
				AddBits(10,4);
			}
			else
			{
				AddBits(0,2);
			}
		}
	}//m_bAllAcZero == 1
}

void FillOnes(void)
{
	//UINT Tmp,Tmp2;
	
	//if(OneBlockBitstream.LeftedBitLength != 0)
	//{
		//Tmp = 16 - OneBlockBitstream.LeftedBitLength;
		
		////Tmp2 = (1 << (16 - OneBlockBitstream.LeftedBitLength)) - 1;
		
		//Tmp2 = 1;

		//while(Tmp>1)
		//{
		//	Tmp2 = (Tmp2<<1) + 1;
			
		//	Tmp--;	
		//}
		
		OneBlockBitstream.LeftedWord = OneBlockBitstream.LeftedWord | ((1 << (16 - OneBlockBitstream.LeftedBitLength)) - 1);
	//}
}


extern void ClearStReg(void);

void JpegEncodeEnd(FILE *fp)
{
	UINT TmpDataHigh;
	
	ClearStReg();
	
	fwrite(OneBlockBitstream.Bitstream,sizeof(BYTE),OneBlockBitstream.BitstreamLength,fp);

	OneBlockBitstream.BitstreamLength = 0;
	
	if(OneBlockBitstream.LeftedBitLength != 0)
	{	
		TmpDataHigh = (OneBlockBitstream.LeftedWord)>>8;
		
		fwrite(&TmpDataHigh,sizeof(BYTE),1,fp);
		
		if(OneBlockBitstream.LeftedBitLength > 8)
		{
			fwrite(&(OneBlockBitstream.LeftedWord),sizeof(BYTE),1,fp);
		}
		
		OneBlockBitstream.LeftedBitLength = 0;
	}
	
	TmpDataHigh = 0xff;
	
	fwrite(&TmpDataHigh,sizeof(BYTE),1,fp);
	
	TmpDataHigh = 0xd9;
	
	fwrite(&TmpDataHigh,sizeof(BYTE),1,fp);
	
	fclose(fp);			
}


void JpegHeadWrite(FILE *fp)
{
	BYTE TmpJpegInfo[4];
	
	ImageWidthFixed = (ImageWidth>>3)<<3;
	
	ImageHightFixed = (ImageHight>>3)<<3;
	
	TmpJpegInfo[0] = (BYTE)(ImageHightFixed>>8);//159
	
	TmpJpegInfo[1] = (BYTE)(ImageHightFixed&0xff);//160
	
	TmpJpegInfo[2] = (BYTE)(ImageWidthFixed>>8);//161
	
	TmpJpegInfo[3] = (BYTE)(ImageWidthFixed&0xff);//162

	fwrite(JpegInfo,sizeof(BYTE),159,fp);//JpegInfo 607

	fwrite(TmpJpegInfo,sizeof(BYTE),4,fp);//TmpJpegInfo
	
	fwrite((JpegInfo+163),sizeof(BYTE),444,fp);//JpegInfo		
}


void AddBytes(FILE *fp)
{
	//UINT Tmp;
	
	ClearStReg();

	fwrite(OneBlockBitstream.Bitstream,sizeof(BYTE),512,fp);
	
	OneBlockBitstream.BitstreamLength -= 512;
	
	if(OneBlockBitstream.BitstreamLength != 0)
	{
		//Tmp = OneBlockBitstream.Bitstream[512];
	
		//OneBlockBitstream.Bitstream[0] = Tmp;
		
		OneBlockBitstream.Bitstream[0] = OneBlockBitstream.Bitstream[512];
	
		//Tmp = OneBlockBitstream.Bitstream[513];
	
		//OneBlockBitstream.Bitstream[1] = Tmp;
		
		OneBlockBitstream.Bitstream[1] = OneBlockBitstream.Bitstream[513];
	}	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人精品aa毛片| 欧洲色大大久久| 91在线视频网址| 777xxx欧美| 国产蜜臀av在线一区二区三区| 亚洲六月丁香色婷婷综合久久 | 91精品国产一区二区三区| www国产成人| 午夜欧美电影在线观看| 国产a级毛片一区| 日韩一区二区三区三四区视频在线观看 | 国产精品久久久久7777按摩| 日韩精品乱码免费| 色综合天天综合在线视频| 日韩欧美色综合| 亚洲影院久久精品| 99久久综合国产精品| 26uuu精品一区二区在线观看| 亚洲精品国产第一综合99久久 | 国产日韩欧美在线一区| 五月综合激情婷婷六月色窝| 91福利国产精品| 亚洲欧洲av色图| 日本中文字幕一区二区视频| 欧美在线影院一区二区| 亚洲欧美日本韩国| 成人网页在线观看| 精品国产sm最大网站免费看 | 久久九九久精品国产免费直播| 亚洲一区二区三区四区在线观看| 91原创在线视频| 综合色天天鬼久久鬼色| av在线不卡网| 日韩毛片精品高清免费| 不卡免费追剧大全电视剧网站| 久久亚洲精华国产精华液 | 亚洲综合色婷婷| 色婷婷精品大在线视频| 亚洲一区视频在线| 91亚洲精品久久久蜜桃网站| 最近中文字幕一区二区三区| 91碰在线视频| 一区二区在线观看免费| 91一区一区三区| 亚洲宅男天堂在线观看无病毒| 91久久精品一区二区| 一区二区不卡在线播放| 欧美日韩另类国产亚洲欧美一级| 亚洲综合免费观看高清在线观看| 在线欧美日韩国产| 日本在线播放一区二区三区| 日韩无一区二区| 国产精品亚洲成人| 国产精品无圣光一区二区| 91美女视频网站| 亚洲一区二区在线免费观看视频| 欧美日韩高清影院| 奇米色一区二区三区四区| 26uuu亚洲| 成人黄动漫网站免费app| 亚洲男人都懂的| 91精品国产麻豆国产自产在线| 麻豆传媒一区二区三区| 国产亚洲精品aa午夜观看| 91麻豆国产精品久久| 日韩有码一区二区三区| 久久久久久97三级| 欧美亚洲综合另类| 国产一区二区三区精品欧美日韩一区二区三区 | 一区二区三区四区精品在线视频| 欧美性猛交xxxx乱大交退制版 | 一区二区三区在线影院| 日韩欧美第一区| 成人午夜免费av| 日韩高清欧美激情| 日韩理论片一区二区| 91精品国产欧美一区二区18| 成人网在线播放| 日韩激情av在线| 日韩一区中文字幕| 日韩精品一区二区在线观看| av色综合久久天堂av综合| 天天操天天干天天综合网| 日本一区二区三区在线观看| 欧美妇女性影城| gogo大胆日本视频一区| 九色综合狠狠综合久久| 亚洲欧美一区二区不卡| 久久久亚洲综合| 91精品婷婷国产综合久久| youjizz久久| 麻豆国产精品官网| 污片在线观看一区二区| 综合激情成人伊人| 国产欧美精品一区| 欧美videos大乳护士334| 欧美视频一二三区| caoporn国产一区二区| 极品尤物av久久免费看| 国产精品 欧美精品| 日本欧美一区二区在线观看| 亚洲精品久久嫩草网站秘色| 国产精品另类一区| 久久亚洲综合色一区二区三区 | 美女免费视频一区| 亚洲高清久久久| 亚洲美女免费在线| 亚洲欧美怡红院| 国产精品三级av| 国产女人18毛片水真多成人如厕| 久久亚区不卡日本| 久久久久久久久久久久久久久99| 欧美一区二区三区视频免费播放| 欧美性大战久久| 欧美日韩亚洲综合在线| 欧美亚洲国产一区二区三区| 91在线精品一区二区| 波多野结衣亚洲| gogogo免费视频观看亚洲一| 91丝袜高跟美女视频| 色香蕉成人二区免费| 欧美在线免费播放| 欧美日韩免费视频| 欧美精品99久久久**| 欧美放荡的少妇| 日韩一本二本av| 久久美女艺术照精彩视频福利播放| 久久在线免费观看| 中文字幕一区二区三区四区| 亚洲欧美另类图片小说| 亚洲成av人片在线观看无码| 天堂在线一区二区| 毛片av一区二区| 国产伦理精品不卡| 波多野洁衣一区| 在线视频欧美区| 69久久夜色精品国产69蝌蚪网| 91精品欧美一区二区三区综合在| 日韩女优av电影在线观看| 久久影视一区二区| **欧美大码日韩| 婷婷中文字幕综合| 国内精品不卡在线| 国产成人自拍网| 色天天综合久久久久综合片| 欧美精三区欧美精三区| 精品美女一区二区| 日韩一区欧美一区| 轻轻草成人在线| www.亚洲色图.com| 欧美军同video69gay| 国产日韩亚洲欧美综合| 亚洲精品国产无天堂网2021| 麻豆精品在线播放| 色呦呦国产精品| 精品少妇一区二区三区日产乱码 | 欧美国产一区二区| 亚洲国产成人av| 国产.欧美.日韩| 欧美色区777第一页| 中文字幕精品在线不卡| 日韩av在线播放中文字幕| 成人丝袜视频网| 91精品国产综合久久婷婷香蕉| 久久精品免费在线观看| 一区二区免费在线| 国产iv一区二区三区| 欧美精品乱码久久久久久| 国产精品国产三级国产普通话99| 五月天激情小说综合| 99精品视频一区二区三区| 久久欧美一区二区| 亚洲va在线va天堂| 99re视频精品| www国产成人免费观看视频 深夜成人网| 一区二区三区四区激情| 懂色av噜噜一区二区三区av| 日韩一区二区高清| 亚洲国产精品嫩草影院| 成人h精品动漫一区二区三区| 日韩亚洲欧美在线观看| 一区二区欧美精品| av不卡免费在线观看| 国产情人综合久久777777| 麻豆免费看一区二区三区| 欧美精品一二三四| 亚洲高清免费在线| 欧美色涩在线第一页| 伊人色综合久久天天人手人婷| 岛国一区二区三区| 久久久久久久久久久久电影| 美女视频黄 久久| 91精品国产免费久久综合| 亚洲曰韩产成在线| 在线影院国内精品| 一区二区三区在线观看视频| 94-欧美-setu| 国产精品国产自产拍高清av王其| 成人黄色av电影| 国产精品久久午夜夜伦鲁鲁|