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

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

?? doublecode.cpp

?? 改進的JPEG-LS算法
?? CPP
字號:
#include "stdafx.h"
#include <math.h>
#include "DoubleCode.h"
/*
				關于行尾大誤差數(shù)的編碼規(guī)則


  概率模型: <1>各象素相互獨立,<2>每象素是大誤差的概率為 p

  模型估計: 主要是估計 p 值,定初值為 1/8,每行編碼結束時累計象素數(shù)(PixN)與大誤差數(shù)(ErrN),p=ErrN/PixN
			實際使用值為 DoubleN=(PixN*16)/ErrN 意義是每(DoubleN/16)象素中含有一個大誤差,
			*16 目的是提高精度

  二項分布的半概率點確定:
			設某行尾累積待檢大誤差的象素數(shù)為 N, 已檢出大誤差數(shù)為 en, 半概率點位置在 K
			K=(N*16+[DoubleN/4])/DoubleN 

  半概率點所在區(qū)寬度確定:
			此寬度由半概率點 K 決定, 由于函數(shù)關系不好列出, 采用查表方法, 建立對應表.

  編碼過程: <1> 由象素數(shù) N 和概率倒數(shù)值 DoubleN, 求 K 值.
			<2> 由 K 值求 Huffman編碼的寬度表.
			<3> 檢測待編碼的大誤差象素數(shù)所處的區(qū)間, 并編出首碼(0...01)0的個數(shù)是區(qū)間號.以1比特表示上下區(qū).
			<4> 根據(jù)區(qū)間的位置與寬度, 編碼大誤差數(shù)在區(qū)間的精確位置, 采用Huffman編碼, 這是尾碼部分.
			<5> 更新PixN、ErrN值.

  補充: 構造不同項數(shù)的 Huffman 碼表, 概率是按大到小排隊的, 但相差并不大, 這個表在幾何分布的編碼中也可用.
		HuffcodingBit[6][7]存放碼表, HuffcodingL[6][7]存放碼長, 大于等于8時用自然二進 

*/
CDoubleErrorNumberFastCoding::CDoubleErrorNumberFastCoding()
{
		Init();
		Reset();
}
void CDoubleErrorNumberFastCoding::Reset()
{
		PixN=8;
		ErrN=1;//初始概率1/8
		BitNumber=0;
}
void CDoubleErrorNumberFastCoding::Init()
{
		int i;

		UsingBinaryCode=FALSE;

		for(i=0;i<PART_WIDTH1_HALF_PROBABILITY_FAST_SEAT;i++){PartW[i]=1;PartBit[i]=0;}
		for(;i<PART_WIDTH2_HALF_PROBABILITY_FAST_SEAT;i++){PartW[i]=2;PartBit[i]=1;}
		for(;i<PART_WIDTH4_HALF_PROBABILITY_FAST_SEAT;i++){PartW[i]=4;PartBit[i]=2;}
		for(;i<PART_WIDTH8_HALF_PROBABILITY_FAST_SEAT;i++){PartW[i]=8;PartBit[i]=3;}

}
int/*返回編碼比持數(shù)*/ CDoubleErrorNumberFastCoding::OneEncodePass(int Number/*總象素數(shù)*/,int ErrorN/*待編碼的大誤差數(shù)*/,LPBYTE lpCodeBit,int Bitcp)
{
/*  編碼過程: <1> 由象素數(shù) N 和概率倒數(shù)值 DoubleN, 求 K 值.
			  <2> 由 K 值求區(qū)間寬度和區(qū)間內編碼比特數(shù).
			  <3> 檢測待編碼的大誤差象素數(shù)所處的區(qū)間, 并編出首碼(0...01)0的個數(shù)是區(qū)間號.以1比特表示上下區(qū).
			  <4> 根據(jù)區(qū)間的位置與寬度, 編碼大誤差數(shù)在區(qū)間的精確位置, 這是尾碼部分.
			  <5> 更新PixN、ErrN值.
*/
		int DoubleN=(PixN<<4)/ErrN;
		int W,Code,D,d,n,CodeL,N,K,bitn;
		N=Number;
// <1> 由象素數(shù) N 和概率倒數(shù)值 DoubleN, 求 K 值.
		if(UsingBinaryCode==FALSE)K=((N<<4)+(DoubleN>>2))/DoubleN;
		else K=MAX_HALF_PROBABILITY_FAST_SEAT+1;
		if(K<=MAX_HALF_PROBABILITY_FAST_SEAT)
		{//采用二項分布快速編碼
 //<2> 由 K 值求區(qū)間寬度和區(qū)間內編碼比特數(shù).
			W=PartW[K];
			bitn=PartBit[K];
			if(K<1)
			{
				if(ErrorN<MAX_0_NUMBER){Code=1<<ErrorN;CodeL=ErrorN+1;}
				else
				{//采用自然二進制編碼
					for(n=0;n<14&&(1<<n)<Number;n++);
					Code=(1<<MAX_0_NUMBER)|(ErrorN<<(MAX_0_NUMBER+1));
					CodeL=MAX_0_NUMBER+1+n;
				}
			}
			else
			{
				if(ErrorN>=K)
				{
					D=ErrorN-K;
//<3> 檢測待編碼的大誤差象素數(shù)所處的區(qū)間, 并編出首碼(0...01)0的個數(shù)是區(qū)間號.以1比特表示上下區(qū).
					n=D/W;
					d=D%W;
					if(n<MAX_0_NUMBER)
					{
						Code=(3<<n);CodeL=n+2;//包含上下位區(qū)間的指示比特1
						Code|=d<<CodeL;
						CodeL+=bitn;
					}
					else
					{//采用自然二進制編碼
						for(n=0;n<14&&(1<<n)<Number;n++);
						Code=(1<<MAX_0_NUMBER)|(ErrorN<<(MAX_0_NUMBER+1));
						CodeL=MAX_0_NUMBER+1+n;
					}
				}
				else
				{
					D=K-1-ErrorN;//K值本身是在下區(qū)間編碼的,上區(qū)間將不含它
//<3> 檢測待編碼的大誤差象素數(shù)所處的區(qū)間, 并編出首碼(0...01)0的個數(shù)是區(qū)間號.以1比特表示上下區(qū).
					n=D/W;
					d=D%W;
					if(n<MAX_0_NUMBER)
					{
						Code=(1<<n);CodeL=n+2;//包含上下位區(qū)間的指示比特1
						Code|=d<<CodeL;
						CodeL+=bitn;
					}
					else
					{//采用自然二進制編碼
							for(n=0;n<14&&(1<<n)<Number;n++);
							Code=(1<<MAX_0_NUMBER)|(ErrorN<<(MAX_0_NUMBER+1));
							CodeL=MAX_0_NUMBER+1+n;
					}
				}
			}
		}
		else
		{//采用自然二進制編碼
			for(n=0;n<14&&(1<<n)<Number;n++);Code=ErrorN;CodeL=n;
		}
 //<5> 更新PixN、ErrN值.
		PixN+=N;
		ErrN+=ErrorN;
		if(PixN>0x1000000)
		{
			PixN>>=1;
			ErrN>>=1;
		}
		if((Bitcp&7)+CodeL<32)(*((int *)(lpCodeBit+(Bitcp>>3))))|=(Code<<(Bitcp&7));
		else 
		{
			(*((int *)(lpCodeBit+(Bitcp>>3))))|=((Code&0xff)<<(Bitcp&7));
			(*((int *)(lpCodeBit+(Bitcp>>3)+1)))|=((Code>>8)<<(Bitcp&7));
		}
		BitNumber+=CodeL;
		return CodeL;
}
int/*返回大誤差數(shù)*/ CDoubleErrorNumberFastCoding::OneDecodePass(int Number/*總象素數(shù)*/,LPBYTE lpCodeBit/*碼流指針*/,int Bitcp/*碼流比特位*/,int &CodeL)
{
		int DoubleN;
		int W,n,ErrorN,ZeroN;//初始區(qū)間寬度
		int N,K,bitn;
		N=Number;
		int UpDown;
		if(ErrN>0)DoubleN=(PixN<<4)/ErrN;//<<4是統(tǒng)一乘以16,提高精度,最后再統(tǒng)一除以16。
		else DoubleN=(PixN<<4);
// <1> 由象素數(shù) N 和概率倒數(shù)值 DoubleN, 求 K 值.
		if(UsingBinaryCode==FALSE)K=((N<<4)+(DoubleN>>2))/DoubleN;
		else K=MAX_HALF_PROBABILITY_FAST_SEAT+1;
		if(K<=MAX_HALF_PROBABILITY_FAST_SEAT)
		{//采用二項分布譯碼
 //<2> 由 K 值求 Huffman編碼的寬度表.
			W=PartW[K];
			bitn=PartBit[K];
			ZeroN=ReturnZeroBitNumber(lpCodeBit,Bitcp);
			if(K<1)
			{
				if(ZeroN<MAX_0_NUMBER){ErrorN=ZeroN;CodeL=ErrorN+1;}
				else
				{//采用自然二進制譯碼
					for(n=0;n<14&&(1<<n)<Number;n++);
					ErrorN=GetFromBitStream(lpCodeBit,Bitcp+MAX_0_NUMBER+1,n);
					CodeL=MAX_0_NUMBER+1+n;
				}
			}
			else
			{
				UpDown=GetFromBitStream(lpCodeBit,Bitcp+ZeroN+1,1);
				CodeL=ZeroN+2;
				if(UpDown)
				{
//<3> 檢測待編碼的大誤差象素數(shù)所處的區(qū)間, 并編出首碼(0...01)0的個數(shù)是區(qū)間號.以1比特表示上下區(qū).
					if(ZeroN<MAX_0_NUMBER)
					{//在編碼允許范圍內,0 的個數(shù)就是跳過的區(qū)間數(shù)
						ErrorN=K+ZeroN*W+GetFromBitStream(lpCodeBit,Bitcp+CodeL,bitn);
						CodeL+=bitn;
					}
					else
					{//采用自然二進制譯碼
						for(n=0;n<14&&(1<<n)<Number;n++);
						ErrorN=GetFromBitStream(lpCodeBit,Bitcp+MAX_0_NUMBER+1,n);
						CodeL=MAX_0_NUMBER+1+n;
					}
				}
				else
				{
//<3> 檢測待編碼的大誤差象素數(shù)所處的區(qū)間, 并編出首碼(0...01)0的個數(shù)是區(qū)間號.以1比特表示上下區(qū).
					if(ZeroN<MAX_0_NUMBER)
					{//在編碼允許范圍內,0 的個數(shù)就是跳過的區(qū)間數(shù)
						ErrorN=K-1-ZeroN*W-GetFromBitStream(lpCodeBit,Bitcp+CodeL,bitn);
						CodeL+=bitn;
					}
					else
					{//采用自然二進制譯碼
							for(n=0;n<14&&(1<<n)<Number;n++);
							ErrorN=GetFromBitStream(lpCodeBit,Bitcp+MAX_0_NUMBER+1,n);
							CodeL=MAX_0_NUMBER+1+n;
					}
				}
			}
		}
		else
		{
			for(n=0;n<14&&(1<<n)<Number;n++);
			ErrorN=GetFromBitStream(lpCodeBit,Bitcp,n);
			CodeL=n;
		}
 //<5> 更新PixN、ErrN值.
		PixN+=N;
		ErrN+=ErrorN;
		if(PixN>0x1000000)
		{
			PixN>>=1;
			ErrN>>=1;
		}
		return ErrorN;
}
int CDoubleErrorNumberFastCoding::ReturnZeroBitNumber(LPBYTE lpCodeStream,int CodeBitcp)
{//在當前的碼流位置上,檢查連續(xù)'0'的個數(shù)。
		int a,i,j;
		a=(*((int *)(lpCodeStream+(CodeBitcp>>3)))>>(CodeBitcp&7))&0xffffff;
		if(a==0)
		{
			i=24;
			a=(*((int *)(lpCodeStream+(CodeBitcp>>3)+3))>>(CodeBitcp&7))&0xffffff;
			if(a==0)
			{
				i+=24;
				a=(*((int *)(lpCodeStream+(CodeBitcp>>3)+6))>>(CodeBitcp&7))&0xffffff;
				for(j=1;(a&j)==0&&j<0x1000000;j<<=1,i++);
			}
			else for(j=1;(a&j)==0&&j<0x1000000;j<<=1,i++);
		}
		else for(j=1,i=0;(a&j)==0&&j<0x1000000;j<<=1,i++);
		return i;
}
int CDoubleErrorNumberFastCoding::GetFromBitStream(LPBYTE lpCodeStream,int CodeBitcp,int b)
{//在當前的碼流位置上取出 b  比特,比特放入低位作為返回值。一般不能大24比特。
		return (*((int *)(lpCodeStream+(CodeBitcp>>3)))>>(CodeBitcp&7))&~((-1)<<b);
}
/*
				關于行尾大誤差游程的編碼規(guī)則


  概率模型: <1>各象素相互獨立,<2>每象素是大誤差的概率為 p,<3> 0 游程長為l時的概率為p*(1-p)^l

  模型估計: 主要是估計 p 值, 設象素數(shù)為 N, 大誤差數(shù)為 en, p=en/N, 每編碼一個大誤差en與N各減1,

  幾何分布的半概率點確定:
			編碼區(qū)間寬度的估算 K=(N*log2)/en, (log2可以轉化為兩個整數(shù)的比值),
			當 K>8 時, K 取最小的大于K的2冪

  編碼過程: <1> 由象素數(shù) N 和大誤差數(shù) en, 求 K 值.
			<2> 檢測待編碼的大誤差游程所處的區(qū)間, 并編出首碼(0...01)0的個數(shù)是區(qū)間號.以1比特表示大誤差的符號.
			<3> 根據(jù)區(qū)間的寬度, 編碼大誤差數(shù)在區(qū)間的精確位置, 采用Huffman編碼, 這是尾碼部分.
			<4> 更新N、en值.

  補充: 構造不同項數(shù)的 Huffman 碼表, 概率是按大到小排隊的, 但相差并不大, 這個表在幾何分布的編碼中也可用.
		HuffcodingBit[8][8]存放碼表, HuffcodingL[8][8]存放碼長, 大于等于8時用自然二進 
*/
CDoubleErrorRunFastCoding::CDoubleErrorRunFastCoding()
{
		Init();
		Reset();
}
void CDoubleErrorRunFastCoding::Reset()
{
		BitNumber=0;
}
void CDoubleErrorRunFastCoding::Init()
{
		UsingBinaryCode=FALSE;
}
int CDoubleErrorRunFastCoding::GetHalfProbabilityWidth(int Number,int ErrorN,int &Bitn)
{
//		int W=(int)((Number*log(2))/ErrorN);
//		int W=(Number*69314)/ErrorN/100000;
		int W=(Number*709)/ErrorN/1024;
		for(Bitn=0;(1<<Bitn)<W;Bitn++);
		if(W<(1<<Bitn)&&Bitn>1)Bitn--;
		W=(1<<Bitn);
		return W;
}
int/*返回編碼比持數(shù)*/ CDoubleErrorRunFastCoding::OneEncodePass(int Number/*總象素數(shù)*/,
															int ErrorN/*待編碼的大誤差數(shù)*/,
															int RunL,
															LPBYTE lpCodeBit,int Bitcp)
{
/*  編碼過程: <1> 由象素數(shù) N 和大誤差數(shù) en, 求 K 值.
			  <2> 檢測待編碼的大誤差游程所處的區(qū)間, 并編出首碼(0...01)0的個數(shù)是區(qū)間號.以1比特表示大誤差的符號.
			  <3> 根據(jù)區(qū)間的寬度, 編碼大誤差數(shù)在區(qū)間的精確位置, 采用Huffman編碼, 這是尾碼部分.
			  <4> 更新N、en值.
*/
		if(ErrorN<=0||Number<ErrorN)return 0;
		int W,Code,n,CodeL,Bitn,ZeroN,Seat;//初始區(qū)間寬度
// <1> 由象素數(shù) N 和大誤差數(shù) en, 求 W 值.
		if(UsingBinaryCode==FALSE)W=GetHalfProbabilityWidth(Number,ErrorN,Bitn);
		else W=MAX_HALF_PROBABILITY_FAST_WIDTH+1;
		if(W<1)W=1;
		if(W<=MAX_HALF_PROBABILITY_FAST_WIDTH)
		{//采用幾何分布編碼
			ZeroN=RunL/W;
			Seat=RunL%W;
//			for(ZeroN=0,Seat=RunL;Seat>=W;ZeroN++)
//			{
//				Seat-=W;
//				if(ZeroN>8)
//				{
//					W<<=1;
//					Bitn++;
//				}
//			}
			if(ZeroN<MAX_0_NUMBER)
			{
				Code=1<<ZeroN;
				CodeL=ZeroN+1;
				Code|=(Seat<<CodeL);
				CodeL+=Bitn;
			}
			else
			{//采用自然二進制編碼
				for(n=0;n<14&&(1<<n)<Number;n++);
				Code=(1<<MAX_0_NUMBER)|(RunL<<(MAX_0_NUMBER+1));
				CodeL=MAX_0_NUMBER+1+n;
			}
		}
		else
		{//采用自然二進制編碼
			for(n=0;n<14&&(1<<n)<Number;n++);Code=RunL;CodeL=n;
		}
 		if((Bitcp&7)+CodeL<32)(*((int *)(lpCodeBit+(Bitcp>>3))))|=(Code<<(Bitcp&7));
		else 
		{
			(*((int *)(lpCodeBit+(Bitcp>>3))))|=((Code&0xff)<<(Bitcp&7));
			(*((int *)(lpCodeBit+(Bitcp>>3)+1)))|=((Code>>8)<<(Bitcp&7));
		}
		BitNumber+=CodeL;
		return CodeL;
}
int/*返回大誤游程*/ CDoubleErrorRunFastCoding::OneDecodePass(int Number/*總象素數(shù)*/,
													   int ErrorN/*待編碼的大誤差數(shù)*/,
													   LPBYTE lpCodeBit/*碼流指針*/,int Bitcp/*碼流比特位*/,
													   int &CodeL)
{
		if(ErrorN<=0||Number<ErrorN)return 0;
		int W,n,ZeroN,Seat,RunL,Bitn;//初始區(qū)間寬度
		if(UsingBinaryCode==FALSE)W=GetHalfProbabilityWidth(Number,ErrorN,Bitn);
		else W=MAX_HALF_PROBABILITY_FAST_WIDTH+1;
		if(W<1)W=1;
		if(W<=MAX_HALF_PROBABILITY_FAST_WIDTH)
		{//采用幾何分布譯碼
 //<2> 由 K 值求 Huffman編碼的寬度表.
			ZeroN=ReturnZeroBitNumber(lpCodeBit,Bitcp);
			if(ZeroN<MAX_0_NUMBER)
			{
				CodeL=ZeroN+1;
				RunL=ZeroN*W;
//				RunL=0;
//				if(ZeroN>0)for(n=0;n<ZeroN;n++)
//				{
//					RunL+=W;
//					if(n>8)
//					{
//						W<<=1;
//						Bitn++;
//					}
//				}
				Seat=GetFromBitStream(lpCodeBit,Bitcp+ZeroN+1,Bitn);
				RunL+=Seat;
				CodeL+=Bitn;
			}
			else
			{//采用自然二進制譯碼
				for(n=0;n<14&&(1<<n)<Number;n++);
				RunL=GetFromBitStream(lpCodeBit,Bitcp+MAX_0_NUMBER+1,n);
				CodeL=MAX_0_NUMBER+1+n;
			}
		}
		else
		{
			for(n=0;n<14&&(1<<n)<Number;n++);
			RunL=GetFromBitStream(lpCodeBit,Bitcp,n);
			CodeL=n;
		}
		return RunL;
}
int CDoubleErrorRunFastCoding::ReturnZeroBitNumber(LPBYTE lpCodeStream,int CodeBitcp)
{//在當前的碼流位置上,檢查連續(xù)'0'的個數(shù)。
		int a,i,j;
		a=(*((int *)(lpCodeStream+(CodeBitcp>>3)))>>(CodeBitcp&7))&0xffffff;
		if(a==0)
		{
			i=24;
			a=(*((int *)(lpCodeStream+(CodeBitcp>>3)+3))>>(CodeBitcp&7))&0xffffff;
			if(a==0)
			{
				i+=24;
				a=(*((int *)(lpCodeStream+(CodeBitcp>>3)+6))>>(CodeBitcp&7))&0xffffff;
				for(j=1;(a&j)==0&&j<0x1000000;j<<=1,i++);
			}
			else for(j=1;(a&j)==0&&j<0x1000000;j<<=1,i++);
		}
		else for(j=1,i=0;(a&j)==0&&j<0x1000000;j<<=1,i++);
		return i;
}
int CDoubleErrorRunFastCoding::GetFromBitStream(LPBYTE lpCodeStream,int CodeBitcp,int b)
{//在當前的碼流位置上取出 b  比特,比特放入低位作為返回值。一般不能大24比特。
		return (*((int *)(lpCodeStream+(CodeBitcp>>3)))>>(CodeBitcp&7))&~((-1)<<b);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人综合网站| 国产精品香蕉一区二区三区| 国产真实乱偷精品视频免| 色香色香欲天天天影视综合网| 精品国产髙清在线看国产毛片| 亚洲精品亚洲人成人网| 国产成人精品免费一区二区| 9191精品国产综合久久久久久| 国产精品久久久久一区| 久久国内精品自在自线400部| 日本乱人伦aⅴ精品| 国产日本欧美一区二区| 奇米777欧美一区二区| 色综合天天综合网天天狠天天| 久久天堂av综合合色蜜桃网| 三级在线观看一区二区 | 久久久.com| 青青国产91久久久久久| 在线免费观看一区| 国产精品久久久久久久久免费樱桃 | av在线不卡网| 久久影院午夜论| 蜜桃精品视频在线| 7777精品伊人久久久大香线蕉 | 国产精品久久午夜| 国产精品伊人色| 精品免费国产二区三区 | 久久精品男人天堂av| 久久精品久久精品| 欧美精选在线播放| 午夜久久久久久久久| 欧美性xxxxx极品少妇| 亚洲视频在线一区二区| 成人高清视频在线| 日本一区二区综合亚洲| 国产精品1区2区| 久久综合久久99| 久久91精品久久久久久秒播| 91精品国产91久久综合桃花| 首页欧美精品中文字幕| 欧美日本一道本| 亚洲电影中文字幕在线观看| 在线亚洲高清视频| 亚洲一区二区三区精品在线| 欧美在线视频全部完| 亚洲精品视频自拍| 在线视频一区二区三区| 夜色激情一区二区| 欧美性欧美巨大黑白大战| 亚洲一区二区三区在线播放| 欧美日韩综合一区| 日日摸夜夜添夜夜添精品视频| 在线成人小视频| 全国精品久久少妇| 精品日韩一区二区| 国产福利不卡视频| 国产精品网站在线观看| 99精品视频一区二区三区| 亚洲三级视频在线观看| 欧美影院精品一区| 爽好多水快深点欧美视频| 日韩欧美不卡在线观看视频| 激情久久久久久久久久久久久久久久| 久久久噜噜噜久久中文字幕色伊伊| 国产一区在线看| 国产精品三级视频| 91福利社在线观看| 天天综合网天天综合色| 日韩欧美一区二区在线视频| 精品一区二区三区欧美| 国产欧美日韩另类一区| 91麻豆免费看片| 日本不卡的三区四区五区| 精品国产伦一区二区三区观看方式 | 久久久精品tv| 99国产精品久久久久久久久久| 亚洲免费av高清| 777色狠狠一区二区三区| 国产乱对白刺激视频不卡| ...av二区三区久久精品| 欧美亚洲丝袜传媒另类| 裸体健美xxxx欧美裸体表演| 国产欧美日韩另类一区| 欧美在线免费观看视频| 美女诱惑一区二区| 中文字幕av一区二区三区免费看| 日本韩国精品在线| 美女视频黄 久久| 国产精品久久久久久久久搜平片 | 国产伦精一区二区三区| 综合久久一区二区三区| 91精品黄色片免费大全| 成人性生交大片免费看在线播放 | 国产三级欧美三级日产三级99| 91在线高清观看| 麻豆精品在线观看| 亚洲视频精选在线| 精品久久久久久久久久久久包黑料| 大桥未久av一区二区三区中文| 亚洲电影视频在线| 久久蜜臀精品av| 欧美日本视频在线| 成人国产精品视频| 美女一区二区三区| 亚洲欧美区自拍先锋| 欧美xxxxxxxx| 欧美午夜视频网站| 国产成人综合精品三级| 亚洲成人免费视频| 国产精品美女久久久久久久久| 这里只有精品免费| 91伊人久久大香线蕉| 久久99精品网久久| 亚洲综合精品自拍| 国产三级久久久| 日韩三级av在线播放| 99热99精品| 国产一区二区三区在线观看精品| 亚洲大片一区二区三区| 国产精品久久久久精k8| 日韩欧美亚洲另类制服综合在线 | 精品亚洲国产成人av制服丝袜| 亚洲综合在线电影| 国产精品视频一二三| 精品国产一区二区三区忘忧草| 在线看日本不卡| av在线一区二区| 国产很黄免费观看久久| 日韩电影免费一区| 亚洲一区在线视频| 最新日韩av在线| 欧美va亚洲va香蕉在线| 欧美日韩国产区一| 91成人在线精品| 波波电影院一区二区三区| 韩国精品在线观看| 日韩国产高清在线| 亚洲小少妇裸体bbw| 亚洲人成网站在线| 中文字幕欧美三区| 国产视频在线观看一区二区三区| 91精品国产乱| 欧美高清www午色夜在线视频| 欧美色成人综合| 色婷婷综合五月| 91女人视频在线观看| 成人午夜在线播放| 丰满岳乱妇一区二区三区| 国产精品99久久久久| 蜜桃视频第一区免费观看| 日本亚洲电影天堂| 午夜成人免费视频| 亚洲bt欧美bt精品| 亚洲一区视频在线| 亚洲午夜久久久久久久久电影网 | 欧美tickling网站挠脚心| 日韩欧美国产一区二区在线播放| 欧美精品xxxxbbbb| 91麻豆精品国产综合久久久久久 | 国产精品99久久久| 国产.欧美.日韩| 丰满少妇久久久久久久| 成人免费观看av| 97se亚洲国产综合自在线观| 成人精品国产免费网站| av高清久久久| 91久久线看在观草草青青| 色噜噜狠狠成人中文综合 | 久久精品国产澳门| 久久99久久99精品免视看婷婷| 美国三级日本三级久久99| 久久精品国产精品青草| 国产麻豆精品一区二区| 成人丝袜视频网| 色国产精品一区在线观看| 在线亚洲高清视频| 91精品国产乱| 久久久一区二区| 国产精品国产三级国产普通话三级| 国产精品久久久久久久午夜片 | 精品国产一区二区国模嫣然| 久久精品视频在线看| 中文字幕在线观看一区| 亚洲欧美日韩在线不卡| 亚洲成人一区在线| 免费在线看成人av| 国产成人av一区二区三区在线| www.欧美色图| 欧美视频中文字幕| 日韩亚洲欧美在线观看| 久久夜色精品一区| 一区二区中文视频| 一区二区三区在线视频免费 | 国产精品色在线| 亚洲精品成人悠悠色影视| 午夜精品福利在线| 国产福利91精品| 在线观看日韩毛片| 91麻豆精品国产91久久久| 国产拍欧美日韩视频二区|