日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux ALSA驱动之三:PCM创建流程源码分析(基于Linux 5.18)

發布時間:2024/3/24 linux 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux ALSA驱动之三:PCM创建流程源码分析(基于Linux 5.18) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、基本概念及邏輯關系

??????? 如上圖,通過上一節聲卡的學習我們已經知道PCM是聲卡的一個子設備,或者表示一個PCM實例。

??????? 每個聲卡最多可以包含4個pcm的實例,每個pcm實例對應一個pcm設備文件。pcm實例數量的這種限制源于linux設備號所占用的位大小,如果以后使用64位的設備號,我們將可以創建更多的pcm實例。不過大多數情況下,在嵌入式設備中,一個pcm實例已經足夠了。

????????一個pcm實例由一個playback stream和一個capture stream組成,這兩個stream又分別有一個或多個substreams組成。可以用如下圖來表示他們直接的邏輯關系:

????????當一個子流已經存在,并且已經被打開,當再次被打開的時候,會被阻塞。????????

????????在實際的應用中,通常不會如上圖這么復雜,大多數情況下是一個聲卡有一個PCM實例,PCM下面有一個playback和capture,而playback和capture各自有一個substream。

??????? PCM層有幾個很重要的結構體,我們通過如下的UML圖來梳理他們直接的關系。

?????????圖片地址:http://hi.csdn.net/attachment/201104/2/0_1301728746sAUd.gif

??????? 1、snd_pcm:掛在snd_card下面的一個snd_device。

??????? 2、snd_pcm中的字段:streams[2]:該數組中的兩個元素指向兩個snd_pcm_str結構,分別代表playback stream和capture stream。

??????? 3、snd_pcm_str中的substream字段:指向snd_pcm_substream結構。

??????? 4、snd_pcm_substream是pcm中間層的核心,絕大部分任務都是在substream中處理,尤其是他的ops(snd_pcm_ops)字段,許多user空間的應用程序通過alsa-lib對驅動程序的請求都是由該結構中的函數處理。它的runtime字段則指向snd_pcm_runtime結構,snd_pcm_runtime記錄這substream的一些重要的軟件和硬件運行環境和參數。

2、PCM創建流程

??????? PCM的整個創建流程請參考如下時序圖進行理解:

???????? alsa-driver的中間層已經提供新建PCM的API:

2.1、創建PCM實例

int snd_pcm_new(struct snd_card *card, const char *id, int device,int playback_count, int capture_count, struct snd_pcm **rpcm)

????????card:表示所屬的聲卡。

??????? ID:PCM實例的ID(名字)。

??????? device:表示目前創建的是該聲卡下的第幾個PCM,第一個PCM設備從0開始計數。

????????playback_count:表示該PCM播放流中將會有幾個substream。

????????capture_count :表示該PCM錄音流中將會有幾個substream。

??????? rpcm:返回的PCM實例。

??????? 該函數的主要作用是創建PCM邏輯設備,創建回放子流和錄制子流實例,并初始化回放子流和錄制子流的PCM操作函數(數據搬運時,需要調用這些函數來驅動 codec、codec_dai、cpu_dai、dma 設備工作)。

2.2、設置PCM設備的操作函數

void snd_pcm_set_ops(struct snd_pcm *pcm, int direction,const struct snd_pcm_ops *ops)

??????? pcm:上述snd_pcm_new 創建的PCM實例。

??????? direction:是指SNDRV_PCM_STREAM_PLAYBACK或SNDRV_PCM_STREAM_CAPTURE,即設置為播放或者錄音功能。

??????? snd_pcm_ops:結構中的函數通常就是我們驅動要實現的函數。

2.3、定義PCM的操作函數

??????? 以AC97驅動(linux/sound/arm/pxa2xx-ac97.c)為例,在驅動中對于PCM進行了如下設置:

static const struct snd_pcm_ops pxa2xx_ac97_pcm_ops = {.open = pxa2xx_ac97_pcm_open,.close = pxa2xx_ac97_pcm_close,.hw_params = pxa2xx_pcm_hw_params,.prepare = pxa2xx_ac97_pcm_prepare,.trigger = pxa2xx_pcm_trigger,.pointer = pxa2xx_pcm_pointer, };snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK, &pxa2xx_ac97_pcm_ops); snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE, &pxa2xx_ac97_pcm_ops);

2.4、定義硬件參數

static const struct snd_pcm_hardware pxa2xx_pcm_hardware = {.info = SNDRV_PCM_INFO_MMAP |SNDRV_PCM_INFO_MMAP_VALID |SNDRV_PCM_INFO_INTERLEAVED |SNDRV_PCM_INFO_PAUSE |SNDRV_PCM_INFO_RESUME,.formats = SNDRV_PCM_FMTBIT_S16_LE |SNDRV_PCM_FMTBIT_S24_LE |SNDRV_PCM_FMTBIT_S32_LE,.period_bytes_min = 32,.period_bytes_max = 8192 - 32,.periods_min = 1,.periods_max = 256,.buffer_bytes_max = 128 * 1024,.fifo_size = 32, };int pxa2xx_pcm_open(struct snd_pcm_substream *substream) {struct snd_soc_pcm_runtime *rtd = substream->private_data;struct snd_pcm_runtime *runtime = substream->runtime;struct snd_dmaengine_dai_dma_data *dma_params;int ret;runtime->hw = pxa2xx_pcm_hardware;dma_params = snd_soc_dai_get_dma_data(asoc_rtd_to_cpu(rtd, 0), substream);if (!dma_params)return 0;/** For mysterious reasons (and despite what the manual says)* playback samples are lost if the DMA count is not a multiple* of the DMA burst size. Let's add a rule to enforce that.*/ret = snd_pcm_hw_constraint_step(runtime, 0,SNDRV_PCM_HW_PARAM_PERIOD_BYTES, 32);if (ret)return ret;ret = snd_pcm_hw_constraint_step(runtime, 0,SNDRV_PCM_HW_PARAM_BUFFER_BYTES, 32);if (ret)return ret;ret = snd_pcm_hw_constraint_integer(runtime,SNDRV_PCM_HW_PARAM_PERIODS);if (ret < 0)return ret;return snd_dmaengine_pcm_open(substream, dma_request_slave_channel(asoc_rtd_to_cpu(rtd, 0)->dev,dma_params->chan_name)); }

3、PCM相關源碼分析

3.1、snd_pcm_new

/*** snd_pcm_new - create a new PCM instance* @card: the card instance* @id: the id string* @device: the device index (zero based)* @playback_count: the number of substreams for playback* @capture_count: the number of substreams for capture* @rpcm: the pointer to store the new pcm instance** Creates a new PCM instance.** The pcm operators have to be set afterwards to the new instance* via snd_pcm_set_ops().** Return: Zero if successful, or a negative error code on failure.*/ int snd_pcm_new(struct snd_card *card, const char *id, int device,int playback_count, int capture_count, struct snd_pcm **rpcm) {/* 直接調用函數_snd_pcm_new,參數internal傳入false */return _snd_pcm_new(card, id, device, playback_count, capture_count,false, rpcm); }static int _snd_pcm_new(struct snd_card *card, const char *id, int device,int playback_count, int capture_count, bool internal,struct snd_pcm **rpcm) {struct snd_pcm *pcm;int err;/* 1. 邏輯設備的操作函數結構體, 主要用于注冊子設備 */static const struct snd_device_ops ops = {.dev_free = snd_pcm_dev_free,.dev_register = snd_pcm_dev_register,.dev_disconnect = snd_pcm_dev_disconnect,};static const struct snd_device_ops internal_ops = {.dev_free = snd_pcm_dev_free,};if (snd_BUG_ON(!card))return -ENXIO;if (rpcm)*rpcm = NULL;/* 2. 為snd_pcm結構體分配空間,根據傳入參數賦值 */pcm = kzalloc(sizeof(*pcm), GFP_KERNEL);if (!pcm)return -ENOMEM;pcm->card = card;pcm->device = device;pcm->internal = internal;mutex_init(&pcm->open_mutex);init_waitqueue_head(&pcm->open_wait);INIT_LIST_HEAD(&pcm->list);if (id)strscpy(pcm->id, id, sizeof(pcm->id));/* 3. 根據傳入的playback和capture的個數創建PCM流 snd_pcm_str */err = snd_pcm_new_stream(pcm, SNDRV_PCM_STREAM_PLAYBACK,playback_count);if (err < 0)goto free_pcm;err = snd_pcm_new_stream(pcm, SNDRV_PCM_STREAM_CAPTURE, capture_count);if (err < 0)goto free_pcm;/* 4. 創建一個PCM邏輯設備,創建邏輯設備,并添加到邏輯設備鏈表 */err = snd_device_new(card, SNDRV_DEV_PCM, pcm,internal ? &internal_ops : &ops);if (err < 0)goto free_pcm;if (rpcm)*rpcm = pcm;return 0;free_pcm:snd_pcm_free(pcm);return err; }

3.2、snd_pcm

struct snd_pcm {struct snd_card *card;struct list_head list;int device; /* device number */unsigned int info_flags;unsigned short dev_class;unsigned short dev_subclass;char id[64];char name[80];struct snd_pcm_str streams[2];struct mutex open_mutex;wait_queue_head_t open_wait;void *private_data;void (*private_free) (struct snd_pcm *pcm);bool internal; /* pcm is for internal use only */bool nonatomic; /* whole PCM operations are in non-atomic context */bool no_device_suspend; /* don't invoke device PM suspend */ #if IS_ENABLED(CONFIG_SND_PCM_OSS)struct snd_pcm_oss oss; #endif };

???????? 這里重要的變量有兩個streams與private_data。streams有兩個,是因為一個指向播放設備,一個指向錄音設備。private_data在很多結構里都可以看到,和面象對象里的繼承有點類似,如果將snd_pcm理解為基類的話,private_data指向的就是它的繼承類,也就是真正的實現者。

????????list,在pcm.c中有一個全局變量snd_pcm_devices,將所有的snd_pcm對象鏈接起來,目的是外部提供一些可供枚舉所有設備的接口,看起來并不怎么被用到。

????????另外還有info_flags、dev_class等變量看起來是為一些特殊設備預留的,對待一些特殊操作。

struct snd_pcm_str {int stream; /* stream (direction) */struct snd_pcm *pcm;/* -- substreams -- */unsigned int substream_count;unsigned int substream_opened;struct snd_pcm_substream *substream; #if IS_ENABLED(CONFIG_SND_PCM_OSS)/* -- OSS things -- */struct snd_pcm_oss_stream oss; #endif #ifdef CONFIG_SND_VERBOSE_PROCFSstruct snd_info_entry *proc_root; #ifdef CONFIG_SND_PCM_XRUN_DEBUGunsigned int xrun_debug; /* 0 = disabled, 1 = verbose, 2 = stacktrace */ #endif #endifstruct snd_kcontrol *chmap_kctl; /* channel-mapping controls */struct device dev; };

???????? snd_pcm_str的主要作用是指向snd_pcm_substream,而snd_pcm_substream可以有多個,這也是snd_pcm_str存在的原因,否則snd_pcm直接指向snd_pcm_substream就可以了。

????????這里的dev是將pcm加入到文件系統時要用到。包含的信息,在下面介紹的snd_pcm_new_stream中會看到。

3.3、snd_pcm_new_stream

/*** snd_pcm_new_stream - create a new PCM stream* @pcm: the pcm instance* @stream: the stream direction, SNDRV_PCM_STREAM_XXX* @substream_count: the number of substreams** Creates a new stream for the pcm.* The corresponding stream on the pcm must have been empty before* calling this, i.e. zero must be given to the argument of* snd_pcm_new().** Return: Zero if successful, or a negative error code on failure.*/ int snd_pcm_new_stream(struct snd_pcm *pcm, int stream, int substream_count) {int idx, err;/* 3.1 根據傳入的參數,為PCM流(snd_pcm_str)賦值:方向,所屬的PCM,PCM子流的個數 */struct snd_pcm_str *pstr = &pcm->streams[stream];struct snd_pcm_substream *substream, *prev;#if IS_ENABLED(CONFIG_SND_PCM_OSS)mutex_init(&pstr->oss.setup_mutex); #endifpstr->stream = stream;pstr->pcm = pcm;pstr->substream_count = substream_count;if (!substream_count)return 0;snd_device_initialize(&pstr->dev, pcm->card);pstr->dev.groups = pcm_dev_attr_groups;pstr->dev.type = &pcm_dev_type;dev_set_name(&pstr->dev, "pcmC%iD%i%c", pcm->card->number, pcm->device,stream == SNDRV_PCM_STREAM_PLAYBACK ? 'p' : 'c');/* proc */if (!pcm->internal) {err = snd_pcm_stream_proc_init(pstr);if (err < 0) {pcm_err(pcm, "Error in snd_pcm_stream_proc_init\n");return err;}}prev = NULL;for (idx = 0, prev = NULL; idx < substream_count; idx++) {/* 為子流分配空間,賦值(pcm,pcm流,ID, 方向.....) */substream = kzalloc(sizeof(*substream), GFP_KERNEL);if (!substream)return -ENOMEM;substream->pcm = pcm;substream->pstr = pstr;substream->number = idx;substream->stream = stream;sprintf(substream->name, "subdevice #%i", idx);substream->buffer_bytes_max = UINT_MAX;/* 添加子流到子流的鏈表 */if (prev == NULL) /* 第一個子流 */pstr->substream = substream;elseprev->next = substream; /* 非第一個子流,添加到前一個子流后部 *//* proc */if (!pcm->internal) {err = snd_pcm_substream_proc_init(substream);if (err < 0) {pcm_err(pcm,"Error in snd_pcm_stream_proc_init\n");if (prev == NULL)pstr->substream = NULL;elseprev->next = NULL;kfree(substream);return err;}}/* 結構體初始化 */substream->group = &substream->self_group;snd_pcm_group_init(&substream->self_group);list_add_tail(&substream->link_list, &substream->self_group.substreams);atomic_set(&substream->mmap_count, 0);prev = substream;}return 0; }

?????????函數參數中的int stream,是一個枚舉類型:?

enum {SNDRV_PCM_STREAM_PLAYBACK = 0,SNDRV_PCM_STREAM_CAPTURE,SNDRV_PCM_STREAM_LAST = SNDRV_PCM_STREAM_CAPTURE, };

??????? 從snd_device_initialize(&pstr->dev, pcm->card);?開始。dev最終會被傳入device_add函數中,用來構建文件系統。

void snd_device_initialize(struct device *dev, struct snd_card *card) {device_initialize(dev);if (card)dev->parent = &card->card_dev;dev->class = sound_class;dev->release = default_release; }

????????這段函數中可以看到dev->class被設置成sound_class,這個是我們之前提到的文件放到snd目錄的原因。

3.4、snd_pcm_substream

struct snd_pcm_substream {struct snd_pcm *pcm;struct snd_pcm_str *pstr;void *private_data; /* copied from pcm->private_data */int number;char name[32]; /* substream name */int stream; /* stream (direction) */struct pm_qos_request latency_pm_qos_req; /* pm_qos request */size_t buffer_bytes_max; /* limit ring buffer size */struct snd_dma_buffer dma_buffer;size_t dma_max;/* -- hardware operations -- */const struct snd_pcm_ops *ops;/* -- runtime information -- */struct snd_pcm_runtime *runtime;/* -- timer section -- */struct snd_timer *timer; /* timer */unsigned timer_running: 1; /* time is running */long wait_time; /* time in ms for R/W to wait for avail *//* -- next substream -- */struct snd_pcm_substream *next;/* -- linked substreams -- */struct list_head link_list; /* linked list member */struct snd_pcm_group self_group; /* fake group for non linked substream (with substream lock inside) */struct snd_pcm_group *group; /* pointer to current group *//* -- assigned files -- */int ref_count;atomic_t mmap_count;unsigned int f_flags;void (*pcm_release)(struct snd_pcm_substream *);struct pid *pid; #if IS_ENABLED(CONFIG_SND_PCM_OSS)/* -- OSS things -- */struct snd_pcm_oss_substream oss; #endif #ifdef CONFIG_SND_VERBOSE_PROCFSstruct snd_info_entry *proc_root; #endif /* CONFIG_SND_VERBOSE_PROCFS *//* misc flags */unsigned int hw_opened: 1;unsigned int managed_buffer_alloc:1; };

????????snd_pcm_substream的內容有些多,此處只需要重要的進行介紹。

????????private_data:從snd_pcm中的private_data拷貝過來的,指向實現者的結構。

????????const struct snd_pcm_ops *ops:這部分是框架的內容,具體的操作需要實現者的參與,留給實現者的函數指針集。這個和文件操作的設計策略是一致的。

????????struct snd_pcm_runtime *runtime:讀寫數據的時候由它來控制。到分析讀寫代碼的時候,會重點關注它。

????????struct snd_pcm_substream *next:將多個snd_pcm_substream對象鏈接起來,它就是snd_pcm_str指向的鏈接。

????????group:在用戶空間可以通過SNDRV_PCM_IOCTL_LINK將多個substream鏈接起來。然后就可以對這些對象進行統一的操作。我沒遇到過具體的應用場景。

3.5、snd_pcm_set_ops

/*** snd_pcm_set_ops - set the PCM operators* @pcm: the pcm instance* @direction: stream direction, SNDRV_PCM_STREAM_XXX* @ops: the operator table** Sets the given PCM operators to the pcm instance.*/ void snd_pcm_set_ops(struct snd_pcm *pcm, int direction,const struct snd_pcm_ops *ops) {struct snd_pcm_str *stream = &pcm->streams[direction];struct snd_pcm_substream *substream;for (substream = stream->substream; substream != NULL; substream = substream->next)substream->ops = ops; } EXPORT_SYMBOL(snd_pcm_set_ops);

??????? 此函數是提供給調用側使用的。設置的內容可以參考pcm文件結構簡圖。?

3.6、snd_pcm_dev_register

????????在繼續分析snd_pcm_dev_register函數之前需要先介紹一個結構體。struct snd_minor。

struct snd_minor {int type; /* SNDRV_DEVICE_TYPE_XXX */int card; /* card number */int device; /* device number */const struct file_operations *f_ops; /* file operations */void *private_data; /* private data for f_ops->open */struct device *dev; /* device for sysfs */struct snd_card *card_ptr; /* assigned card instance */ };

??????? type: 設備類型,比如是pcm, control, timer等設備。

????????card_number: 所屬的card。

????????device: 當前設備類型下的設備編號。

????????f_ops: 具體設備的文件操作集合。

????????private_data: open函數的私有數據。

????????card_ptr: 所屬的card。

????????此結構體是用來保存當前設備的上下文信息,該card下所有邏輯設備都存在此結構。

static int snd_pcm_dev_register(struct snd_device *device) {/* 1、添加pcm結構體到全局鏈表snd_pcm_devices */int cidx, err;struct snd_pcm_substream *substream;struct snd_pcm *pcm;if (snd_BUG_ON(!device || !device->device_data))return -ENXIO;/* snd_devcie保存的是snd_pcm對象 */pcm = device->device_data;mutex_lock(&register_mutex);/* snd_pcm對象將被保存到全局變量snd_pcm_devices中,用于枚舉設備等操作 */err = snd_pcm_add(pcm);if (err)goto unlock;for (cidx = 0; cidx < 2; cidx++) {/* 2、確定PCM設備節點名字 */int devtype = -1;if (pcm->streams[cidx].substream == NULL)continue;switch (cidx) {case SNDRV_PCM_STREAM_PLAYBACK:devtype = SNDRV_DEVICE_TYPE_PCM_PLAYBACK;break;case SNDRV_PCM_STREAM_CAPTURE:devtype = SNDRV_DEVICE_TYPE_PCM_CAPTURE;break;}/* register pcm *//* 將設備添加到文件系統,將snd_pcm_f_ops傳入,將被設置給snd_minor對象 */err = snd_register_device(devtype, pcm->card, pcm->device,&snd_pcm_f_ops[cidx], pcm,&pcm->streams[cidx].dev);if (err < 0) {list_del_init(&pcm->list);goto unlock;}for (substream = pcm->streams[cidx].substream; substream; substream = substream->next)/* 設定CONFIG_SND_PCM_TIMER宏的時候,會去設置substream的時間 */snd_pcm_timer_init(substream);}pcm_call_notify(pcm, n_register);unlock:mutex_unlock(&register_mutex);return err; }/*** snd_register_device - Register the ALSA device file for the card* @type: the device type, SNDRV_DEVICE_TYPE_XXX* @card: the card instance* @dev: the device index* @f_ops: the file operations* @private_data: user pointer for f_ops->open()* @device: the device to register** Registers an ALSA device file for the given card.* The operators have to be set in reg parameter.** Return: Zero if successful, or a negative error code on failure.*/ int snd_register_device(int type, struct snd_card *card, int dev,const struct file_operations *f_ops,void *private_data, struct device *device) {int minor;int err = 0;struct snd_minor *preg;if (snd_BUG_ON(!device))return -EINVAL;preg = kmalloc(sizeof *preg, GFP_KERNEL);if (preg == NULL)return -ENOMEM;/* 創建一個snd_minor,并添加到全局結構體 snd_minors */preg->type = type;preg->card = card ? card->number : -1;preg->device = dev;preg->f_ops = f_ops;preg->private_data = private_data;preg->card_ptr = card;mutex_lock(&sound_mutex);/* 4、注冊一個設備節點 */minor = snd_find_free_minor(type, card, dev);if (minor < 0) {err = minor;goto error;}preg->dev = device;device->devt = MKDEV(major, minor);err = device_add(device);if (err < 0)goto error;snd_minors[minor] = preg;error:mutex_unlock(&sound_mutex);if (err < 0)kfree(preg);return err; }

??????? 當聲卡被注冊時,會注冊所有的邏輯設備。主要的工作是創建PCM設備節點
具體的流程:

??????????????? 1、添加pcm結構體到全局鏈表snd_pcm_devices。

??????????????? 2、確定PCM設備節點名字。

??????????????? 3、創建一個snd_minor,并添加到全局結構體 snd_minors。

??????????????? 4、注冊一個設備節點

????????可以看到添加到文件系統的是播放設備和錄音設備,根據snd_pcm_str指向的內容來設定的。代碼中看到snd_pcm也被定義為SNDRV_DEV_PCM設備,但是文件系統中并不會保存這個類型的設備。

????????snd_pcm_timer_init是在CONFIG_SND_PCM_TIMER宏被定義的時候,會起作用。

????????通過下圖可以幫助你更好的理解各結構直接的亂講關系。

總結

以上是生活随笔為你收集整理的Linux ALSA驱动之三:PCM创建流程源码分析(基于Linux 5.18)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

狠狠干天天干 | 91手机电影 | 97视频免费看 | 午夜体验区 | 精产嫩模国品一二三区 | 激情婷婷av | 99久免费精品视频在线观看 | 久久在线观看 | av一区二区三区在线播放 | 日韩一区二区三免费高清在线观看 | 免费国产在线精品 | 国产亚洲永久域名 | 国产女人40精品一区毛片视频 | 一级a性色生活片久久毛片波多野 | 欧美在线视频一区二区 | 免费看一级片 | 天天色天天射天天综合网 | 一区二区三区在线观看免费 | 免费激情在线电影 | 国产明星视频三级a三级点| 国产精在线 | 国产精品少妇 | 视频 国产区 | 久久免费看a级毛毛片 | 中文字幕高清免费日韩视频在线 | 国产在线视频导航 | 久久伦理 | 99在线视频精品 | 欧美一二区视频 | 中国精品一区二区 | 午夜av大片 | 久久草精品 | 国产黄网在线 | 2023国产精品自产拍在线观看 | 激情黄色av | 免费试看一区 | 国产精品欧美久久久久三级 | 在线 欧美 日韩 | 天天操操操操操 | av在线电影网站 | 日本久久久久久科技有限公司 | 欧美成人久久 | 亚洲视频免费在线观看 | 成年人免费在线观看 | 欧美日韩一区二区在线 | 黄色视屏免费在线观看 | 91在线网站| 免费看一级黄色 | 欧美特一级片 | 激情电影在线观看 | 色狠狠一区二区 | 久黄色 | 国产免费人人看 | 色a综合| 亚洲国产免费av | 免费在线观看日韩视频 | 97成人精品区在线播放 | 一区二区不卡视频在线观看 | 天天操天天拍 | 国产精品免费视频网站 | 狠狠干夜夜爱 | 国内久久视频 | 亚洲一区二区黄色 | 91爱爱视频 | 免费看v片 | 97超碰网| 日韩a在线看 | 久久国产精品一区二区 | 国产成人a亚洲精品 | 国产精品美女www爽爽爽视频 | 99视频国产精品 | 国产麻豆精品一区 | 欧美一级电影 | 日韩资源在线 | 视频在线观看入口黄最新永久免费国产 | 国产日韩欧美中文 | 91av视频| 麻豆 91 在线 | 亚洲一区不卡视频 | 99国产成+人+综合+亚洲 欧美 | 性色av香蕉一区二区 | 粉嫩高清一区二区三区 | 国产小视频精品 | 96超碰在线 | 国外av在线 | 伊人激情综合 | 婷婷色综合网 | 91在线视频观看免费 | 亚洲综合爱 | 国产在线p | 亚洲特级毛片 | 久草亚洲视频 | 91精品资源 | 综合色影院 | 色婷婷久久久综合中文字幕 | 黄色一级大片在线免费看国产一 | 91在线看网站 | 亚洲电影久久久 | 国产 av 日韩 | 天天干天天做天天爱 | 国产中文字幕精品 | 欧美不卡在线 | 日本中文字幕影院 | 久久人人97超碰国产公开结果 | 日日操网 | 亚洲视频在线免费观看 | 精品国产精品久久一区免费式 | 亚洲情婷婷 | 亚洲一区日韩精品 | 三日本三级少妇三级99 | 成人毛片久久 | 久久久久久久久久久成人 | 国产黄色精品在线 | 亚洲国产网址 | 在线小视频 | 欧美日韩中文字幕在线视频 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 午夜精品婷婷 | 91精品久久久久久综合乱菊 | 免费观看成人网 | 国产精品porn| 色综合天天色综合 | 国产精品久久久久久av | 91亚洲国产成人久久精品网站 | 中文字幕一区二区在线播放 | 中文字幕大全 | 97视频在线观看视频免费视频 | 久久成人高清视频 | 国产精品久久免费看 | 激情视频网页 | 99国产精品久久久久久久久久 | 国产女人18毛片水真多18精品 | 香蕉网在线播放 | 丁香九月婷婷综合 | 91高清完整版在线观看 | 欧美动漫一区二区三区 | 日韩久久精品一区二区 | 在线视频 你懂得 | www.国产高清 | 欧美少妇18p| 国产午夜精品在线 | 少妇精69xxtheporn | 成人黄色电影在线 | 免费看的黄色 | 成人在线观看你懂的 | 亚洲精品在线观看av | 国内精品久久久久久久 | 久久爱综合 | 九九热精 | 精品视频9999 | 欧美美女视频在线观看 | 一区二区三区精品久久久 | 在线亚州| 国产一级精品在线观看 | 久久成人精品电影 | 亚洲天天做 | 狠狠狠狠狠狠 | 国产精品久久久久久久久蜜臀 | 伊人射| 亚洲成人免费在线观看 | 久久爱资源网 | 麻豆一二 | 免费观看丰满少妇做爰 | 99精品视频观看 | 色之综合网 | 亚洲情婷婷 | 亚洲激情小视频 | 中文字幕资源网 国产 | 最近最新中文字幕视频 | 国产美女视频黄a视频免费 久久综合九色欧美综合狠狠 | 国产精品自产拍在线观看网站 | 免费h漫在线观看 | 一级黄色在线免费观看 | 狠狠色丁香九九婷婷综合五月 | 99色婷婷 | 成人免费在线播放 | 国产成人精品久久久久 | 超碰99人人 | 亚洲综合国产精品 | 精品国产一区二区三区日日嗨 | 在线观看av黄色 | 亚洲资源在线观看 | 精品婷婷| 中文字幕日韩一区二区三区不卡 | 国产成人精品一区一区一区 | 国产成人99av超碰超爽 | 五月婷婷视频 | 97超碰中文字幕 | 国产精品专区一 | 一区二区三区日韩在线 | 成人av一级片 | 成人a级免费视频 | 久久久国产影院 | 国产中文在线视频 | 欧美性猛片 | 天天干天天在线 | 激情五月五月婷婷 | 中文字幕在线观看免费观看 | 国产亚洲激情视频在线 | 欧美精品在线观看 | 美国三级黄色大片 | 最近中文字幕免费 | 一区二区三区播放 | 99久久国产免费,99久久国产免费大片 | 亚洲综合色视频在线观看 | 国产精品美女免费视频 | 九色视频网站 | 国产精品一区二区美女视频免费看 | 久久国产片 | 国产精品免费一区二区三区 | 91精品导航| 国产精品久久久区三区天天噜 | 91网址在线| 中文亚洲欧美日韩 | 黄网站a| 日本黄色免费电影网站 | 在线观看岛国av | 国产xx视频| 亚洲精品在线二区 | 在线亚洲欧美日韩 | 日日爱视频 | 久久久久免费精品视频 | 中文字幕91 | 免费av视屏| 久久精品人人做人人综合老师 | 五月婷婷综合在线观看 | 成人试看120秒 | 成年人在线免费视频观看 | 亚洲国产成人在线 | 国产免费叼嘿网站免费 | 亚洲视频大全 | 免费av网站在线 | 成人在线视 | 久久9999久久免费精品国产 | 亚洲天天在线日亚洲洲精 | 久免费| 精品一区二区三区久久 | a资源在线| 免费看成人av | adn—256中文在线观看 | 色婷婷综合成人av | 视频91在线 | 精品免费99久久 | 日韩一区二区在线免费观看 | 亚洲国产午夜 | 久久九九影院 | 少妇bbw撒尿 | 亚洲综合成人在线 | 亚洲欧洲精品视频 | 欧美特一级| 色射色| 色网影音先锋 | 欧美成人精品在线 | 国产精品99视频 | 色视频在线看 | 日韩免费视频观看 | 国产做a爱一级久久 | 国产精品黄色 | 麻豆网站免费观看 | 国产精品视频永久免费播放 | 精品福利视频在线 | 麻豆综合网 | 国产精品久久久久久久久蜜臀 | 久热超碰 | 日韩精品久久久久久 | 欧美一级性生活片 | 天天操月月操 | 亚洲天天干 | 色狠狠久久av五月综合 | 精品二区久久 | 精品一区二区在线免费观看 | 国产成人精品一区二区三区网站观看 | 91av视频播放 | 成人黄色中文字幕 | 免费的黄色av | 日本护士三级少妇三级999 | 国产精品毛片一区二区三区 | 欧美精品一区二区三区四区在线 | 亚洲一区二区高潮无套美女 | 国产一区在线视频 | 欧美日韩性视频在线 | 成人久久久久久久久久 | 国产亚洲成av片在线观看 | 国产 在线观看 | 日女人电影 | 成人免费在线电影 | 日韩免费播放 | 日本mv大片欧洲mv大片 | 国产女v资源在线观看 | www.黄色 | 精品美女在线观看 | 免费精品视频在线 | 日韩天堂在线观看 | 一区二区三区播放 | 日韩伦理一区二区三区av在线 | 91久久精品日日躁夜夜躁国产 | 免费在线黄色av | 国产99爱 | 久久久网站 | 日韩免费看视频 | 亚洲一区精品人人爽人人躁 | 69视频在线| 欧美日韩在线观看一区二区 | 日韩高清一区 | 激情综合网色播五月 | 欧美日韩国产精品一区二区 | 97日日 | 国产精品99久久免费观看 | 欧美污污网站 | 蜜臀aⅴ国产精品久久久国产 | 国产福利一区二区三区视频 | 国内精品久久久久久久久 | 天天射天天舔天天干 | 亚洲精品美女久久久久网站 | 亚洲欧美日韩精品久久奇米一区 | 亚洲激情中文 | 最新av在线播放 | 玖玖视频精品 | 国产精品成久久久久 | 国产精品美女久久久 | 欧美日韩不卡一区二区 | 在线 国产 日韩 | 夜夜操天天干 | 天堂av在线网址 | 2021国产精品视频 | 综合色伊人 | 欧美最猛性xxxxx免费 | 四虎影视成人永久免费观看亚洲欧美 | 日韩,中文字幕 | 欧美在线视频精品 | 在线免费成人 | 91中文字幕在线 | 色综合综合| 中文在线√天堂 | 日本中文字幕在线观看 | 伊人久操| 五月天高清欧美mv | 四虎在线观看 | 激情婷婷六月 | 国产成人精品亚洲精品 | 国产高清在线永久 | 中文字幕国产在线 | 中文字幕视频免费观看 | 国产成人精品一区二区三区在线 | 日韩免费播放 | 国产精成人品免费观看 | 日韩欧美高清一区二区 | 日韩三级在线观看 | 国产亚洲综合精品 | 在线看污网站 | 中文字幕人成乱码在线观看 | 玖玖玖影院 | 久久久久久久久久久免费视频 | 在线播放 日韩专区 | 91久久丝袜国产露脸动漫 | 99久久综合狠狠综合久久 | 99精品视频网站 | 国产精品综合久久久久久 | 播五月婷婷 | 最近免费中文字幕 | 国产成人精品免费在线观看 | 天天艹天天 | 日韩一区二区三区观看 | 久久综合射 | 成人av电影网址 | 91在线看视频免费 | 在线看黄色的网站 | 91麻豆文化传媒在线观看 | 美女网站免费福利视频 | 欧美日韩高清在线一区 | 中文av日韩| 久草在线视频中文 | 国产群p视频 | 国产视频1 | 久久久久久国产一区二区三区 | 91在线免费播放 | 超碰人人在 | 久久精品三级 | 国产亚洲精品久久久久秋 | 日批在线看 | 五月色综合 | 午夜色婷婷| 国产精品免费久久久久久 | 天天操天天曰 | 日韩三级中文字幕 | 狠狠色综合欧美激情 | 91在线免费公开视频 | 国产精品成久久久久三级 | 丁香花在线视频观看免费 | 亚洲国产成人在线播放 | 亚洲六月丁香色婷婷综合久久 | 国产中文字幕视频在线 | 在线亚洲天堂网 | 又色又爽的网站 | 免费观看www小视频的软件 | 久久久99国产精品免费 | 国产精品videossex国产高清 | 日韩理论在线播放 | 亚洲精品mv在线观看 | 中文字幕在线播放第一页 | 亚洲精区二区三区四区麻豆 | 9免费视频| 粉嫩av一区二区三区四区在线观看 | 成人网页在线免费观看 | 丁香免费视频 | 亚洲一区二区视频 | 欧美巨大荫蒂茸毛毛人妖 | 97成人超碰 | a国产精品| 日韩最新av | 色婷婷狠狠操 | 97国产在线播放 | 国产破处精品 | 免费看黄的 | 狠狠狠狠狠狠操 | 六月丁香六月婷婷 | 久草在线最新免费 | 激情视频一区二区 | 国产视频欧美视频 | 在线观看免费视频你懂的 | 婷婷色亚洲 | 欧美精品久久人人躁人人爽 | 久久精品久久精品久久 | 操操综合网 | 亚洲人成影院在线 | 麻花豆传媒mv在线观看网站 | 国产精品麻豆91 | 五月亚洲综合 | 综合色在线 | 一区二区三区高清在线 | 中文字幕免费播放 | 免费视频xnxx com| 亚洲热久久 | 国产精品专区h在线观看 | 精品999 | 久久国内精品视频 | 亚洲视频久久久 | 深夜激情影院 | 国产成人一级电影 | 91视频最新网址 | 久久精品永久免费 | 国产久草在线 | 国产精品美女免费视频 | 久久精品美女 | 亚洲精品久久久久久中文传媒 | 91av大全| 天天草天天干 | 青青河边草观看完整版高清 | 综合久久久久久久久 | 99在线观看 | 欧美日韩高清一区二区 | 深夜福利视频在线观看 | 国产精品久久久久久一区二区 | 人人精久 | 亚洲亚洲精品在线观看 | 免费观看黄色12片一级视频 | 91精品视频免费观看 | 91九色pron| 涩涩网站免费 | 91在线视频| 中文永久免费观看 | 亚洲狠狠婷婷综合久久久 | 丁香高清视频在线看看 | 日韩av电影免费在线观看 | 国产亚洲欧美精品久久久久久 | 国产精品久久久久久一区二区三区 | 91传媒免费观看 | 久久新| 黄色软件在线观看视频 | 亚洲精品国产精品99久久 | 久久麻豆精品 | 精品欧美小视频在线观看 | 91福利在线导航 | 五月开心六月婷婷 | 国产一区二区久久久久 | 69精品 | 免费观看国产精品 | 久久久久五月 | 亚洲精品视频 | 精品中文字幕在线播放 | 久久久99久久 | 国产亚洲成av片在线观看 | 精品美女在线视频 | 在线观看成人国产 | 五月天丁香 | 亚洲精品黄色在线观看 | 亚洲欧美日本一区二区三区 | 欧美日韩一区二区免费在线观看 | 天天操操操操操操 | 国产免费xvideos视频入口 | 国产一级在线 | 国产自在线 | 国产精品99爱 | 中文字幕av全部资源www中文字幕在线观看 | 97精品国产97久久久久久春色 | 久久精品资源 | 99精品视频一区 | 亚洲视频,欧洲视频 | 国产色拍| 一级黄色免费 | 婷婷丁香激情五月 | 久久国产热 | 午夜国产福利在线观看 | 国产免费一区二区三区最新 | 91精品久久久久久久久久入口 | 欧美色综合 | 91av亚洲| 日日夜夜干 | 日韩在线| 在线免费高清 | 99精品在线观看视频 | 麻豆一二三精选视频 | 日韩精品免费在线视频 | 91精品在线免费观看视频 | 国产精品永久 | 亚洲国产日韩欧美在线 | 三三级黄色片之日韩 | 国产青青青 | 国产二区视频在线观看 | 激情www | 久久人人爽人人爽人人片av免费 | 88av网站| 狠狠色综合网站久久久久久久 | 色天天综合网 | japanese黑人亚洲人4k | av黄色成人 | 色99在线 | 欧美日韩国产二区三区 | 久久午夜电影网 | av日韩中文| 91久久精| 91视频免费观看 | 天天干干| 久久免费视频99 | 亚洲欧美日韩国产 | 99视频+国产日韩欧美 | 欧美一级电影在线观看 | 久久久久久网址 | 成人免费在线视频 | 黄色一级大片在线免费看产 | 亚州av网站 | 欧美亚洲精品一区 | 国产91亚洲精品 | 久久精品伊人 | 日本高清dvd | 婷婷深爱五月 | 国产亚洲一区 | 日韩草比| 中文字幕在线观看视频免费 | 中文字幕高清视频 | 99视频精品全部免费 在线 | 国产一级精品绿帽视频 | 久久久久久网址 | 在线看成人片 | 国产精品久久久久av福利动漫 | 色综合天天狠天天透天天伊人 | 精品国产美女在线 | 久久全国免费视频 | 91福利社在线观看 | 成人a级黄色片 | 日本中文字幕网址 | 亚洲三级在线免费观看 | 久久人人爽人人爽人人片 | 国产精品1区2区 | 久草在线视频精品 | 国产一线二线三线性视频 | 久久视频免费看 | 一区二区中文字幕在线 | 欧美日韩国产精品一区二区三区 | 国产aa精品| 久久视频6 | 午夜电影中文字幕 | 手机在线欧美 | 欧美精品v国产精品 | a黄色片在线观看 | 国产在线精品一区二区不卡了 | 人人插人人玩 | 日韩午夜网站 | 国产一区二区在线观看免费 | 日本少妇高清做爰视频 | 国产精品一区二区久久久 | 免费看毛片网站 | 国产一级黄色片免费看 | 亚洲精品大片www | 欧美韩国在线 | av在线网站观看 | 日日日日日 | 久久久精品成人 | 99久久久国产免费 | 日韩黄色网络 | a黄色大片 | 黄色成人av网址 | 色小说av| 欧美精彩视频在线观看 | 99久久久久成人国产免费 | 高潮毛片无遮挡高清免费 | 久久精品爱爱视频 | 久久精品视频免费观看 | 五月婷婷播播 | 亚洲最大色 | 亚洲日本va中文字幕 | 人人看黄色 | 国产高清久久久 | 一区二区三区在线电影 | 国产中文字幕在线播放 | 日日色综合 | 色视频 在线 | 国产丝袜网站 | 国产区第一页 | 草在线 | 色七七亚洲影院 | 午夜久久成人 | 97精品国产91久久久久久久 | 色婷婷综合久久久中文字幕 | 中文区中文字幕免费看 | 国产精品一二三 | 91精品国产综合久久福利 | 免费精品在线 | 91精品一区二区三区蜜臀 | 天天激情在线 | 久久伦理电影网 | 日韩精品不卡在线 | 成人午夜性影院 | 免费电影播放 | 国产91大片 | 国产探花在线看 | 天天色天天综合网 | 国产亚洲午夜高清国产拍精品 | 九九视频热 | 黄色精品久久 | 超碰人在线 | 国产福利精品视频 | 精品在线免费观看 | 久久久久亚洲精品 | 免费97视频| 美州a亚洲一视本频v色道 | 久久艹国产视频 | 日韩电影在线观看一区二区三区 | 97超碰人人| 日韩在线观看视频网站 | 一区二区三区www | 在线免费国产 | 一区二区三区动漫 | 欧美午夜一区二区福利视频 | 丁香在线观看完整电影视频 | 亚洲视频 一区 | 久久精品免费观看 | 久久九九免费视频 | 国产在线观看你懂得 | 欧美日韩高清在线 | 国产精品网址在线观看 | 亚洲狠狠丁香婷婷综合久久久 | 国产视频1区2区 | 精品一区二区免费 | 九色视频网 | 国产精品乱码一区二区视频 | 亚州精品在线视频 | 午夜精品久久久久久久99热影院 | www.91国产| 国产视频 亚洲精品 | 国内成人精品视频 | 青春草免费在线视频 | 黄色国产在线 | 在线日韩三级 | 亚洲专区中文字幕 | 天天干天天干天天射 | 一区二区影院 | 亚洲免费av片| 久久久精品在线观看 | 精品一区久久 | 波多野结衣视频在线 | 成人毛片在线观看视频 | 免费在线观看av网站 | 午夜丁香视频在线观看 | 国产午夜精品免费一区二区三区视频 | 久久6精品 | 在线视频第一页 | 黄色综合 | 伊人狠狠操 | 亚洲干视频在线观看 | 最近中文字幕完整视频高清1 | 国语对白少妇爽91 | 国产精品入口麻豆 | 国产一级免费在线 | 色无五月 | 午夜手机电影 | 国产香蕉97碰碰久久人人 | 久草视频在线资源站 | 国产精品久久久久久久av大片 | 国产精品久久久久久久久久免费看 | 久久久在线视频 | 91成人精品一区在线播放69 | 992tv又爽又黄的免费视频 | 国产精品乱码久久 | 青春草国产视频 | 亚洲视频资源在线 | 成人免费影院 | 狠狠色狠狠综合久久 | 日韩区在线观看 | av三级在线看| 成人a级黄色片 | 国产精品淫片 | av片子在线观看 | 婷婷丁香av | free. 性欧美.com| 日韩中文字幕电影 | 91精品天码美女少妇 | 超碰在线亚洲 | 久久久国产毛片 | 亚洲最大成人网4388xx | 久久久福利影院 | 色婷婷影视 | 欧美日韩高清免费 | 去看片 | 97爱爱爱| 亚洲伊人网在线观看 | 久久av影视 | 午夜免费电影院 | 欧美久久久 | 中文字幕在线观看不卡 | 欧美成年性 | 欧美 亚洲 另类 激情 另类 | 午夜色性片 | 在线观看色网 | 操高跟美女 | 久久久午夜剧场 | 97精品欧美91久久久久久 | 99久久久免费视频 | 国产视频一 | 91中文在线视频 | 黄色激情网址 | 91看片网址| 在线超碰av | 丝袜护士aⅴ在线白丝护士 天天综合精品 | 99视频在线免费 | 少妇bbb搡bbbb搡bbbb | 射九九| 999久久久久久 | 成人午夜影院在线观看 | 国产在线成人 | av综合网址 | 91av蜜桃| 91大神在线观看视频 | 特级黄色视频毛片 | 国产精品久久久久久久99 | 在线观看成人av | 久久黄色网址 | 伊色综合久久之综合久久 | 精品亚洲成a人在线观看 | 欧美午夜精品久久久久久浪潮 | 精品中文字幕在线播放 | 天天干天天干天天干 | 欧美电影在线观看 | 国内久久精品视频 | 精品在线观看一区二区三区 | 久久99热这里只有精品国产 | 国产中文欧美日韩在线 | 成人在线视频在线观看 | 国产精品久久久久久久7电影 | 国产一级特黄电影 | 91av电影在线观看 | 久久精品久久综合 | 国产福利精品一区二区 | 日韩二区在线播放 | 激情图片区 | 国产精品美女久久久免费 | 毛片.com| 亚洲精品456在线播放乱码 | 99久久精品国产欧美主题曲 | 亚洲精品玖玖玖av在线看 | 日韩精品在线看 | 二区三区av| 国产精品福利小视频 | 狠狠狠色丁香综合久久天下网 | 久久高视频 | 久久久99精品免费观看 | 亚洲午夜精品一区 | 三级免费黄色 | 亚洲国产精品va在线看黑人动漫 | 天天摸天天干天天操天天射 | 中文字幕在线视频第一页 | 欧美日韩国产精品一区 | 久久久av免费 | 特级黄色片免费看 | 黄色av电影一级片 | 99久久综合狠狠综合久久 | 黄色h在线观看 | 国产精品美女久久久久久2018 | 三上悠亚一区二区在线观看 | 国产91在线看 | av电影在线免费 | 日韩中文字幕国产 | 午夜成人免费影院 | 中文字幕av在线 | 久久精品亚洲综合专区 | 九九视频免费观看视频精品 | 黄网av在线 | 日韩综合一区二区三区 | 亚洲狠狠婷婷综合久久久 | 国产打女人屁股调教97 | 久久99亚洲热视 | 亚洲在线精品视频 | 久久中文精品视频 | 久久夜色精品国产欧美乱 | 日本在线h | 国产又黄又爽无遮挡 | 国产糖心vlog在线观看 | 亚洲资源 | 国产一区成人在线 | 精品主播网红福利资源观看 | 国产视频黄 | 91久久国产综合精品女同国语 | 欧美日韩在线观看一区二区 | 国产成人在线一区 | 在线导航av | 视频三区 | 正在播放 国产精品 | 欧美俄罗斯性视频 | 欧美一区二区在线免费看 | 91精品国产91久久久久久三级 | 国产很黄很色的视频 | 91av官网| 五月天婷婷在线观看视频 | av亚洲产国偷v产偷v自拍小说 | 青青河边草免费直播 | 狠狠色丁香婷婷综合视频 | 久久人人看| 亚洲丁香久久久 | 日韩欧美69| 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 丁香在线视频 | 中文字幕第 | av大全在线免费观看 | 国产麻豆视频免费观看 | 91av免费观看 | 激情久久五月 | 国产福利av| 91精品免费在线视频 | 国产一区在线观看视频 | 波多野结衣理论片 | 91丨九色丨91啦蝌蚪老版 | 中文字幕av免费在线观看 | 欧美午夜精品久久久久 | 久久99亚洲精品 | 欧美精品小视频 | 国产成人免费观看 | 国产一级a毛片视频爆浆 | 午夜三级大片 | 最新中文字幕在线资源 | 国产1区在线| 91亚洲精品在线 | 成人a视频在线观看 | 亚洲成人av在线电影 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 婷婷开心久久网 | 婷婷中文字幕综合 | 国产香蕉视频在线观看 | 黄色福利网站 | 亚洲一区美女视频在线观看免费 | 日韩a在线 | 日韩欧美高清免费 | 中文字幕 国产视频 | 国产精品久久久久久久av电影 | 最新精品国产 | 国产精品日韩在线 | 黄污视频网站 | 国产高清不卡av | 91大神免费视频 | 精品日韩在线 | 亚洲视频电影在线 | 久久伦理电影 | 成人在线播放av | 国产精品va在线观看入 | 玖玖玖国产精品 | 久久视频在线观看中文字幕 | 人人爽人人爽 | 久草在线视频首页 | 91精品免费 | 亚洲美女视频网 | 国产露脸91国语对白 | 一区在线观看 | 香蕉视频在线视频 | 国产一区二区网址 | 久久福利影视 | 久草在线中文888 | 爱爱av网| 美女av免费| 久久免费高清视频 | 又黄又刺激视频 | 激情大尺度视频 | 亚洲爱视频 | 91麻豆精品国产91 | 色狠狠婷婷 | 国产精品久久久久久久久软件 | 97人人澡人人添人人爽超碰 | 亚洲精品麻豆视频 | 久草综合在线观看 | 亚洲一级片在线观看 | 91精品秘密在线观看 | 不卡的av电影 | 天天综合网国产 | 亚洲国产小视频在线观看 | 国内精品视频久久 | 97超级碰碰碰视频在线观看 | 日本在线观看视频一区 | 国产精品一区在线观看 | 国产高清小视频 | 96av视频 | 天天碰天天操视频 | 日韩欧美综合 | 国产亚洲欧洲 | 精品国产片 | 99久久精品一区二区成人 | 91九色视频国产 | 国产精品久久9 | 色中色资源站 | 免费又黄又爽的视频 | 美女一区网站 | 中文字幕 国产视频 | 亚洲专区 国产精品 | 国产精品成人免费精品自在线观看 | 国产精品黄色影片导航在线观看 | 97超碰.com | 成 人 黄 色视频免费播放 | 韩国一区二区三区视频 | 中文在线字幕免 | 1024久久 | 96香蕉视频 | 日韩av看片 | 亚洲国产网址 | 91成人精品在线 | 麻豆91在线观看 | 日本视频不卡 | 麻豆免费视频 | 国产精品手机播放 | 欧美欧美 | 999日韩| 成人精品一区二区三区电影免费 | 亚洲高清久久久 | 午夜精品久久久久久久久久久久久久 | 亚洲第一区在线播放 | 天天干天天怕 | 人人看看人人 | 国产伦理久久精品久久久久_ | 国产无限资源在线观看 | 欧美另类69 | 久久1电影院 | 天天色天天操天天爽 | 婷婷综合 | 精品亚洲在线 | 毛片区 | 久久久久久久国产精品影院 | 亚洲性视频 | 欧洲一区精品 | 色综合在| 国产成人av在线影院 | 毛片一级免费一级 | 超碰成人免费电影 | 国产一级视频在线免费观看 | 天天操比 | 香蕉在线影院 | www.国产在线视频 | 精品久久一 | 中文字幕在线观看三区 | 国产精品久久久久婷婷 | 亚洲激情婷婷 | 91成人网在线 | 天天拍天天操 | 国产手机精品视频 | 九色91福利 | 91成人天堂久久成人 | 国产高清精品在线 | 综合久久精品 | 美女精品网站 | 日韩av在线免费播放 | 国产91国语对白在线 | 91中文字幕一区 | 人人看看人人 | 天天做日日爱夜夜爽 | 久久成人高清视频 | 天天色综合天天 | 成全免费观看视频 | 最近日本韩国中文字幕 | 激情视频在线高清看 | 九九免费在线观看视频 | www.夜夜夜 | 日韩亚洲国产精品 | 国产精品久久久久久超碰 | 亚洲涩涩网站 | 久久中文字幕导航 | 一区三区视频在线观看 | 欧美xxxx性xxxxx高清 | 国产精品中文字幕在线 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 欧美日韩在线免费观看 | av黄色在线观看 | 成人免费观看a | 综合激情|