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

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

?? preprocess.c

?? 語音濾波源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* Copyright (C) 2003 Epic Games    Written by Jean-Marc Valin   File: preprocess.c   Preprocessor with denoising based on the algorithm by Ephraim and Malah   Redistribution and use in source and binary forms, with or without   modification, are permitted provided that the following conditions are   met:   1. Redistributions of source code must retain the above copyright notice,   this list of conditions and the following disclaimer.   2. Redistributions in binary form must reproduce the above copyright   notice, this list of conditions and the following disclaimer in the   documentation and/or other materials provided with the distribution.   3. The name of the author may not be used to endorse or promote products   derived from this software without specific prior written permission.   THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR   IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES   OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE   DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES   (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR   SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)   HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,   STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN   ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE   POSSIBILITY OF SUCH DAMAGE.*/#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <math.h>#include "speex_preprocess.h"#include "misc.h"#include "smallft.h"#define max(a,b) ((a) > (b) ? (a) : (b))#define min(a,b) ((a) < (b) ? (a) : (b))#ifndef M_PI#define M_PI 3.14159263#endif#define SQRT_M_PI_2 0.88623#define LOUDNESS_EXP 2.5#define NB_BANDS 8#define SPEEX_PROB_START_DEFAULT    0.35f#define SPEEX_PROB_CONTINUE_DEFAULT 0.20f#define ZMIN .1#define ZMAX .316#define ZMIN_1 10#define LOG_MIN_MAX_1 0.86859static void conj_window(float *w, int len){   int i;   for (i=0;i<len;i++)   {      float x=4*((float)i)/len;      int inv=0;      if (x<1)      {      } else if (x<2)      {         x=2-x;         inv=1;      } else if (x<3)      {         x=x-2;         inv=1;      } else {         x=4-x;      }      x*=1.9979;      w[i]=(.5-.5*cos(x))*(.5-.5*cos(x));      if (inv)         w[i]=1-w[i];      w[i]=sqrt(w[i]);   }}/* This function approximates the gain function    y = gamma(1.25)^2 * M(-.25;1;-x) / sqrt(x)     which multiplied by xi/(1+xi) is the optimal gain   in the loudness domain ( sqrt[amplitude] )*/static inline float hypergeom_gain(float x){   int ind;   float integer, frac;   static const float table[21] = {      0.82157f, 1.02017f, 1.20461f, 1.37534f, 1.53363f, 1.68092f, 1.81865f,      1.94811f, 2.07038f, 2.18638f, 2.29688f, 2.40255f, 2.50391f, 2.60144f,      2.69551f, 2.78647f, 2.87458f, 2.96015f, 3.04333f, 3.12431f, 3.20326f};         if (x>9.5)      return 1+.1296/x;      integer = floor(2*x);   frac = 2*x-integer;   ind = (int)integer;      return ((1-frac)*table[ind] + frac*table[ind+1])/sqrt(x+.0001f);}static inline float qcurve(float x){   return 1.f/(1.f+.1f/(x*x));}SpeexPreprocessState *speex_preprocess_state_init(int frame_size, int sampling_rate){   int i;   int N, N3, N4;   SpeexPreprocessState *st = (SpeexPreprocessState *)speex_alloc(sizeof(SpeexPreprocessState));   st->frame_size = frame_size;   /* Round ps_size down to the nearest power of two */#if 0   i=1;   st->ps_size = st->frame_size;   while(1)   {      if (st->ps_size & ~i)      {         st->ps_size &= ~i;         i<<=1;      } else {         break;      }   }         if (st->ps_size < 3*st->frame_size/4)      st->ps_size = st->ps_size * 3 / 2;#else   st->ps_size = st->frame_size;#endif   N = st->ps_size;   N3 = 2*N - st->frame_size;   N4 = st->frame_size - N3;      st->sampling_rate = sampling_rate;   st->denoise_enabled = 1;   st->agc_enabled = 0;   st->agc_level = 8000;   st->vad_enabled = 0;   st->dereverb_enabled = 0;   st->reverb_decay = .5;   st->reverb_level = .2;   st->speech_prob_start = SPEEX_PROB_START_DEFAULT;   st->speech_prob_continue = SPEEX_PROB_CONTINUE_DEFAULT;   st->frame = (float*)speex_alloc(2*N*sizeof(float));   st->ps = (float*)speex_alloc(N*sizeof(float));   st->gain2 = (float*)speex_alloc(N*sizeof(float));   st->window = (float*)speex_alloc(2*N*sizeof(float));   st->noise = (float*)speex_alloc(N*sizeof(float));   st->reverb_estimate = (float*)speex_alloc(N*sizeof(float));   st->old_ps = (float*)speex_alloc(N*sizeof(float));   st->gain = (float*)speex_alloc(N*sizeof(float));   st->prior = (float*)speex_alloc(N*sizeof(float));   st->post = (float*)speex_alloc(N*sizeof(float));   st->loudness_weight = (float*)speex_alloc(N*sizeof(float));   st->inbuf = (float*)speex_alloc(N3*sizeof(float));   st->outbuf = (float*)speex_alloc(N3*sizeof(float));   st->echo_noise = (float*)speex_alloc(N*sizeof(float));   st->S = (float*)speex_alloc(N*sizeof(float));   st->Smin = (float*)speex_alloc(N*sizeof(float));   st->Stmp = (float*)speex_alloc(N*sizeof(float));   st->update_prob = (float*)speex_alloc(N*sizeof(float));   st->zeta = (float*)speex_alloc(N*sizeof(float));   st->Zpeak = 0;   st->Zlast = 0;   st->noise_bands = (float*)speex_alloc(NB_BANDS*sizeof(float));   st->noise_bands2 = (float*)speex_alloc(NB_BANDS*sizeof(float));   st->speech_bands = (float*)speex_alloc(NB_BANDS*sizeof(float));   st->speech_bands2 = (float*)speex_alloc(NB_BANDS*sizeof(float));   st->noise_bandsN = st->speech_bandsN = 1;   conj_window(st->window, 2*N3);   for (i=2*N3;i<2*st->ps_size;i++)      st->window[i]=1;      if (N4>0)   {      for (i=N3-1;i>=0;i--)      {         st->window[i+N3+N4]=st->window[i+N3];         st->window[i+N3]=1;      }   }   for (i=0;i<N;i++)   {      st->noise[i]=1e4;      st->reverb_estimate[i]=0.;      st->old_ps[i]=1e4;      st->gain[i]=1;      st->post[i]=1;      st->prior[i]=1;   }   for (i=0;i<N3;i++)   {      st->inbuf[i]=0;      st->outbuf[i]=0;   }   for (i=0;i<N;i++)   {      float ff=((float)i)*.5*sampling_rate/((float)N);      st->loudness_weight[i] = .35f-.35f*ff/16000.f+.73f*exp(-.5f*(ff-3800)*(ff-3800)/9e5f);      if (st->loudness_weight[i]<.01f)         st->loudness_weight[i]=.01f;      st->loudness_weight[i] *= st->loudness_weight[i];   }   st->speech_prob = 0;   st->last_speech = 1000;   st->loudness = pow(6000,LOUDNESS_EXP);   st->loudness2 = 6000;   st->nb_loudness_adapt = 0;   st->fft_lookup = (struct drft_lookup*)speex_alloc(sizeof(struct drft_lookup));   spx_drft_init(st->fft_lookup,2*N);   st->nb_adapt=0;   st->consec_noise=0;   st->nb_preprocess=0;   return st;}void speex_preprocess_state_destroy(SpeexPreprocessState *st){   speex_free(st->frame);   speex_free(st->ps);   speex_free(st->gain2);   speex_free(st->window);   speex_free(st->noise);   speex_free(st->reverb_estimate);   speex_free(st->old_ps);   speex_free(st->gain);   speex_free(st->prior);   speex_free(st->post);   speex_free(st->loudness_weight);   speex_free(st->echo_noise);   speex_free(st->S);   speex_free(st->Smin);   speex_free(st->Stmp);   speex_free(st->update_prob);   speex_free(st->zeta);   speex_free(st->noise_bands);   speex_free(st->noise_bands2);   speex_free(st->speech_bands);   speex_free(st->speech_bands2);   speex_free(st->inbuf);   speex_free(st->outbuf);   spx_drft_clear(st->fft_lookup);   speex_free(st->fft_lookup);   speex_free(st);}static void update_noise(SpeexPreprocessState *st, float *ps, spx_int32_t *echo){   int i;   float beta;   st->nb_adapt++;   beta=1.0f/st->nb_adapt;   if (beta < .05f)      beta=.05f;      if (!echo)   {      for (i=0;i<st->ps_size;i++)         st->noise[i] = (1.f-beta)*st->noise[i] + beta*ps[i];   } else {      for (i=0;i<st->ps_size;i++)         st->noise[i] = (1.f-beta)*st->noise[i] + beta*max(1.f,ps[i]-st->frame_size*st->frame_size*4.0*echo[i]); #if 0      for (i=0;i<st->ps_size;i++)         st->noise[i] = 0;#endif   }}static int speex_compute_vad(SpeexPreprocessState *st, float *ps, float mean_prior, float mean_post){   int i, is_speech=0;   int N = st->ps_size;   float scale=.5f/N;   /* FIXME: Clean this up a bit */   {      float bands[NB_BANDS];      int j;      float p0, p1;      float tot_loudness=0;      float x = sqrt(mean_post);      for (i=5;i<N-10;i++)      {         tot_loudness += scale*st->ps[i] * st->loudness_weight[i];      }      for (i=0;i<NB_BANDS;i++)      {         bands[i]=1e4f;         for (j=i*N/NB_BANDS;j<(i+1)*N/NB_BANDS;j++)         {            bands[i] += ps[j];         }         bands[i]=log(bands[i]);      }            /*p1 = .0005+.6*exp(-.5*(x-.4)*(x-.4)*11)+.1*exp(-1.2*x);      if (x<1.5)         p0=.1*exp(2*(x-1.5));      else         p0=.02+.1*exp(-.2*(x-1.5));      */      p0=1.f/(1.f+exp(3.f*(1.5f-x)));      p1=1.f-p0;      /*fprintf (stderr, "%f %f ", p0, p1);*/      /*p0 *= .99*st->speech_prob + .01*(1-st->speech_prob);      p1 *= .01*st->speech_prob + .99*(1-st->speech_prob);            st->speech_prob = p0/(p1+p0);      */      if (st->noise_bandsN < 50 || st->speech_bandsN < 50)      {         if (mean_post > 5.f)         {            float adapt = 1./st->speech_bandsN++;            if (adapt<.005f)               adapt = .005f;            for (i=0;i<NB_BANDS;i++)            {               st->speech_bands[i] = (1.f-adapt)*st->speech_bands[i] + adapt*bands[i];               /*st->speech_bands2[i] = (1-adapt)*st->speech_bands2[i] + adapt*bands[i]*bands[i];*/               st->speech_bands2[i] = (1.f-adapt)*st->speech_bands2[i] + adapt*(bands[i]-st->speech_bands[i])*(bands[i]-st->speech_bands[i]);            }         } else {            float adapt = 1./st->noise_bandsN++;            if (adapt<.005f)               adapt = .005f;            for (i=0;i<NB_BANDS;i++)            {               st->noise_bands[i] = (1.f-adapt)*st->noise_bands[i] + adapt*bands[i];               /*st->noise_bands2[i] = (1-adapt)*st->noise_bands2[i] + adapt*bands[i]*bands[i];*/               st->noise_bands2[i] = (1.f-adapt)*st->noise_bands2[i] + adapt*(bands[i]-st->noise_bands[i])*(bands[i]-st->noise_bands[i]);            }         }      }      p0=p1=1;      for (i=0;i<NB_BANDS;i++)      {         float noise_var, speech_var;         float noise_mean, speech_mean;         float tmp1, tmp2, pr;         /*noise_var = 1.01*st->noise_bands2[i] - st->noise_bands[i]*st->noise_bands[i];           speech_var = 1.01*st->speech_bands2[i] - st->speech_bands[i]*st->speech_bands[i];*/         noise_var = st->noise_bands2[i];         speech_var = st->speech_bands2[i];         if (noise_var < .1f)            noise_var = .1f;         if (speech_var < .1f)            speech_var = .1f;                  /*speech_var = sqrt(speech_var*noise_var);           noise_var = speech_var;*/         if (speech_var < .05f*speech_var)            noise_var = .05f*speech_var;          if (speech_var < .05f*noise_var)            speech_var = .05f*noise_var;                  if (bands[i] < st->noise_bands[i])            speech_var = noise_var;         if (bands[i] > st->speech_bands[i])            noise_var = speech_var;         speech_mean = st->speech_bands[i];         noise_mean = st->noise_bands[i];         if (noise_mean < speech_mean - 5.f)            noise_mean = speech_mean - 5.f;         tmp1 = exp(-.5f*(bands[i]-speech_mean)*(bands[i]-speech_mean)/speech_var)/sqrt(2.f*M_PI*speech_var);         tmp2 = exp(-.5f*(bands[i]-noise_mean)*(bands[i]-noise_mean)/noise_var)/sqrt(2.f*M_PI*noise_var);         /*fprintf (stderr, "%f ", (float)(p0/(.01+p0+p1)));*/         /*fprintf (stderr, "%f ", (float)(bands[i]));*/         pr = tmp1/(1e-25+tmp1+tmp2);         /*if (bands[i] < st->noise_bands[i])            pr=.01;         if (bands[i] > st->speech_bands[i] && pr < .995)         pr=.995;*/         if (pr>.999f)            pr=.999f;         if (pr<.001f)            pr=.001f;         /*fprintf (stderr, "%f ", pr);*/         p0 *= pr;         p1 *= (1-pr);      }      p0 = pow(p0,.2);      p1 = pow(p1,.2);            #if 1      p0 *= 2.f;      p0=p0/(p1+p0);      if (st->last_speech>20)       {         float tmp = sqrt(tot_loudness)/st->loudness2;         tmp = 1.f-exp(-10.f*tmp);         if (p0>tmp)            p0=tmp;      }      p1=1-p0;#else      if (sqrt(tot_loudness) < .6f*st->loudness2 && p0>15.f*p1)         p0=15.f*p1;      if (sqrt(tot_loudness) < .45f*st->loudness2 && p0>7.f*p1)         p0=7.f*p1;      if (sqrt(tot_loudness) < .3f*st->loudness2 && p0>3.f*p1)         p0=3.f*p1;      if (sqrt(tot_loudness) < .15f*st->loudness2 && p0>p1)         p0=p1;      /*fprintf (stderr, "%f %f ", (float)(sqrt(tot_loudness) /( .25*st->loudness2)), p0/(p1+p0));*/#endif      p0 *= .99f*st->speech_prob + .01f*(1-st->speech_prob);      p1 *= .01f*st->speech_prob + .99f*(1-st->speech_prob);            st->speech_prob = p0/(1e-25f+p1+p0);      /*fprintf (stderr, "%f %f %f ", tot_loudness, st->loudness2, st->speech_prob);*/      if (st->speech_prob > st->speech_prob_start         || (st->last_speech < 20 && st->speech_prob > st->speech_prob_continue))      {         is_speech = 1;         st->last_speech = 0;      } else {         st->last_speech++;         if (st->last_speech<20)           is_speech = 1;      }      if (st->noise_bandsN > 50 && st->speech_bandsN > 50)      {         if (mean_post > 5)         {            float adapt = 1./st->speech_bandsN++;            if (adapt<.005f)               adapt = .005f;            for (i=0;i<NB_BANDS;i++)            {               st->speech_bands[i] = (1-adapt)*st->speech_bands[i] + adapt*bands[i];               /*st->speech_bands2[i] = (1-adapt)*st->speech_bands2[i] + adapt*bands[i]*bands[i];*/               st->speech_bands2[i] = (1-adapt)*st->speech_bands2[i] + adapt*(bands[i]-st->speech_bands[i])*(bands[i]-st->speech_bands[i]);            }         } else {            float adapt = 1./st->noise_bandsN++;            if (adapt<.005f)               adapt = .005f;            for (i=0;i<NB_BANDS;i++)            {               st->noise_bands[i] = (1-adapt)*st->noise_bands[i] + adapt*bands[i];               /*st->noise_bands2[i] = (1-adapt)*st->noise_bands2[i] + adapt*bands[i]*bands[i];*/               st->noise_bands2[i] = (1-adapt)*st->noise_bands2[i] + adapt*(bands[i]-st->noise_bands[i])*(bands[i]-st->noise_bands[i]);            }         }      }   }   return is_speech;}static void speex_compute_agc(SpeexPreprocessState *st, float mean_prior){   int i;   int N = st->ps_size;   float scale=.5f/N;   float agc_gain;   int freq_start, freq_end;   float active_bands = 0;   freq_start = (int)(300.0f*2*N/st->sampling_rate);   freq_end   = (int)(2000.0f*2*N/st->sampling_rate);   for (i=freq_start;i<freq_end;i++)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91丝袜国产在线播放| 国产九色sp调教91| 欧美蜜桃一区二区三区| 亚洲国产精品一区二区尤物区| 色av一区二区| 日韩精品1区2区3区| 欧美成人性战久久| 国产福利不卡视频| 一区二区三区国产精华| 欧美美女黄视频| 国产麻豆午夜三级精品| 国产精品成人免费在线| 欧美日韩中字一区| 国产一区二区三区在线观看精品 | 成人一级黄色片| 日韩理论电影院| 91精品午夜视频| 国产精品99久久久| 一区二区三区在线播放| 精品毛片乱码1区2区3区| av电影在线观看不卡| 五月婷婷激情综合网| 久久精品日韩一区二区三区| 色八戒一区二区三区| 韩国成人在线视频| 亚洲在线观看免费视频| 久久久久国产精品厨房| 在线免费精品视频| 国产伦精一区二区三区| 亚洲一区二区av电影| 国产色91在线| 538在线一区二区精品国产| 国产91精品在线观看| 日本成人中文字幕在线视频| 国产精品国模大尺度视频| 日韩视频在线你懂得| 91麻豆国产香蕉久久精品| 九九九精品视频| 亚洲午夜免费福利视频| 日本一区二区电影| 欧美一区二区三区四区视频| 91香蕉视频在线| 国产精品99久久久久| 欧美a一区二区| 香蕉久久夜色精品国产使用方法| 中文字幕免费观看一区| 亚洲精品一区二区三区蜜桃下载| 欧美日韩一区不卡| 色香蕉久久蜜桃| 99这里都是精品| 国产成人免费在线视频| 精品一区二区三区蜜桃| 污片在线观看一区二区| 亚洲在线视频网站| 亚洲免费视频成人| 国产精品视频yy9299一区| 欧美精品一区二区三区久久久| 欧美日韩国产高清一区二区三区| 97精品久久久午夜一区二区三区| 国产精品中文字幕欧美| 韩国av一区二区三区四区| 欧美aaaaaa午夜精品| 日本视频在线一区| 日韩激情在线观看| 午夜av区久久| 日韩经典中文字幕一区| 首页国产丝袜综合| 丝袜美腿亚洲色图| 五月综合激情婷婷六月色窝| 婷婷丁香激情综合| 婷婷六月综合网| 青青草97国产精品免费观看 | 五月婷婷激情综合网| 亚洲国产成人高清精品| 亚洲成人免费av| 五月综合激情婷婷六月色窝| 亚洲va欧美va人人爽午夜| 亚洲一区在线观看视频| 亚洲成a人片综合在线| 亚洲va欧美va国产va天堂影院| 亚洲成人自拍网| 免播放器亚洲一区| 久久精品国产精品亚洲综合| 国产主播一区二区三区| 国产精品亚洲一区二区三区妖精| 国产福利不卡视频| 99r国产精品| 欧美性生活久久| 欧美一区欧美二区| 久久久噜噜噜久噜久久综合| 国产精品免费久久久久| 亚洲男人天堂一区| 亚洲成av人片在线| 久久精品国产色蜜蜜麻豆| 国产91在线观看丝袜| 91在线观看美女| 欧美日韩国产大片| 26uuu成人网一区二区三区| 国产精品乱码久久久久久| 伊人开心综合网| 奇米色一区二区| 国v精品久久久网| 欧美性猛片xxxx免费看久爱| 欧美电视剧免费观看| 欧美经典一区二区| 一区二区高清免费观看影视大全| 日韩精品91亚洲二区在线观看| 国产精品一区二区久久不卡| 色综合色综合色综合| 日韩午夜在线播放| 亚洲视频免费在线| 蜜桃视频一区二区三区在线观看| 国产不卡视频在线播放| 欧美在线小视频| 久久综合给合久久狠狠狠97色69| 中文字幕一区二区三区视频| 日本欧美大码aⅴ在线播放| 成人免费视频网站在线观看| 欧美日本免费一区二区三区| 久久久久久久久一| 五月天激情小说综合| 国产成人av在线影院| 欧美日韩国产123区| 日本一二三不卡| 青青草一区二区三区| 色偷偷一区二区三区| www久久精品| 日欧美一区二区| 91福利视频久久久久| 国产性做久久久久久| 日韩黄色在线观看| 91色婷婷久久久久合中文| 久久久综合精品| 青青草视频一区| 欧美乱妇20p| 一区二区视频免费在线观看| 国产91精品一区二区| 日韩女优av电影| 午夜亚洲福利老司机| 91一区在线观看| 日本一区二区三级电影在线观看 | 国模娜娜一区二区三区| 欧美亚洲动漫制服丝袜| 中文字幕亚洲在| 国产91清纯白嫩初高中在线观看| 欧美成人精品3d动漫h| 五月激情丁香一区二区三区| 色呦呦一区二区三区| 中文字幕在线不卡国产视频| 国产在线播放一区三区四| 日韩欧美高清一区| 香蕉加勒比综合久久| 欧美色手机在线观看| 亚洲另类在线视频| aaa亚洲精品| 国产精品区一区二区三| 成人午夜在线播放| 久久精品人人做人人综合| 激情欧美一区二区| 欧美不卡一区二区| 麻豆精品精品国产自在97香蕉| 日韩天堂在线观看| 久久精品国产免费| 亚洲精品在线免费播放| 精品一区二区三区免费视频| 精品久久久久久最新网址| 蜜桃av噜噜一区二区三区小说| 日韩一区二区视频在线观看| 蜜臀a∨国产成人精品| 日韩免费性生活视频播放| 日韩av午夜在线观看| 日韩欧美中文字幕公布| 麻豆精品新av中文字幕| 精品国产乱码久久久久久影片| 国产自产视频一区二区三区| 国产无一区二区| 99麻豆久久久国产精品免费优播| 亚洲视频一区在线| 在线观看免费亚洲| 日韩黄色一级片| 久久久久久久久久看片| 99精品国产一区二区三区不卡| 一区二区三区在线不卡| 制服丝袜亚洲精品中文字幕| 国内久久精品视频| 中文字幕人成不卡一区| 欧美在线观看视频在线| 麻豆国产欧美一区二区三区| 国产亚洲午夜高清国产拍精品| 99久久久精品| 亚洲一级二级在线| 欧美一级淫片007| 国产v日产∨综合v精品视频| 亚洲欧洲日产国码二区| 欧美性受xxxx| 国产一区二三区好的| 国产精品久久久久影院亚瑟 | 精品国产一区二区国模嫣然| 国产成人免费在线观看| 亚洲一区二区三区爽爽爽爽爽|