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

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

?? quantutil.c

?? 好東西呢
?? C
?? 第 1 頁 / 共 2 頁
字號:
/******
*
*	<>
*
*	these routines are obsoleted by "quantim" and need to make calls
*	to the quantizeImage routines with passed-in qtypes and whatnot
*
*******/

#define NEVER_QUANT_LL	// seems to be a winner

#define FASTQUANT_SHIFT 8
#define FASTQUANT_ONE (1<<FASTQUANT_SHIFT)
#define FASTQUANT_HALF (1<<(FASTQUANT_SHIFT-1))

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <crblib/inc.h>

#include "image.h"
#include "codeimage.h"
#include "quantutil.h"

/*************/

#define quantizeBands	quantizeBandsDZ		// not very cool to do this
#define quantizeBandsU	quantizeBandsDZU	// not very cool to do this
	// quantizeBands() is used by the fiddle() and whatnot routines

#define VAL_SCALE		16
#define INV_VAL_SCALE	(1.0/VAL_SCALE)
#define MAX_VAL			128
#define MAX_VAL_SCALED	(MAX_VAL * VAL_SCALE)
#define TOP_VAL_SCALED	(MAX_VAL_SCALED - 1)
#define SCALE_Q_UP	1.125
#define SCALE_Q_DN	0.9375

typedef struct {
	int size;
	int num_of_val[MAX_VAL_SCALED];

	// used in fiddle:
	int dD_up,dD_dn,dR_up,dR_dn;
	double RoD_dn,RoD_up;
} bandInfo;

int distortion(int *num_of_val,double quantizer);
void infoBand(double *ptr,int w,int h,int fullw,bandInfo *bi);
ulong packedQuantizedImageSize(imageFloat *imf,coder *coder_template,int levels,float *quantizers);
ulong packedQuantizedImageStopErr(imageFloat *imf,coder *coder_template,int levels,double quantizer,int stopSize);

/*******

seekStoppedQ : scale the quantizers[] to get a desired rate.

	this routine is imperfect, in that we almost always miss the target by
		about 100 bytes.  This is *not* a failure of the routine, but
		actually a failure of the concept : sometimes you just don't get
		rate changes when you move the quantizers a teeny bit - the image
		is not floating-point.

********/

#define MIN_STEP	0.1
#define MAX_SEEK_Q	100

void seekStoppedQuantizers_Fast(imageFloat *imF,int levels,float * quantizers,int stopSize,
	coder *coder_template)
{
//int nextErr_up,nextErr_dn,curErr;
int i,nbands;
double L,R,Lold,Rold,Lold_old,Rold_old;
int L_y,R_y,Lold_y,Rold_y;
double Lslope,Rslope,last_guess,guess;

#if 0	/** generate a plot **/
	if ( 1 ) {
		double sizer = 1.0 / imF->tot_size;
		for(L=1.0;L<MAX_SEEK_Q;L += MIN_STEP) {
			L_y = packedQuantizedImageStopErr(imF,coder_template,levels,L,stopSize);
			printf("%2.2f %f\n",L,L_y*sizer);
		}
		return;
	}
#endif

/******************
****
*		this is an implementation of the tangent-intersection search.
*			it converges in log(N) time.
		Unfortunately it only works on data whose second derivative has
			the same sign everywhere, and if you run the plots above you
			see that's not us !
		
		this search is like a binary search; we start with a L and R
			which we hope are on either side of the minimum.  We find
			the tangent at each, then the intersection of the tangents.
		This intersection is the "guess".
		We then contract L & R to converge towards the guess.

		There is one subtlety: after contraction we may have done a
			bad step, in which case the two tangets will have the same
*			sign of slope (they should always have opposite sign,
*			indicating the trough or hill).  When this happens we try
*			to "reset" to resume the search.
**
**	->	This algorithm is useless for me, because the actually shape
**			of Error(Quantizer) is nearly chaotic.
***
 **************/

	nbands=3*levels+1;

	Lold = 1.0;
	Rold = MAX_SEEK_Q;

	Lold_y = packedQuantizedImageStopErr(imF,coder_template,levels,Lold,stopSize);
	Rold_y = packedQuantizedImageStopErr(imF,coder_template,levels,Rold,stopSize);

	last_guess = guess = (Lold + Rold) * 0.5;
	
	for(;;) {

		last_guess = guess;
		L = (Lold + guess)*0.5;
		R = (Rold + guess)*0.5;
	
	resetted:

		L_y = packedQuantizedImageStopErr(imF,coder_template,levels,L,stopSize);
		R_y = packedQuantizedImageStopErr(imF,coder_template,levels,R,stopSize);

		Lslope = (L_y - Lold_y)/(L - Lold);
		Rslope = (R_y - Rold_y)/(R - Rold);

		fprintf(stderr,"Lold=%f, L=%f, guess=%f, R=%f, Rold=%f\n",Lold,L,guess,R,Rold);
		fprintf(stderr,"Lold_y=%d, L_y=%d, R_y=%d, Rold_y=%d\n",Lold_y,L_y,R_y,Rold_y);

		if ( Lslope > 0 ) {	/** screwed up, must re-try **/
			errputs("warning : reset left!");
			R = Lold;
			Rold = L;
			L = (Lold + Lold_old)*0.5;
			Lold = Lold_old;
			if ( L == Lold || R == Rold ) {
				errputs("warning : step size is zero; exiting");
				break;
			}
			guess = (L + R) * 0.5;
			goto resetted;
		} else if ( Rslope < 0 ) {
			errputs("warning : reset right!");
			L = Rold;
			Lold = R;
			R = (Rold + Rold_old)*0.5;
			Rold = Rold_old;
			if ( L == Lold || R == Rold ) {
				errputs("warning : step size is zero; exiting");
				break;
			}
			guess = (L + R) * 0.5;
			goto resetted;
		}

		guess = (Lslope * L - Rslope * R + R_y - L_y)/(Lslope - Rslope);

		if ( fabs(last_guess - guess) < MIN_STEP ) {
			break;
		}

		Lold_old = Lold;	Lold = L;	Lold_y = L_y;
		Rold_old = Rold;	Rold = R;	Rold_y = R_y;	
	}

	fprintf(stderr,"chose : %f\n",guess);

	for(i=0;i<nbands;i++) quantizers[i] = (float) guess;
}

void seekStoppedQuantizers_Slow(imageFloat *imF,int levels,float * quantizers,int stopSize,
	coder *coder_template)
{
double Q,best_Q;
ulong err,best_err,last_err;
int i;
image *im_work;

	errputs("doing seek slow...");

	best_err = LONG_MAX; best_Q = 1.0;

#if 0
	for(Q=1.0;Q<MAX_SEEK_Q;Q += MIN_STEP) {
		err = packedQuantizedImageStopErr(imF,coder_template,levels,Q,stopSize);
		if ( err < best_err ) {
			best_err = err;
			best_Q = Q;
		}
	}
#else	/** with a local copy of StopErr **/

	if ( (im_work = newImageFromFloat(imF)) == NULL ) errexit("copyimage failed");

	last_err =0;
	for(Q=1.0;Q<MAX_SEEK_Q;Q += MIN_STEP) {
		int p,r,qv,v;
		double *dp,f,dv;
		double quantme;

		fprintf(stderr,"."); fflush(stderr);

		quantizeBandsU(imF,im_work,levels,Q);
		err = packedImageStopErr(im_work,coder_template,levels,stopSize);

		quantme = 1.0 / Q;

		v = (int)(LONG_MAX*quantme*quantme);
		if ( err >= (ulong)v ) err = LONG_MAX;
		else err = (ulong)(err*Q*Q);

		for(p=0;p<imF->planes;p++) {
			dp = imF->data[p][0];
			for(r= imF->plane_size;r--;) {
				f = *dp++; if ( f < 0 ) f = -f;
				qv = (int)(f * quantme);
				if ( qv == 0 ) dv = 0;
				else dv = ((double)qv + 0.5) * Q;
				err += (ulong)((dv - f)*(dv - f) + 0.5);
			}
		}

		if ( err < best_err ) {
			if ( err >= last_err ) { /* make sure it's stable */
				best_err = err;
				best_Q = Q;
			}
		}
		last_err = err;
	}

	printf("chose Q = %f , best err = %d\n",best_Q,best_err);

	freeImage(im_work);
#endif

	for(i=0;i<=3*levels;i++) quantizers[i] = (float)best_Q;
}

void fiddleInfoBand(bandInfo *bic,double quantizer,float *quant_work,float *quant_spot,int R_cur,
	imageFloat *imF,coder *coder_template,int levels);

void fiddleQuantizers(imageFloat *imF,int levels,float * quantizers,
	coder *coder_template)
{
int nbands,b,p,l,best_up,best_dn,dR,dD,best_dD;
int R_cur,R_new,R_orig;
double **rows;
bool didFiddle;
double best_RoD;
bandInfo *bic;
bandInfo * bi = NULL; //alloc'ed
float *quant_work;

	nbands = 3*levels + 1;

/**********
	<> there's still some screw-up in the "distortion" measure
		where we think the distortion is going down, but it
		actually goes *UP* .  In fact, the distortion almost
		always goes up as a result of this fiddling, even
		though we supposedly gaurantee it goes down. :(

	A classic example :

		barb.256.raw 256 256 -tw -qu20 -s1
		barb.256.raw      :   65536 ->    8192 =  1.000 bpb =  8.000 to 1
		error: av= 5.03,max= 45,mse= 45.528,rmse= 6.75,psnr= 31.58

			got option: fiddle quantizers
		fiddle : band 1 up, 7 down
		fiddle : got dR = 22, dD = -17365
		fiddle : band 1 up, 8 down
		fiddle : got dR = -10, dD = -11373
		barb.256.raw      :   65536 ->    8202 =  1.001 bpb =  7.990 to 1
		error: av= 5.05,max= 46,mse= 46.232,rmse= 6.80,psnr= 31.52

	the "dR" estimate is good, but it claims we made a huge distortion
	improvement, while in reality we made the distortion WORSE !

**********/

	if ( (bi = newarray(bandInfo,nbands)) == NULL )
		errexit("malloc failed");

	if ( (quant_work = newarray(float,nbands)) == NULL )
		errexit("malloc failed");

	/** fiddle needs the infoBands to compute the distortions quickly **/

	for(p=0;p<imF->planes;p++) {
		rows = imF->data[p]; b=0;
		for (l = levels; l > 0; l--) {
			int sizeX,sizeY;

			sizeX = imF->width >> l;
			sizeY = imF->height >> l;

			if (l == levels)
				infoBand(rows[0], 		sizeX, sizeY, imF->width, &bi[b++]);

			infoBand(rows[0] + sizeX, 	sizeX, sizeY, imF->width, &bi[b++]);
			infoBand(rows[sizeY], 		sizeX, sizeY, imF->width, &bi[b++]);
			infoBand(rows[sizeY]+sizeX,	sizeX, sizeY, imF->width, &bi[b++]);
		}
	}

	errputs("fiddle : starting");

	R_orig = R_cur = packedQuantizedImageSize(imF,coder_template,levels,quantizers);

#if 0
	maxErr = (imF->tot_size) >> 11;	if ( maxErr < 5 ) maxErr = 5;
	R_orig += maxErr;
#endif

	/** compute current distortions **/
	for(b=0;b<nbands;b++) {
		bic = &bi[b];
		memcpy(quant_work,quantizers,sizeof(float)*nbands);
		fiddleInfoBand(&bi[b],quantizers[b],quant_work,&quant_work[b],
			R_cur,imF,coder_template,levels);
	}

	do {
		didFiddle = false;

		/** find the best RoD for increasing a quantizer **/
		best_RoD = 0; best_up = 0;
#ifdef NEVER_QUANT_LL
		for(b=1;b<nbands;b++) {
#else
		for(b=0;b<nbands;b++) {
#endif
			bic = &bi[b];
			if ( bic->RoD_up > best_RoD ) {
				best_RoD = bic->RoD_up; best_up = b;
			}
		}

		/** now find a way to decrease a quantizer so that there is
			no net rate change, but an improved distortion **/

		best_dD = 0; best_dn = -1;
#ifdef NEVER_QUANT_LL
		for(b=1;b<nbands;b++) {
#else
		for(b=0;b<nbands;b++) {
#endif
			if ( b == best_up ) continue; /** can't do up & down on same band **/
			bic = &bi[b];
			dR = bi[best_up].dR_up + bic->dR_dn;
			dD = bi[best_up].dD_up + bic->dD_dn;
			R_new = R_cur + dR;
			if ( R_new < R_orig && dD < best_dD ) {
				best_dn = b; best_dD = dD;
			}
		}

		if ( best_dD < 0 ) {
			didFiddle = true;
			dR = bi[best_up].dR_up + bi[best_dn].dR_dn;
			dD = bi[best_up].dD_up + bi[best_dn].dD_dn;
			R_cur += dR;

			printf("fiddle : band %d up, %d down\n",best_up,best_dn);
			printf("fiddle : got dR = %d, dD = %d\n",dR,dD);

			/** must now update the changed entries **/

			quantizers[best_up] *= SCALE_Q_UP;

			memcpy(quant_work,quantizers,sizeof(float)*nbands);
			fiddleInfoBand(&bi[best_up],quantizers[best_up],quant_work,&quant_work[best_up],
				R_cur,imF,coder_template,levels);

			if ( quantizers[best_dn] > 1 ) {
				quantizers[best_dn] *= SCALE_Q_DN;

				memcpy(quant_work,quantizers,sizeof(float)*nbands);
				fiddleInfoBand(&bi[best_dn],quantizers[best_dn],quant_work,&quant_work[best_dn],
					R_cur,imF,coder_template,levels);
			}
		}

	} while ( didFiddle );

	errputs("fiddle : done");

	free(quant_work);
	free(bi);

}

void fiddleInfoBand(bandInfo *bic,double quantizer,float *quant_work,float *quant_spot,int R_cur,
	imageFloat *imF,coder *coder_template,int levels)
{
int D_cur;

	D_cur		= distortion(bic->num_of_val,quantizer);
	bic->dD_up	= distortion(bic->num_of_val,quantizer*SCALE_Q_UP) - D_cur;
	if ( quantizer <= 1 ) bic->dD_dn = 0;
	else bic->dD_dn	= distortion(bic->num_of_val,quantizer*SCALE_Q_DN) - D_cur;

	*quant_spot = (float)(quantizer * SCALE_Q_UP);

	bic->dR_up = packedQuantizedImageSize(imF,coder_template,levels,quant_work) - R_cur;

	if ( quantizer <= 1 ) {
		bic->dR_dn = 0;
	} else {
		*quant_spot = (float)(quantizer * SCALE_Q_DN);

		bic->dR_dn = packedQuantizedImageSize(imF,coder_template,levels,quant_work) - R_cur;
	}

	/** dD_up > 0 and dR_up < 0 **/
	/** dD_dn < 0 and dR_dn > 0 **/

	if ( bic->dD_up <= 0 ) bic->RoD_up = - (bic->dR_up<<16);
	else	bic->RoD_up = - (bic->dR_up)/(double)(bic->dD_up);

	if ( bic->dD_dn >= 0 ) bic->RoD_dn = - (bic->dR_dn<<16);
	else	bic->RoD_dn = - (bic->dR_dn)/(double)(bic->dD_dn);
}

void infoBand(double *ptr,int w,int h,int fullw,bandInfo *bi)
{
int x,y,rowpad = fullw-w;
int v;
double val;

	bi->size = w*h;

	for(y=0;y<h;y++) {
		for(x=0;x<w;x++) {
			val = *ptr++;
			if ( val < 0 ) val = - val;
			if ( val >= MAX_VAL ) bi->num_of_val[TOP_VAL_SCALED] ++;
			else { 
				v = (int)(val * VAL_SCALE + 0.5);
				bi->num_of_val[v] ++;
			}
		}
		ptr += rowpad;
	}
}

ulong packedQuantizedImageSize(imageFloat *imf,coder *coder_template,int levels,float *quantizers)
{
image *im_work;
ulong size;

	if ( (im_work = newImageFromFloat(imf)) == NULL ) errexit("copyimage failed");
	quantizeBands(imf,im_work,levels,quantizers);
	size = packedImageSize(im_work,coder_template,levels);
	freeImage(im_work);

return size;
}

ulong packedQuantizedImageStopErr(imageFloat *imf,coder *coder_template,int levels,double quantizer,int stopSize)
{
image *im_work;
ulong err,maxerr;
int p,r,qv,nbands,i;
double *dp,f,dv;
double quantme;
float *quant_work; //alloced

	nbands = 3*levels+1;

	if ( (quant_work = newarray(float,nbands)) == NULL )
		errexit("malloc failed");

	for(i=0;i<nbands;i++) quant_work[i] = (float) quantizer;

	if ( (im_work = newImageFromFloat(imf)) == NULL ) errexit("copyimage failed");
	quantizeBands(imf,im_work,levels,quant_work);
	err = packedImageStopErr(im_work,coder_template,levels,stopSize);
	freeImage(im_work);

	/** this doesn't count the error from the quantizing !!! **/

	quantme = 1.0 / quantizer;

	maxerr = (ulong) ((double)ULONG_MAX * quantme * quantme);
	if ( err > maxerr ) err = LONG_MAX;
	else err = (ulong)(err*quantizer*quantizer);

	for(p=0;p<imf->planes;p++) {
		dp = imf->data[p][0];
		for(r= imf->plane_size;r--;) {
			f = *dp++; if ( f < 0 ) f = -f;
			qv = (int)(f * quantme);
			if ( qv == 0 ) dv = 0;
			else dv = ((double)qv + 0.5) * quantizer;
			err += (ulong)((dv - f)*(dv - f) + 0.5);
		}
	}

	free(quant_work);

return err;
}

int distortion(int *num_of_val,double quantizer)
{
double invquant,t,val,D;
int qv,n,v;

	invquant = 1.0 / quantizer;

	D = 0;
	for(v=1;v<TOP_VAL_SCALED;v++) {
		n = num_of_val[v];
		if ( n == 0 ) continue;
		val = (double)v*INV_VAL_SCALE;
#if 0
	/** this is JPEG-standard (ESZZ) quantizer ,
	**/
		qv = (int)(val * invquant + 0.5); // quantize
		t = val - (qv * quantizer);	// dequantize & get difference
#else
	/** this is the wavelet-common DeadZone quantizer
	**/
		qv = (int)(val * invquant);
		if ( qv == 0 ) t = val;
		else t = val - ((qv + 0.5)*quantizer);
#endif
		D += n*t*t;
	}
	D += (num_of_val[TOP_VAL_SCALED] * quantizer * quantizer)/4;	// maximum error on these

return (int)D;
}

/***************************************************************** $$

"dead zone quantizers" :

	quantized = val * (1.0/quantizer)

	val = sign * floor( quantizer * ( abs(val) + 0.5 ) );

	(btw, Intel rounds negative floats towards zero)

-----------------

	mussing with these in any way introduces a lot of error
		(for example, adding 0.5 to the quantized value to round it
		in the quantization step)

see quantizers.txt

**********************/

void dequantizeBandDZ(int *fmptr,double *toptr,int w,int h,int fullw,double factor)
{
int x,y,rowpad = fullw-w;
int sign,v;

	for(y=0;y<h;y++) {
		for(x=0;x<w;x++) {
			v = *fmptr++;
			if ( v == 0 ) { 
				*toptr++ = 0; 
			} else {
				if ( v < 0 ) { sign = -1; v = -v; }
				else sign = 1;
				*toptr++ = sign * factor * ((double)v + 0.5);
			}
		}
		fmptr += rowpad;
		toptr += rowpad;
	}
}

void quantizeBandDZ(double *fmptr,int *toptr,int w,int h,int fullw,double factor)
{
int x,y,rowpad = fullw-w;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国精品国产| 国产欧美综合在线观看第十页| 欧美性欧美巨大黑白大战| 日韩av中文字幕一区二区| 91福利国产精品| 亚洲午夜视频在线| 欧美日韩黄色一区二区| 日韩电影在线一区二区| 日韩一区二区三区四区五区六区 | 亚洲日本电影在线| 国产传媒久久文化传媒| 欧美mv日韩mv| 97精品国产97久久久久久久久久久久| 久久看人人爽人人| 国产精品美女视频| 欧美一区二区精品| 91亚洲国产成人精品一区二区三| 亚洲第一av色| 精品国产制服丝袜高跟| 成人免费视频视频| 秋霞国产午夜精品免费视频| 中文字幕av一区二区三区免费看 | 成人免费视频视频| 开心九九激情九九欧美日韩精美视频电影 | a美女胸又www黄视频久久| 亚洲男同1069视频| 国产欧美1区2区3区| 5858s免费视频成人| 成a人片亚洲日本久久| 另类的小说在线视频另类成人小视频在线 | 日韩欧美国产系列| 91免费看视频| 欧美性猛交xxxx乱大交退制版| 国产精品一卡二卡在线观看| 免费看精品久久片| 日本网站在线观看一区二区三区| 一区二区在线观看免费| 狠狠色综合播放一区二区| 免费一级片91| 26uuu精品一区二区三区四区在线| 色美美综合视频| 奇米在线7777在线精品| 性欧美疯狂xxxxbbbb| 亚洲制服欧美中文字幕中文字幕| 国产精品丝袜91| 从欧美一区二区三区| 不卡的av在线播放| 91视频xxxx| 欧美乱妇15p| 亚洲视频一二三| 亚洲美女精品一区| 日韩精品每日更新| 午夜精品成人在线| 成人激情文学综合网| 欧美综合久久久| 美女一区二区视频| 成人h版在线观看| 欧美福利电影网| 国产精品理伦片| 国模一区二区三区白浆| 91丝袜美腿高跟国产极品老师| 成人免费看黄yyy456| 激情文学综合丁香| 99精品视频一区二区三区| 日韩一级片网站| 有坂深雪av一区二区精品| 欧美aaaaa成人免费观看视频| 国产成人精品免费网站| 色先锋久久av资源部| 久久―日本道色综合久久| 亚洲第一精品在线| 在线观看日产精品| 国产精品色呦呦| 国产在线不卡视频| 日韩精品中午字幕| 久久99精品久久久| 日韩一级欧美一级| 天天做天天摸天天爽国产一区| 色偷偷一区二区三区| 国产精品丝袜一区| 99精品久久久久久| 国产精品国产精品国产专区不蜜| 国产成人av电影在线观看| 欧美日韩亚洲丝袜制服| 一区二区免费看| 欧美美女一区二区在线观看| 日韩黄色在线观看| 26uuu国产电影一区二区| 国产成人欧美日韩在线电影| 国产精品久久久久久久久动漫| 成人av在线资源网站| 亚洲日穴在线视频| 在线免费观看一区| 奇米色777欧美一区二区| 国产日产欧产精品推荐色 | 日本视频在线一区| 国产日韩精品视频一区| 91浏览器入口在线观看| 欧美日韩精品一区二区天天拍小说 | 色菇凉天天综合网| 午夜不卡av免费| 久久久久99精品一区| 大白屁股一区二区视频| 久久机这里只有精品| 亚洲色图清纯唯美| 欧美videossexotv100| 欧美在线免费视屏| 成人免费观看视频| 蜜臀av性久久久久蜜臀aⅴ流畅| 久久久久久久性| 精品美女一区二区| 欧美精品自拍偷拍| 在线视频国产一区| 欧美在线制服丝袜| 91久久一区二区| 日本韩国欧美三级| 99久久精品国产导航| 成人午夜激情影院| k8久久久一区二区三区| 从欧美一区二区三区| 风流少妇一区二区| 成人免费观看男女羞羞视频| 玖玖九九国产精品| 久久成人免费网| 国产成人av一区二区三区在线| 午夜电影网一区| 亚洲成a人片在线不卡一二三区| 亚洲人成网站精品片在线观看| 中文字幕亚洲区| 亚洲精品中文在线影院| 视频在线观看一区二区三区| 天天综合色天天综合色h| 精品中文字幕一区二区| 国产盗摄女厕一区二区三区| 91丨porny丨中文| 欧美高清性hdvideosex| xf在线a精品一区二区视频网站| 国产视频一区二区在线| 亚洲精品成a人| 日韩国产一二三区| 高清日韩电视剧大全免费| 在线观看视频一区二区欧美日韩| 精品乱码亚洲一区二区不卡| 一区二区视频在线看| 免播放器亚洲一区| gogo大胆日本视频一区| 欧美精品自拍偷拍动漫精品| 亚洲精品一区二区三区香蕉| 亚洲一区二区三区视频在线| 高清不卡一区二区| 欧美亚洲免费在线一区| 久久久欧美精品sm网站| 日韩毛片精品高清免费| 国产精品亚洲人在线观看| 五月婷婷综合在线| 色乱码一区二区三区88| 亚洲天堂成人在线观看| 成人视屏免费看| 国产99久久久国产精品| 精品国产亚洲在线| 国产美女在线观看一区| 日韩天堂在线观看| 免费美女久久99| 久久免费精品国产久精品久久久久| 午夜激情一区二区三区| 日韩欧美一区二区在线视频| 日韩在线卡一卡二| 欧美成人性福生活免费看| 麻豆91在线观看| 欧美精品一区二| 成人激情图片网| 亚洲三级在线免费| 欧美一区二区在线视频| 久久看人人爽人人| 99久久精品免费| 日日欢夜夜爽一区| 欧美日韩黄色一区二区| 天天色综合成人网| 国产亚洲精品中文字幕| 色8久久精品久久久久久蜜| 亚洲国产aⅴ天堂久久| 欧美成人video| 91福利社在线观看| 亚洲精品一区二区在线观看| jlzzjlzz亚洲日本少妇| 久久精品国内一区二区三区| 国产精品国产三级国产a| 欧美成人vps| 欧美高清视频一二三区 | 国产精品国产a| 欧美xxxx老人做受| 亚洲成av人片一区二区梦乃| 国产性做久久久久久| 91福利社在线观看| 欧洲av在线精品| 91片在线免费观看| 高清免费成人av| 国产盗摄一区二区三区| 激情综合色播五月| 久久66热re国产|