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

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

?? fdct_usfft.cpp

?? This directory includes matlab interface of the curvelet transform using usfft. Basic functions
?? CPP
字號:
/*  Copyright (C) 2004 Caltech  Written by Lexing Ying*/#include "fdct_usfft.hpp"#include "fdct_usfft_inline.hpp"FDCT_USFFT_NS_BEGIN_NAMESPACE//------------------------------------int fdct_usfft_fftL(int N1, int N2, CpxOffMat& x, CpxOffMat& O);int fdct_usfft_sepscale(int N1, int N2, int nbscales, int ac, CpxOffMat& O, vector<CpxOffMat>& Xhghs);int fdct_usfft_sepangle(double XL1, double XL2, int nbangles, CpxOffMat& Xhgh, vector<CpxOffMat>& msc);int fdct_usfft_ifftS(vector<CpxOffMat>& msc, vector<CpxOffMat>& csc);int fdct_usfft_wavelet(CpxOffMat& Xhgh, vector<CpxOffMat>& csc);int fdct_usfft_1dinterp(DblNumMat& off, DblNumMat& wgt, CpxOffVec& val, CpxNumMat& res,					  map<int, fftw_plan>& f1map, map<int, fftw_plan>& b1map);//------------------------------------int fdct_usfft( int N1, int N2, int nbscales, int nbangles_coarse, int ac, CpxOffMat& x, vector< vector<CpxOffMat> >& c){  assert(N1==x.m() && N2==x.n());  int F1 = N1/2;  int F2 = N2/2;    //1. fftL  CpxOffMat O(N1, N2, -F1, -F2);  fdct_usfft_fftL(N1, N2, x, O);    //2. seperate scale  vector<CpxOffMat> Xhghs(nbscales);  fdct_usfft_sepscale(N1, N2, nbscales, ac, O, Xhghs);    //3. work on each scale  if(ac==1) {	 //nbangles	 vector<int> nbangles(nbscales);	 nbangles[0] = 1;	 for(int sc=1; sc<nbscales; sc++)		nbangles[sc] = nbangles_coarse * pow2( int(ceil(double(sc-1)/2)) );	 //c	 c.resize(nbscales);	 for(int sc=0; sc<nbscales; sc++)		c[sc].resize( nbangles[sc] );	 //finest+mid levels	 double XL1 = 4.0*N1/3.0;  double XL2 = 4.0*N2/3.0; //range	 for(int sc=nbscales-1; sc>0; sc--) {		vector<CpxOffMat> msc(nbangles[sc]);		fdct_usfft_sepangle(XL1, XL2, nbangles[sc], Xhghs[sc], msc);		fdct_usfft_ifftS(msc, c[sc]);		XL1 = XL1/2;	 XL2 = XL2/2;	 }	 //coarest level	 fdct_usfft_wavelet(Xhghs[0], c[0]);  } else {	 //nbangles	 vector<int> nbangles(nbscales);	 nbangles[0] = 1;	 for(int sc=1; sc<nbscales-1; sc++)		nbangles[sc] = nbangles_coarse * pow2( int(ceil(double(sc-1)/2)) );	 nbangles[nbscales-1] = 1;	 //c	 c.resize(nbscales);	 for(int sc=0; sc<nbscales; sc++)		c[sc].resize( nbangles[sc] );	 //finest level	 fdct_usfft_wavelet(Xhghs[nbscales-1], c[nbscales-1]);	 //mid levels	 double XL1 = 2.0*N1/3.0;  double XL2 = 2.0*N2/3.0; //range	 for(int sc=nbscales-2; sc>0; sc--) {		vector<CpxOffMat> msc(nbangles[sc]);		fdct_usfft_sepangle(XL1, XL2, nbangles[sc], Xhghs[sc], msc);		fdct_usfft_ifftS(msc, c[sc]);		XL1 = XL1/2;	 XL2 = XL2/2;	 }	 //coarest level	 fdct_usfft_wavelet(Xhghs[0], c[0]);  }  return 0;}//--------------------int fdct_usfft_fftL(int N1, int N2, CpxOffMat& x, CpxOffMat& O){  //move zero freq at front  int F1 = N1/2;  int F2 = N2/2;  //1. ifftshift  CpxNumMat T(N1, N2);  fdct_usfft_ifftshift(N1, N2, F1, F2, x, T);   //2. do fft and scale  fftwnd_plan p = fftw2d_create_plan(N2, N1, FFTW_FORWARD, FFTW_ESTIMATE | FFTW_IN_PLACE);  fftwnd_one(p, (fftw_complex*)T.data(), NULL);  fftwnd_destroy_plan(p);  double sqrtprod = sqrt(double(N1*N2));  for(int i=0; i<N1; i++)	 for(int j=0; j<N2; j++)		T(i,j) /= sqrtprod;  //3. fftshift  O.resize(N1, N2, -F1, -F2);  fdct_usfft_fftshift(N1, N2, F1, F2, T, O);  return 0;}//--------------------int fdct_usfft_sepscale(int N1, int N2, int nbscales, int ac, CpxOffMat& O, vector<CpxOffMat>& Xhghs){  //-----------------------------------------------------  //unfold if necessary  CpxOffMat X;  if(ac==1) {	 //--------------------------	 double XL1 = 4.0*N1/3.0;  double XL2 = 4.0*N2/3.0; //range	 int XS1, XS2;  int XF1, XF2;  double XR1, XR2;  fdct_usfft_rangecompute(XL1, XL2, XS1, XS2, XF1, XF2, XR1, XR2);	 IntOffVec t1(XS1, -XF1);	 for(int i=-XF1; i<-XF1+XS1; i++)		if(     i<-N1/2) t1(i) = i+int(N1);		else if(i>=N1/2) t1(i) = i-int(N1);		else t1(i) = i;						 	 IntOffVec t2(XS2, -XF2);	 for(int i=-XF2; i<-XF2+XS2; i++)		if(     i<-N2/2) t2(i) = i+int(N2);		else if(i>=N2/2) t2(i) = i-int(N2);		else t2(i) = i;	 X.resize(XS1, XS2, -XF1, -XF2);	 for(int i=-XF1; i<-XF1+XS1; i++)		for(int j=-XF2; j<-XF2+XS2; j++)		  X(i,j) = O(t1(i), t2(j));	 DblOffMat lowpass(XS1,XS2,-XF1,-XF2);	 fdct_usfft_lowpasscompute(XL1, XL2, lowpass); //compute the low pass filter	 for(int i=-XF1; i<-XF1+XS1; i++)		for(int j=-XF2; j<-XF2+XS2; j++)		  X(i,j) *= lowpass(i,j);  } else {	 //--------------------------	 X = O;  }  //-----------------------------------------------------  //seperate  Xhghs.resize(nbscales);  double XL1 = 4.0*N1/3.0;  double XL2 = 4.0*N2/3.0; //range  //int XS1, XS2;  int XF1, XF2;  double XR1, XR2;  fdct_usfft_rangecompute(XL1, XL2, XS1, XS2, XF1, XF2, XR1, XR2);  for(int sc=nbscales-1; sc>0; sc--) {	 double XL1n = XL1/2;	 double XL2n = XL2/2;	 int XS1n, XS2n;  int XF1n, XF2n;  double XR1n, XR2n;	 fdct_usfft_rangecompute(XL1n, XL2n, XS1n, XS2n, XF1n, XF2n, XR1n, XR2n);	 //get filters	 DblOffMat lowpass(XS1n, XS2n, -XF1n, -XF2n);	 fdct_usfft_lowpasscompute(XL1n, XL2n, lowpass);	 DblOffMat hghpass(XS1n, XS2n, -XF1n, -XF2n);	 for(int i=-XF1n; i<-XF1n+XS1n; i++)		for(int j=-XF2n; j<-XF2n+XS2n; j++)		  hghpass(i,j) = sqrt(1-lowpass(i,j)*lowpass(i,j));	 //get Xhgh	 CpxOffMat Xhgh(X);	 for(int i=-XF1n; i<-XF1n+XS1n; i++)		for(int j=-XF2n; j<-XF2n+XS2n; j++) {		  //Xhgh(i,j).re *= hghpass(i,j);		  Xhgh(i,j).im *= hghpass(i,j);		  Xhgh(i,j) *= hghpass(i,j);		}	 CpxOffMat Xlow(XS1n, XS2n, -XF1n, -XF2n);	 for(int i=-XF1n; i<-XF1n+XS1n; i++)		for(int j=-XF2n; j<-XF2n+XS2n; j++) {		  //Xlow(i,j).re = X(i,j).re * lowpass(i,j);		  Xlow(i,j).im = X(i,j).im * lowpass(i,j);		  Xlow(i,j) = X(i,j) * lowpass(i,j);		}	 //set into vector	 Xhghs[sc] = Xhgh;	 X = Xlow;	 XL1 = XL1/2;	 XL2 = XL2/2;  }  Xhghs[0] = X;  return 0;}//--------------------int fdct_usfft_sepangle(double XL1, double XL2, int nbangles, CpxOffMat& Xhgh, vector<CpxOffMat>& msc){  //int XS1, XS2;  int XF1, XF2;  double XR1, XR2;  fdct_usfft_rangecompute(XL1, XL2, XS1, XS2, XF1, XF2, XR1, XR2);  map<int, fftw_plan> f1map; //forward 1d map, IN_PLACE  map<int, fftw_plan> b1map; //backward 1d map, IN_PLACE    //allocate msc  msc.resize(nbangles);  int nbquadrants = 4;  int nd = nbangles / 4;  int wcnt = 0;    CpxOffMat Xhghb(Xhgh);  double XL1b = XL1;  double XL2b = XL2;    int qvec[] = {2,1,0,3};  for(int qi=0; qi<nbquadrants; qi++) {	 int q = qvec[qi];	 //rotate data  	 fdct_usfft_rotate_forward(q, XL1b, XL2b, XL1, XL2);	 XL1 = abs(XL1);	 XL2 = abs(XL2);	 fdct_usfft_rotate_forward(q, Xhghb, Xhgh);	 //  sample using USFFT for each line	 int XS1, XS2;  int XF1, XF2;  double XR1, XR2;  fdct_usfft_rangecompute(XL1, XL2, XS1, XS2, XF1, XF2, XR1, XR2);	 //double XW1 = XL1/nd;	 double XW2 = XL2/nd;	 double xs = XR1/4;		double xe = XR1;	 int xf = int(ceil(xs));	 //xn,yn, make them odd	 int xn = int(ceil(xe-xs));	 int yn = 2*int(ceil(XW2))+1;	 if(xn%2==0) xn++;	 if(yn%2==0) yn++;	 int xh = xn/2;	 int yh = yn/2;	 //allocate temporary space for tsc	 vector<CpxOffMat> tsc(nd);	 for(int w=0; w<nd; w++)		tsc[w].resize(xn,yn,-xh,-yh);	 //gather weighted samples for each wedges	 for(int xcur=xf; xcur<xe; xcur++) { //for each line		DblNumMat ysft(yn, nd); //store shifted positions		DblNumMat wsft(yn, nd); //store shifted weights		for(int w=0; w<nd; w++) {		  double ys = -XR2 + (w-0.5)*XW2;		  double ym = -XR2 + (w+0.5)*XW2;		  double ye = -XR2 + (w+1.5)*XW2;		  double s0 = ys/XR1;		  double s2 = ym/XR1;		  double s4 = ye/XR1;		  for(int yid=0; yid<yn; yid++) {			 double tmp = (yid-yh) + s2*xcur; //shifting operator, 			 double pou;			 if(tmp<s2*xcur) { //below				double l,r; fdct_usfft_window( (tmp/xcur-s0)/(s2-s0), l, r);				  pou = l;			 } else {				double l,r; fdct_usfft_window( (tmp/xcur-s2)/(s4-s2), l, r);				  pou = r;			 }			 ysft(yid,w) = tmp;			 wsft(yid,w) = pou;		  }		}		//interpolation with weights (usfft or usfft_simple)		CpxOffVec val(XS2, -XF2); 		////CpxOffVec val(XS2+1, -XF2-1);  //value for the current column, the first element is zero		for(int i=-XF2; i<-XF2+XS2; i++)		  val(i) = Xhgh(xcur,i);		CpxNumMat res(yn, nd);		fdct_usfft_1dinterp(ysft, wsft, val, res, f1map, b1map); //with weights 				int tmpx = xcur%xn;		if(tmpx<-xh) tmpx+=xn;				  if(tmpx>=-xh+xn) tmpx-=xn;		for(int w=0; w<nd; w++)		  for(int yid=0; yid<yn; yid++)			 tsc[w](tmpx,yid-yh) = res(yid,w);	 }//each line	 	 //rotate data back into msc	 for(int w=nd-1; w>=0; w--) {		fdct_usfft_rotate_backward(q, tsc[w], msc[wcnt]);		wcnt++;	 }  } //for loop for quadrant  Xhgh = Xhghb;  XL1 = XL1b;  XL2 = XL2b;  assert(wcnt==nbangles);    for(map<int,fftw_plan>::iterator mit=f1map.begin(); mit!=f1map.end(); mit++) {	 fftw_plan p = (*mit).second;	 fftw_destroy_plan(p);  }  for(map<int,fftw_plan>::iterator mit=b1map.begin(); mit!=b1map.end(); mit++) {	 fftw_plan p = (*mit).second;	 fftw_destroy_plan(p);  }  return 0;}//--------------------int fdct_usfft_ifftS(vector<CpxOffMat>& msc, vector<CpxOffMat>& csc){  typedef pair<int,int> intpair;  map<intpair, fftwnd_plan> planmap;  //do work  csc.resize(msc.size());  for(int w=0; w<msc.size(); w++) {	 //allocate space	 int xn = msc[w].m();	 int yn = msc[w].n();	 int xh = xn/2;	 int yh = yn/2;	 //shift	 CpxNumMat tpdata(xn,yn);	 fdct_usfft_ifftshift(xn,yn,xh,yh,msc[w],tpdata);	 //fft	 map<intpair,fftwnd_plan>::iterator mit=planmap.find( intpair(xn,yn) );	 fftwnd_plan p = NULL;	 if(mit!=planmap.end()) {		p = (*mit).second;	 } else {		p = fftw2d_create_plan(yn, xn, FFTW_BACKWARD, FFTW_ESTIMATE | FFTW_IN_PLACE);		planmap[ intpair(xn,yn) ] = p;	 }	 fftwnd_one(p, (fftw_complex*)tpdata.data(), NULL);	 double sqrtprod = sqrt(double(xn*yn));	 for(int i=0; i<xn; i++)		for(int j=0; j<yn; j++)		  tpdata(i,j) /= sqrtprod;	 //shift	 csc[w].resize(xn,yn,-xh,-yh);	 fdct_usfft_fftshift(xn,yn,xh,yh,tpdata,csc[w]);  }  //delete planners  for(map<intpair,fftwnd_plan>::iterator mit=planmap.begin(); mit!=planmap.end(); mit++) {	 fftwnd_plan p = (*mit).second;	 fftwnd_destroy_plan(p);  }  return 0;}//--------------------int fdct_usfft_wavelet(CpxOffMat& Xhgh, vector<CpxOffMat>& csc){  int N1 = Xhgh.m();  int N2 = Xhgh.n();  int F1 = -Xhgh.s();  int F2 = -Xhgh.t();  CpxNumMat T(N1, N2);  fdct_usfft_ifftshift(N1, N2, F1, F2, Xhgh, T);  fftwnd_plan p = fftw2d_create_plan(N2, N1, FFTW_BACKWARD, FFTW_ESTIMATE | FFTW_IN_PLACE);  fftwnd_one(p, (fftw_complex*)T.data(), NULL);  fftwnd_destroy_plan(p);  double sqrtprod = sqrt(double(N1*N2));  for(int i=0; i<N1; i++)	 for(int j=0; j<N2; j++)		T(i,j) /= sqrtprod;  csc[0].resize(N1, N2, -F1, -F2);  fdct_usfft_fftshift(N1, N2, F1, F2, T, csc[0]);  return 0;}//--------------------int fdct_usfft_1dinterp(DblNumMat& off, DblNumMat& wgt, CpxOffVec& val, CpxNumMat& res,					  map<int, fftw_plan>& f1map, map<int, fftw_plan>& b1map){  if(off.n()<=64) { //SIMPLE INTERPOLATION	 //--------------------------------------------	 int N = val.m();	 int F = -val.s();	 fftw_plan fp = NULL;	 map<int, fftw_plan>::iterator fit = f1map.find(N);	 if(fit!=f1map.end()) {	 fp = (*fit).second;	 } else {	 fp = fftw_create_plan(N, FFTW_FORWARD, FFTW_ESTIMATE | FFTW_IN_PLACE);	 f1map[N] = fp;	 }	 fftw_plan bp = NULL;	 map<int, fftw_plan>::iterator bit = b1map.find(N);	 if(bit!=b1map.end()) {	 bp = (*bit).second;	 } else {	 bp = fftw_create_plan(N, FFTW_BACKWARD, FFTW_ESTIMATE | FFTW_IN_PLACE);	 b1map[N] = bp;	 }	 //CpxOffVec val //right value	 CpxOffVec feq(N, -F); //right freq	 CpxOffVec vvv(N, -F); //new value	 CpxOffVec fff(N, -F); //new freq	 CpxNumVec tmp(N);	 //1. fft_mid val	 fdct_usfft_ifftshift(N, F, val, tmp);	 fftw_one(fp, (fftw_complex*)tmp.data(), NULL); //fft	 double scale = sqrt(double(N));  for(int k=0; k<N; k++)		tmp(k) /= scale; //scaling	 fdct_usfft_fftshift(N, F, tmp, feq); //frequency	 //2. for each wedge, multiply, ifft and put to res 	 int nbwedges = off.n();	 for(int w=0; w<nbwedges; w++) {		for(int k=-F; k<-F+N; k++) {		  double phase = 2.0*M_PI*double(k)/double(N) * off(0,w);		  fff(k) = feq(k) * polar(1.0, phase);		} //new frequency		fdct_usfft_ifftshift(N, F, fff, tmp);		fftw_one(bp, (fftw_complex*)tmp.data(), NULL);		double scale = sqrt(double(N));	 for(int k=0; k<N; k++)		  tmp(k) /= scale; //scaling		fdct_usfft_fftshift(N, F, tmp, vvv); //new value		for(int k=0; k<off.m(); k++) {		  int rk = (k>F) ? k-N : k;		  res(k,w) = vvv(rk) * wgt(k,w);		}	 }  } else { //USFFT INTERPOLATION	 //--------------------------------------------	 int L = 4;	 int D = 16;	 int N = val.m();	 int F = -val.s();	 fftw_plan fp = NULL;	 map<int, fftw_plan>::iterator fit=f1map.find(N);	 if(fit!=f1map.end()) {		fp = (*fit).second;	 } else {	 fp = fftw_create_plan(N, FFTW_FORWARD, FFTW_ESTIMATE | FFTW_IN_PLACE);	 f1map[N] = fp;	 }	 fftw_plan bp = NULL;	 map<int, fftw_plan>::iterator bit = b1map.find(D*N);	 if(bit!=b1map.end()) {	 bp = (*bit).second;	 } else {	 bp = fftw_create_plan(D*N, FFTW_BACKWARD, FFTW_ESTIMATE | FFTW_IN_PLACE);	 b1map[D*N] = bp;	 }	 CpxNumVec tmp(N);	 CpxNumVec exttmp(D*N);	 CpxOffVec feq(N, -F);	 vector<CpxOffVec> extdat(L);	 //1. get freq	 fdct_usfft_ifftshift(N, F, val, tmp);	 fftw_one(fp, (fftw_complex*)tmp.data(), NULL); //here tmp are the real frequencies	 double scale = double(N);	 for(int k=0; k<N; k++) {	 tmp(k) /= scale;	 } //scaling	 fdct_usfft_fftshift(N, F, tmp, feq); //frequency	 //2. extend frequency and get frequencies of derivatives	 extdat[0].resize(D*N, -D*N/2);	 for(int k=-F; k<-F+N; k++) {		extdat[0](k) = feq(k); }	 for(int l=1; l<L; l++) {		extdat[l].resize(D*N, -D*N/2);		for(int k=-F; k<-F+N; k++) {		  extdat[l](k) = extdat[l-1](k) * cpx(0,k);		}	 }	 //3. get derivatives	 for(int l=0; l<L; l++) {		fdct_usfft_ifftshift(D*N, D*N/2, extdat[l], exttmp);		fftw_one(bp, (fftw_complex*)exttmp.data(), NULL);		fdct_usfft_fftshift(D*N, D*N/2, exttmp, extdat[l]);	 }	 //extdat[l] contains the lth derivative	 //4. do tayler for each point	 double step = 2.0* M_PI / double(D*N);	 for(int j=0; j<off.n(); j++)		for(int i=0; i<off.m(); i++) {		  //1. find the grid point on the left, 		  double cof = off(i,j) / double(N) * 2.0*M_PI;		  if(cof<-M_PI)			 cof+= 2.0*M_PI;		  else if(cof>=M_PI)			 cof-= 2.0*M_PI; //collapse into [-pi,pi)		  int ind = int(floor(cof/step));		  ind = min(max(ind, -D*N/2), D*N/2-1);		  double dta = cof-ind*step;		  double pow = 1;		  cpx sum(0.0,0.0);//		  for(int l=0; l<L; l++) {			 sum += extdat[l](ind) * pow;			 pow = pow * dta/(l+1);		  }		  res(i,j) = sum * wgt(i,j);		}  }  return 0;}FDCT_USFFT_NS_END_NAMESPACE

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲美女屁股眼交| 日本一区二区久久| 99精品视频一区| 色一情一伦一子一伦一区| 精品视频一区 二区 三区| 5月丁香婷婷综合| 精品国产乱码久久久久久影片| 国产午夜亚洲精品理论片色戒 | 欧美麻豆精品久久久久久| 欧美日本视频在线| 中文字幕第一区综合| 色综合久久综合网欧美综合网 | 成人丝袜18视频在线观看| 欧美视频完全免费看| 色8久久人人97超碰香蕉987| 日韩精品中文字幕一区| 亚洲国产精品一区二区www在线 | 精品福利一二区| 午夜久久久影院| 久久综合色之久久综合| 国产欧美日韩激情| 日韩精品一二区| 99久久精品费精品国产一区二区| 中文字幕在线不卡一区二区三区| 亚洲一区二区三区在线播放| 久久99精品国产麻豆婷婷| 成人精品视频一区二区三区| 日韩欧美卡一卡二| 亚洲一区中文日韩| 9色porny自拍视频一区二区| 精品久久久久久久一区二区蜜臀| 亚洲精品亚洲人成人网| 国产一区二区调教| 91精品国产综合久久久久久漫画 | 91精品国产品国语在线不卡| 亚洲国产成人午夜在线一区| 久久99在线观看| 欧美美女直播网站| 亚洲精品第1页| www.在线欧美| www.欧美.com| 国产中文字幕一区| 亚洲国产综合在线| 国产亚洲精品中文字幕| 欧美日韩一区二区三区免费看| 久久av中文字幕片| 国产精品电影一区二区三区| 国产传媒一区在线| 国产精品美女视频| 91热门视频在线观看| 亚洲精品日韩综合观看成人91| 欧洲亚洲精品在线| 久久精品国产免费| 91成人在线免费观看| 国产精品91一区二区| 日韩欧美亚洲一区二区| 亚洲国产精品一区二区久久| 51久久夜色精品国产麻豆| 五月综合激情网| 日韩一区二区视频| 国产成人免费在线| 亚洲高清不卡在线观看| 欧美成人在线直播| av成人动漫在线观看| 亚洲成av人片| 五月综合激情婷婷六月色窝| 日韩美女一区二区三区四区| 国产精品996| 日韩中文字幕区一区有砖一区| 久久久国产精品麻豆| 欧美羞羞免费网站| 国产suv一区二区三区88区| 亚洲无人区一区| 久久精品视频在线免费观看| 欧美日本精品一区二区三区| 国产成人精品午夜视频免费| 视频在线在亚洲| 亚洲精品视频在线| 国产精品女主播在线观看| 日韩欧美色综合| 欧美综合亚洲图片综合区| 成人少妇影院yyyy| 国产制服丝袜一区| 麻豆精品在线视频| 五月婷婷激情综合| 亚洲精品第一国产综合野| 国产亚洲污的网站| 91精品国产综合久久久久久久久久| 成人成人成人在线视频| 国产激情一区二区三区| 日产国产高清一区二区三区| 亚洲主播在线观看| 亚洲小说欧美激情另类| 亚洲精品美国一| 国精产品一区一区三区mba视频 | 亚洲国产精品激情在线观看| 99久久精品国产一区二区三区| 一区二区三区在线观看国产| 337p日本欧洲亚洲大胆精品| 在线中文字幕不卡| 91丨porny丨国产| 成人h动漫精品一区二区| 国产精品一二一区| 精品国产网站在线观看| 欧美aaaaa成人免费观看视频| 欧美私人免费视频| 亚洲国产一区二区视频| 69堂精品视频| 亚洲男人的天堂网| 亚洲午夜电影在线观看| 国产欧美日韩麻豆91| 欧美在线观看视频在线| 99re8在线精品视频免费播放| 久久影院午夜片一区| 精品国产乱子伦一区| 日韩欧美国产综合一区| 色妹子一区二区| a在线欧美一区| 成人看片黄a免费看在线| 黄色资源网久久资源365| 欧美午夜精品久久久久久超碰| 欧美三片在线视频观看| 日韩一区二区麻豆国产| 欧美精品一区视频| 亚洲乱码国产乱码精品精可以看| 午夜电影一区二区三区| 精品一区二区三区在线播放| av在线综合网| 精品理论电影在线观看 | 色悠久久久久综合欧美99| 在线精品视频一区二区| 欧美激情中文不卡| 99re这里都是精品| 久久综合色之久久综合| 日韩精品一二三区| 精品国产乱码久久久久久老虎| 日本三级亚洲精品| 久久久久久久久久电影| 亚洲主播在线观看| 国产91露脸合集magnet| 91国偷自产一区二区三区观看| 欧美成人高清电影在线| 亚洲乱码中文字幕综合| 不卡一区二区中文字幕| 亚洲地区一二三色| 制服视频三区第一页精品| 国产精品白丝在线| 六月丁香婷婷色狠狠久久| 欧美在线视频日韩| 国产精品三级视频| 欧美综合在线视频| 久久 天天综合| 午夜精品福利一区二区蜜股av| 欧美精品一区二区三区高清aⅴ | 日韩精品亚洲专区| av不卡免费电影| 国产女主播一区| 国内一区二区在线| 国产日韩一级二级三级| 国产精品一区专区| 久久久91精品国产一区二区三区| 日韩av网站在线观看| 日韩三级高清在线| 久久国产乱子精品免费女| 久久只精品国产| 成人看片黄a免费看在线| 亚洲六月丁香色婷婷综合久久| 欧美日韩在线精品一区二区三区激情| 亚洲在线观看免费视频| 欧美一区二区三区日韩视频| 久久国产精品一区二区| 亚洲黄色录像片| 欧美一区二区在线看| 99久久久久免费精品国产| 国产在线视频精品一区| 午夜a成v人精品| 欧美日本高清视频在线观看| 国产又粗又猛又爽又黄91精品| 中文字幕一区二区视频| 69精品人人人人| av亚洲精华国产精华| 99精品国产一区二区三区不卡| 亚洲午夜电影网| 国产精品灌醉下药二区| 欧美一区二区精品在线| 99久久久精品免费观看国产蜜| 日韩成人午夜电影| 亚洲精品老司机| 中文字幕的久久| 精品国产电影一区二区| 欧美三级中文字幕在线观看| 春色校园综合激情亚洲| 国产原创一区二区| 蜜桃一区二区三区在线| 一区二区三区蜜桃网| 国产精品欧美综合在线| 国产清纯白嫩初高生在线观看91 | 成人av在线影院| 国产剧情一区二区三区| 男女男精品视频网|