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

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

?? pcm_bluetooth.c

?? 基于LINUX內(nèi)核驅動的開發(fā)
?? C
?? 第 1 頁 / 共 3 頁
字號:
		DBG("No supported channel modes");		return -1;	}	if (cfg->has_block_length)		cap->block_length = cfg->block_length;	else if (cap->block_length & BT_A2DP_BLOCK_LENGTH_16)		cap->block_length = BT_A2DP_BLOCK_LENGTH_16;	else if (cap->block_length & BT_A2DP_BLOCK_LENGTH_12)		cap->block_length = BT_A2DP_BLOCK_LENGTH_12;	else if (cap->block_length & BT_A2DP_BLOCK_LENGTH_8)		cap->block_length = BT_A2DP_BLOCK_LENGTH_8;	else if (cap->block_length & BT_A2DP_BLOCK_LENGTH_4)		cap->block_length = BT_A2DP_BLOCK_LENGTH_4;	else {		DBG("No supported block lengths");		return -1;	}	if (cfg->has_subbands)		cap->subbands = cfg->subbands;	if (cap->subbands & BT_A2DP_SUBBANDS_8)		cap->subbands = BT_A2DP_SUBBANDS_8;	else if (cap->subbands & BT_A2DP_SUBBANDS_4)		cap->subbands = BT_A2DP_SUBBANDS_4;	else {		DBG("No supported subbands");		return -1;	}	if (cfg->has_allocation_method)		cap->allocation_method = cfg->allocation_method;	if (cap->allocation_method & BT_A2DP_ALLOCATION_LOUDNESS)		cap->allocation_method = BT_A2DP_ALLOCATION_LOUDNESS;	else if (cap->allocation_method & BT_A2DP_ALLOCATION_SNR)		cap->allocation_method = BT_A2DP_ALLOCATION_SNR;	if (cfg->has_bitpool)		min_bitpool = max_bitpool = cfg->bitpool;	else {		min_bitpool = MAX(MIN_BITPOOL, cap->min_bitpool);		max_bitpool = MIN(default_bitpool(cap->frequency,					cap->channel_mode),					cap->max_bitpool);	}	cap->min_bitpool = min_bitpool;	cap->max_bitpool = max_bitpool;	return 0;}static void bluetooth_a2dp_setup(struct bluetooth_a2dp *a2dp){	sbc_capabilities_t active_capabilities = a2dp->sbc_capabilities;	if (a2dp->sbc_initialized)		sbc_reinit(&a2dp->sbc, 0);	else		sbc_init(&a2dp->sbc, 0);	a2dp->sbc_initialized = 1;	if (active_capabilities.frequency & BT_SBC_SAMPLING_FREQ_16000)		a2dp->sbc.frequency = SBC_FREQ_16000;	if (active_capabilities.frequency & BT_SBC_SAMPLING_FREQ_32000)		a2dp->sbc.frequency = SBC_FREQ_32000;	if (active_capabilities.frequency & BT_SBC_SAMPLING_FREQ_44100)		a2dp->sbc.frequency = SBC_FREQ_44100;	if (active_capabilities.frequency & BT_SBC_SAMPLING_FREQ_48000)		a2dp->sbc.frequency = SBC_FREQ_48000;	if (active_capabilities.channel_mode & BT_A2DP_CHANNEL_MODE_MONO)		a2dp->sbc.mode = SBC_MODE_MONO;	if (active_capabilities.channel_mode & BT_A2DP_CHANNEL_MODE_DUAL_CHANNEL)		a2dp->sbc.mode = SBC_MODE_DUAL_CHANNEL;	if (active_capabilities.channel_mode & BT_A2DP_CHANNEL_MODE_STEREO)		a2dp->sbc.mode = SBC_MODE_STEREO;	if (active_capabilities.channel_mode & BT_A2DP_CHANNEL_MODE_JOINT_STEREO)		a2dp->sbc.mode = SBC_MODE_JOINT_STEREO;	a2dp->sbc.allocation = active_capabilities.allocation_method				== BT_A2DP_ALLOCATION_SNR ? SBC_AM_SNR				: SBC_AM_LOUDNESS;	switch (active_capabilities.subbands) {	case BT_A2DP_SUBBANDS_4:		a2dp->sbc.subbands = SBC_SB_4;		break;	case BT_A2DP_SUBBANDS_8:		a2dp->sbc.subbands = SBC_SB_8;		break;	}	switch (active_capabilities.block_length) {	case BT_A2DP_BLOCK_LENGTH_4:		a2dp->sbc.blocks = SBC_BLK_4;		break;	case BT_A2DP_BLOCK_LENGTH_8:		a2dp->sbc.blocks = SBC_BLK_8;		break;	case BT_A2DP_BLOCK_LENGTH_12:		a2dp->sbc.blocks = SBC_BLK_12;		break;	case BT_A2DP_BLOCK_LENGTH_16:		a2dp->sbc.blocks = SBC_BLK_16;		break;	}	a2dp->sbc.bitpool = active_capabilities.max_bitpool;	a2dp->codesize = sbc_get_codesize(&a2dp->sbc);	a2dp->count = sizeof(struct rtp_header) + sizeof(struct rtp_payload);}static int bluetooth_a2dp_hw_params(snd_pcm_ioplug_t *io,					snd_pcm_hw_params_t *params){	struct bluetooth_data *data = io->private_data;	struct bluetooth_a2dp *a2dp = &data->a2dp;	char buf[BT_AUDIO_IPC_PACKET_SIZE];	bt_audio_rsp_msg_header_t *rsp_hdr = (void*) buf;	struct bt_setconfiguration_req *setconf_req = (void*) buf;	struct bt_setconfiguration_rsp *setconf_rsp = (void*) buf;	int err;	DBG("Preparing with io->period_size=%lu io->buffer_size=%lu",					io->period_size, io->buffer_size);	err = bluetooth_a2dp_init(data, params);	if (err < 0)		return err;	memset(setconf_req, 0, BT_AUDIO_IPC_PACKET_SIZE);	setconf_req->h.msg_type = BT_SETCONFIGURATION_REQ;	strncpy(setconf_req->device, data->alsa_config.device, 18);	setconf_req->transport = BT_CAPABILITIES_TRANSPORT_A2DP;	setconf_req->sbc_capabilities = a2dp->sbc_capabilities;	setconf_req->access_mode = (io->stream == SND_PCM_STREAM_PLAYBACK ?			BT_CAPABILITIES_ACCESS_MODE_WRITE :			BT_CAPABILITIES_ACCESS_MODE_READ);	err = audioservice_send(data->server.fd, &setconf_req->h);	if (err < 0)		return err;	err = audioservice_expect(data->server.fd, &rsp_hdr->msg_h,					BT_SETCONFIGURATION_RSP);	if (err < 0)		return err;	if (rsp_hdr->posix_errno != 0) {		SNDERR("BT_SETCONFIGURATION failed : %s(%d)",					strerror(rsp_hdr->posix_errno),					rsp_hdr->posix_errno);		return -rsp_hdr->posix_errno;	}	data->transport = setconf_rsp->transport;	data->link_mtu = setconf_rsp->link_mtu;	/* Setup SBC encoder now we agree on parameters */	bluetooth_a2dp_setup(a2dp);	DBG("\tallocation=%u\n\tsubbands=%u\n\tblocks=%u\n\tbitpool=%u\n",		a2dp->sbc.allocation, a2dp->sbc.subbands, a2dp->sbc.blocks,		a2dp->sbc.bitpool);	return 0;}static int bluetooth_poll_descriptors(snd_pcm_ioplug_t *io,					struct pollfd *pfd, unsigned int space){	struct bluetooth_data *data = io->private_data;	assert(io);	if (space < 1)		return 0;	pfd[0].fd = data->stream.fd;	pfd[0].events = POLLIN;	pfd[0].revents = 0;	return 1;}static int bluetooth_poll_revents(snd_pcm_ioplug_t *io ATTRIBUTE_UNUSED,					struct pollfd *pfds, unsigned int nfds,					unsigned short *revents){	assert(pfds && nfds == 1 && revents);	*revents = pfds[0].revents;	return 0;}static int bluetooth_playback_poll_descriptors(snd_pcm_ioplug_t *io,					struct pollfd *pfd, unsigned int space){	struct bluetooth_data *data = io->private_data;	DBG("");	assert(data->pipefd[0] >= 0);	if (space < 1)		return 0;	pfd[0].fd = data->pipefd[0];	pfd[0].events = POLLIN;	pfd[0].revents = 0;	return 1;}static int bluetooth_playback_poll_revents(snd_pcm_ioplug_t *io,					struct pollfd *pfds, unsigned int nfds,					unsigned short *revents){	static char buf[1];	int ret;	DBG("");	assert(pfds);	assert(nfds == 1);	assert(revents);	assert(pfds[0].fd >= 0);	if (io->state != SND_PCM_STATE_PREPARED)		ret = read(pfds[0].fd, buf, 1);	*revents = (pfds[0].revents & ~POLLIN) | POLLOUT;	return 0;}static snd_pcm_sframes_t bluetooth_hsp_read(snd_pcm_ioplug_t *io,				const snd_pcm_channel_area_t *areas,				snd_pcm_uframes_t offset,				snd_pcm_uframes_t size){	struct bluetooth_data *data = io->private_data;	snd_pcm_uframes_t frames_to_write, ret;	unsigned char *buff;	int nrecv, frame_size = 0;	DBG("areas->step=%u areas->first=%u offset=%lu size=%lu io->nonblock=%u",			areas->step, areas->first, offset, size, io->nonblock);	frame_size = areas->step / 8;	if (data->count > 0)		goto proceed;	nrecv = recv(data->stream.fd, data->buffer, data->link_mtu,			MSG_WAITALL | (io->nonblock ? MSG_DONTWAIT : 0));	if (nrecv < 0) {		ret = (errno == EPIPE) ? -EIO : -errno;		goto done;	}	if (nrecv != data->link_mtu) {		ret = -EIO;		SNDERR(strerror(-ret));		goto done;	}	/* Increment hardware transmition pointer */	data->hw_ptr = (data->hw_ptr + data->link_mtu / frame_size) %				io->buffer_size;proceed:	buff = (unsigned char *) areas->addr +			(areas->first + areas->step * offset) / 8;	if ((data->count + size * frame_size) <= data->link_mtu)		frames_to_write = size;	else		frames_to_write = (data->link_mtu - data->count) / frame_size;	memcpy(buff, data->buffer + data->count, frame_size * frames_to_write);	data->count += (frame_size * frames_to_write);	data->count %= data->link_mtu;	/* Return written frames count */	ret = frames_to_write;done:	DBG("returning %lu", ret);	return ret;}static snd_pcm_sframes_t bluetooth_hsp_write(snd_pcm_ioplug_t *io,				const snd_pcm_channel_area_t *areas,				snd_pcm_uframes_t offset,				snd_pcm_uframes_t size){	struct bluetooth_data *data = io->private_data;	snd_pcm_sframes_t ret = 0;	snd_pcm_uframes_t frames_to_read;	uint8_t *buff;	int rsend, frame_size;	DBG("areas->step=%u areas->first=%u offset=%lu, size=%lu io->nonblock=%u",			areas->step, areas->first, offset, size, io->nonblock);	if (io->hw_ptr > io->appl_ptr) {		ret = bluetooth_playback_stop(io);		if (ret == 0)			ret = -EPIPE;		goto done;	}	frame_size = areas->step / 8;	if ((data->count + size * frame_size) <= data->link_mtu)		frames_to_read = size;	else		frames_to_read = (data->link_mtu - data->count) / frame_size;	DBG("count=%d frames_to_read=%lu", data->count, frames_to_read);	/* Ready for more data */	buff = (uint8_t *) areas->addr +			(areas->first + areas->step * offset) / 8;	memcpy(data->buffer + data->count, buff, frame_size * frames_to_read);	/* Remember we have some frames in the pipe now */	data->count += frames_to_read * frame_size;	if (data->count != data->link_mtu) {		ret = frames_to_read;		goto done;	}	rsend = send(data->stream.fd, data->buffer, data->link_mtu,			io->nonblock ? MSG_DONTWAIT : 0);	if (rsend > 0) {		/* Reset count pointer */		data->count = 0;		ret = frames_to_read;	} else if (rsend < 0)		ret = (errno == EPIPE) ? -EIO : -errno;	else		ret = -EIO;done:	DBG("returning %ld", ret);	return ret;}static snd_pcm_sframes_t bluetooth_a2dp_read(snd_pcm_ioplug_t *io,				const snd_pcm_channel_area_t *areas,				snd_pcm_uframes_t offset,				snd_pcm_uframes_t size){	snd_pcm_uframes_t ret = 0;	return ret;}static int avdtp_write(struct bluetooth_data *data){	int ret = 0;	struct rtp_header *header;	struct rtp_payload *payload;	struct bluetooth_a2dp *a2dp = &data->a2dp;	header = (void *) a2dp->buffer;	payload = (void *) (a2dp->buffer + sizeof(*header));	memset(a2dp->buffer, 0, sizeof(*header) + sizeof(*payload));	payload->frame_count = a2dp->frame_count;	header->v = 2;	header->pt = 1;	header->sequence_number = htons(a2dp->seq_num);	header->timestamp = htonl(a2dp->nsamples);	header->ssrc = htonl(1);        ret = send(data->stream.fd, a2dp->buffer, a2dp->count, MSG_DONTWAIT);	if (ret < 0) {		DBG("send returned %d errno %s.", ret, strerror(errno));		ret = -errno;	}	/* Reset buffer of data to send */	a2dp->count = sizeof(struct rtp_header) + sizeof(struct rtp_payload);	a2dp->frame_count = 0;	a2dp->samples = 0;	a2dp->seq_num++;	return ret;}static snd_pcm_sframes_t bluetooth_a2dp_write(snd_pcm_ioplug_t *io,				const snd_pcm_channel_area_t *areas,				snd_pcm_uframes_t offset, snd_pcm_uframes_t size){	struct bluetooth_data *data = io->private_data;	struct bluetooth_a2dp *a2dp = &data->a2dp;	snd_pcm_sframes_t ret = 0;	snd_pcm_uframes_t frames_to_read, frames_left = size;	int frame_size, encoded, written;	uint8_t *buff;	DBG("areas->step=%u areas->first=%u offset=%lu size=%lu",				areas->step, areas->first, offset, size);	DBG("hw_ptr=%lu appl_ptr=%lu diff=%lu", io->hw_ptr, io->appl_ptr,			io->appl_ptr - io->hw_ptr);	if (io->hw_ptr > io->appl_ptr) {		ret = bluetooth_playback_stop(io);		if (ret == 0)			ret = -EPIPE;		data->reset = 1;		goto done;	}	/* Check if we should autostart */	if (io->state == SND_PCM_STATE_PREPARED) {		snd_pcm_sw_params_t *swparams;		snd_pcm_uframes_t threshold;		snd_pcm_sw_params_malloc(&swparams);		if (!snd_pcm_sw_params_current(io->pcm, swparams) &&				!snd_pcm_sw_params_get_start_threshold(swparams,								&threshold)) {			if (io->appl_ptr >= threshold) {				ret = snd_pcm_start(io->pcm);				if (ret != 0)					goto done;			}		}		snd_pcm_sw_params_free(swparams);	}	while (frames_left > 0) {		frame_size = areas->step / 8;		if ((data->count + frames_left * frame_size) <= a2dp->codesize)			frames_to_read = frames_left;		else			frames_to_read = (a2dp->codesize - data->count) / frame_size;		DBG("count=%d frames_to_read=%lu", data->count, frames_to_read);		DBG("a2dp.count=%d data.link_mtu=%d", a2dp->count, data->link_mtu);		/* FIXME: If state is not streaming then return */		/* Ready for more data */		buff = (uint8_t *) areas->addr +			(areas->first + areas->step * (offset + ret)) / 8;		memcpy(data->buffer + data->count, buff,				frame_size * frames_to_read);		/* Remember we have some frames in the pipe now */		data->count += frames_to_read * frame_size;		if (data->count != a2dp->codesize) {			ret = frames_to_read;			goto done;		}		/* Enough data to encode (sbc wants 1k blocks) */		encoded = sbc_encode(&(a2dp->sbc), data->buffer, a2dp->codesize,					a2dp->buffer + a2dp->count,					sizeof(a2dp->buffer) - a2dp->count,					&written);		if (encoded <= 0) {			DBG("Encoding error %d", encoded);			goto done;		}		data->count -= encoded;		a2dp->count += written;		a2dp->frame_count++;		a2dp->samples += encoded / frame_size;		a2dp->nsamples += encoded / frame_size;		DBG("encoded=%d  written=%d count=%d", encoded,				written, a2dp->count);		/* No space left for another frame then send */		if (a2dp->count + written >= data->link_mtu) {			avdtp_write(data);			DBG("sending packet %d, count %d, link_mtu %u",					a2dp->seq_num, a2dp->count,					data->link_mtu);		}		ret += frames_to_read;		frames_left -= frames_to_read;	}	/* note: some ALSA apps will get confused otherwise */	if (ret > size)		ret = size;done:	DBG("returning %ld", ret);	return ret;}static int bluetooth_playback_delay(snd_pcm_ioplug_t *io,					snd_pcm_sframes_t *delayp){	DBG("");	/* This updates io->hw_ptr value using pointer() function */	snd_pcm_hwsync(io->pcm);	*delayp = io->appl_ptr - io->hw_ptr;	if ((io->state == SND_PCM_STATE_RUNNING) && (*delayp < 0)) {		io->callback->stop(io);		io->state = SND_PCM_STATE_XRUN;		*delayp = 0;	}	/* This should never fail, ALSA API is really not	prepared to handle a non zero return value */	return 0;}static snd_pcm_ioplug_callback_t bluetooth_hsp_playback = {	.start			= bluetooth_playback_start,	.stop			= bluetooth_playback_stop,	.pointer		= bluetooth_pointer,	.close			= bluetooth_close,	.hw_params		= bluetooth_hsp_hw_params,	.prepare		= bluetooth_prepare,	.transfer		= bluetooth_hsp_write,	.poll_descriptors	= bluetooth_playback_poll_descriptors,	.poll_revents		= bluetooth_playback_poll_revents,	.delay			= bluetooth_playback_delay,};static snd_pcm_ioplug_callback_t bluetooth_hsp_capture = {	.start			= bluetooth_start,	.stop			= bluetooth_stop,	.pointer		= bluetooth_pointer,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美大片在线观看| 日本va欧美va精品发布| 蜜桃久久久久久| 91视频国产资源| 久久精品免费在线观看| 日本午夜一区二区| 91福利在线播放| 亚洲少妇中出一区| 成人激情免费视频| 日韩一区二区三区免费观看| 亚洲精品成人精品456| 国产69精品久久99不卡| 日韩欧美一级二级三级 | 自拍偷拍亚洲欧美日韩| 国产成人午夜电影网| 日韩欧美国产一二三区| 免播放器亚洲一区| 69av一区二区三区| 亚洲制服丝袜一区| 色88888久久久久久影院野外| 亚洲色图欧洲色图婷婷| 成人晚上爱看视频| 亚洲欧洲三级电影| 成人动漫av在线| 最近中文字幕一区二区三区| 成人美女在线观看| 精品国产凹凸成av人导航| 理论片日本一区| 久久久久久综合| 91麻豆国产福利精品| 亚洲激情自拍视频| 7777精品伊人久久久大香线蕉完整版 | 欧美中文一区二区三区| 亚洲成av人片一区二区| 欧美一区二区三区不卡| 午夜日韩在线电影| 久久女同互慰一区二区三区| 岛国av在线一区| 亚洲男同性恋视频| 欧美高清视频www夜色资源网| 九九**精品视频免费播放| 国产欧美一区二区精品性色超碰| 91丨porny丨在线| 美女脱光内衣内裤视频久久网站 | 麻豆精品在线视频| 国产欧美精品区一区二区三区| 色综合久久88色综合天天免费| 日本视频一区二区三区| 国产精品你懂的| 欧美日韩国产精品自在自线| 国产真实乱对白精彩久久| 亚洲日韩欧美一区二区在线| 日韩亚洲电影在线| 国产aⅴ综合色| 日本强好片久久久久久aaa| 亚洲精品中文在线影院| 精品国产伦一区二区三区观看体验| 97久久超碰精品国产| 美女视频网站黄色亚洲| 亚洲一区在线观看网站| 欧美激情一区三区| 欧美不卡一区二区三区四区| 色婷婷精品大视频在线蜜桃视频| 国产精品 欧美精品| 精东粉嫩av免费一区二区三区| 久久久久久久久久久久久女国产乱| 在线视频你懂得一区二区三区| 欧美电影免费观看高清完整版| 欧美日韩一区二区不卡| 欧美在线你懂得| 色美美综合视频| 国产美女精品在线| 久久精品国产77777蜜臀| 亚洲成人免费在线观看| 亚洲一区电影777| 亚洲第一福利一区| 亚洲国产va精品久久久不卡综合| 18涩涩午夜精品.www| 亚洲日本一区二区三区| √…a在线天堂一区| 最新不卡av在线| 亚洲自拍偷拍网站| 亚洲成人午夜影院| 日精品一区二区| 国产原创一区二区| 久久不见久久见免费视频7| 国内成人自拍视频| 成人精品国产一区二区4080| 粉嫩嫩av羞羞动漫久久久 | 欧美肥大bbwbbw高潮| 欧美日韩美女一区二区| 色域天天综合网| 国产成人免费视频| 岛国av在线一区| 91在线无精精品入口| 在线观看欧美日本| 精品视频在线看| 日韩手机在线导航| 8x8x8国产精品| 欧美精选午夜久久久乱码6080| 欧美卡1卡2卡| 久久这里都是精品| 国产精品国产a| 亚洲午夜精品在线| 韩国中文字幕2020精品| caoporn国产一区二区| 91美女片黄在线观看91美女| 欧美肥妇bbw| 国产精品传媒入口麻豆| 亚洲第一综合色| 国产高清在线精品| 欧美性大战久久| 26uuu亚洲| 男女男精品视频| 欧美四级电影在线观看| 国产欧美精品一区aⅴ影院| 视频在线观看国产精品| 91捆绑美女网站| 国产亚洲成av人在线观看导航| 亚洲国产视频在线| 一本一道波多野结衣一区二区| 精品国产3级a| 亚洲二区视频在线| 色综合一个色综合亚洲| 国产女人18毛片水真多成人如厕| 美女网站视频久久| 欧美日高清视频| 亚洲综合免费观看高清完整版| thepron国产精品| 国产人伦精品一区二区| 狂野欧美性猛交blacked| 欧美精品一二三| 亚洲h动漫在线| 欧美巨大另类极品videosbest| 午夜伦理一区二区| 欧美精品在线一区二区三区| 亚洲va国产天堂va久久en| 欧美午夜电影网| 香蕉成人伊视频在线观看| 欧美日韩一级片在线观看| 午夜亚洲国产au精品一区二区| 欧美性一区二区| 美女脱光内衣内裤视频久久影院| 欧美精品亚洲一区二区在线播放| 午夜av一区二区| 久久尤物电影视频在线观看| 国产综合色在线视频区| 欧美激情中文字幕| 在线视频观看一区| 日韩国产高清在线| 精品成人在线观看| 99久久伊人精品| 亚洲国产中文字幕| 日韩欧美国产wwwww| 国产成人aaa| 婷婷国产在线综合| 中文字幕在线不卡一区二区三区| 欧美在线综合视频| 岛国一区二区三区| 免费观看一级欧美片| 一区二区三区四区激情| 精品国免费一区二区三区| 不卡av在线免费观看| 加勒比av一区二区| 日韩不卡一区二区| 一区二区激情小说| 欧美国产精品专区| 日韩欧美电影一二三| 欧美日韩大陆一区二区| 99久久精品国产毛片| 国产乱码精品一区二区三区av | 久久99精品国产.久久久久久 | 国产精品毛片a∨一区二区三区| 欧美一区日韩一区| 91精品在线观看入口| 在线观看一区二区精品视频| 99久久99久久精品免费观看| 国产精品456露脸| 国产伦精一区二区三区| 狠狠色丁香婷婷综合| 九色porny丨国产精品| 免费日韩伦理电影| 免费美女久久99| 免费精品视频在线| 久久精品国产亚洲高清剧情介绍 | 亚洲日穴在线视频| 自拍偷在线精品自拍偷无码专区| 久久精品日产第一区二区三区高清版| 久久亚洲精华国产精华液| 欧美videofree性高清杂交| 欧美电视剧在线观看完整版| 欧美一卡二卡在线| 26uuu另类欧美亚洲曰本| 亚洲精品一区在线观看| 亚洲国产岛国毛片在线| 1区2区3区国产精品| 亚洲欧美另类久久久精品| 亚洲成人自拍网| 九一久久久久久| 99国内精品久久|