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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? hda_codec.c

?? 一個(gè)Linux下的軟貓驅(qū)動(dòng)
?? C
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
}static int snd_hda_spdif_out_switch_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol){	struct hda_codec *codec = snd_kcontrol_chip(kcontrol);	ucontrol->value.integer.value[0] = codec->spdif_ctls & 1;	return 0;}static int snd_hda_spdif_out_switch_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol){	struct hda_codec *codec = snd_kcontrol_chip(kcontrol);	hda_nid_t nid = kcontrol->private_value;	unsigned short val;	int change;	down(&codec->spdif_mutex);	val = codec->spdif_ctls & ~1;	if (ucontrol->value.integer.value[0])		val |= 1;	change = codec->spdif_ctls != val;	if (change || codec->in_resume) {		codec->spdif_ctls = val;		snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_DIGI_CONVERT_1, val & 0xff);		snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_AMP_GAIN_MUTE,				    AC_AMP_SET_RIGHT | AC_AMP_SET_LEFT |				    AC_AMP_SET_OUTPUT | ((val & 1) ? 0 : 0x80));	}	up(&codec->spdif_mutex);	return change;}static snd_kcontrol_new_t dig_mixes[] = {	{		.access = SNDRV_CTL_ELEM_ACCESS_READ,		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,CON_MASK),		.info = snd_hda_spdif_mask_info,		.get = snd_hda_spdif_cmask_get,	},	{		.access = SNDRV_CTL_ELEM_ACCESS_READ,		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,PRO_MASK),		.info = snd_hda_spdif_mask_info,		.get = snd_hda_spdif_pmask_get,	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,DEFAULT),		.info = snd_hda_spdif_mask_info,		.get = snd_hda_spdif_default_get,		.put = snd_hda_spdif_default_put,	},	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,SWITCH),		.info = snd_hda_spdif_out_switch_info,		.get = snd_hda_spdif_out_switch_get,		.put = snd_hda_spdif_out_switch_put,	},	{ } /* end */};/** * snd_hda_create_spdif_out_ctls - create Output SPDIF-related controls * @codec: the HDA codec * @nid: audio out widget NID * * Creates controls related with the SPDIF output. * Called from each patch supporting the SPDIF out. * * Returns 0 if successful, or a negative error code. */int snd_hda_create_spdif_out_ctls(struct hda_codec *codec, hda_nid_t nid){	int err;	snd_kcontrol_t *kctl;	snd_kcontrol_new_t *dig_mix;	for (dig_mix = dig_mixes; dig_mix->name; dig_mix++) {		kctl = snd_ctl_new1(dig_mix, codec);		kctl->private_value = nid;		if ((err = snd_ctl_add(codec->bus->card, kctl)) < 0)			return err;	}	codec->spdif_ctls = snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_DIGI_CONVERT, 0);	codec->spdif_status = convert_to_spdif_status(codec->spdif_ctls);	return 0;}/* * SPDIF input */#define snd_hda_spdif_in_switch_info	snd_hda_spdif_out_switch_infostatic int snd_hda_spdif_in_switch_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol){	struct hda_codec *codec = snd_kcontrol_chip(kcontrol);	ucontrol->value.integer.value[0] = codec->spdif_in_enable;	return 0;}static int snd_hda_spdif_in_switch_put(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol){	struct hda_codec *codec = snd_kcontrol_chip(kcontrol);	hda_nid_t nid = kcontrol->private_value;	unsigned int val = !!ucontrol->value.integer.value[0];	int change;	down(&codec->spdif_mutex);	change = codec->spdif_in_enable != val;	if (change || codec->in_resume) {		codec->spdif_in_enable = val;		snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_DIGI_CONVERT_1, val);	}	up(&codec->spdif_mutex);	return change;}static int snd_hda_spdif_in_status_get(snd_kcontrol_t *kcontrol, snd_ctl_elem_value_t *ucontrol){	struct hda_codec *codec = snd_kcontrol_chip(kcontrol);	hda_nid_t nid = kcontrol->private_value;	unsigned short val;	unsigned int sbits;	val = snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_DIGI_CONVERT, 0);	sbits = convert_to_spdif_status(val);	ucontrol->value.iec958.status[0] = sbits;	ucontrol->value.iec958.status[1] = sbits >> 8;	ucontrol->value.iec958.status[2] = sbits >> 16;	ucontrol->value.iec958.status[3] = sbits >> 24;	return 0;}static snd_kcontrol_new_t dig_in_ctls[] = {	{		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = SNDRV_CTL_NAME_IEC958("",CAPTURE,SWITCH),		.info = snd_hda_spdif_in_switch_info,		.get = snd_hda_spdif_in_switch_get,		.put = snd_hda_spdif_in_switch_put,	},	{		.access = SNDRV_CTL_ELEM_ACCESS_READ,		.iface = SNDRV_CTL_ELEM_IFACE_MIXER,		.name = SNDRV_CTL_NAME_IEC958("",CAPTURE,DEFAULT),		.info = snd_hda_spdif_mask_info,		.get = snd_hda_spdif_in_status_get,	},	{ } /* end */};/** * snd_hda_create_spdif_in_ctls - create Input SPDIF-related controls * @codec: the HDA codec * @nid: audio in widget NID * * Creates controls related with the SPDIF input. * Called from each patch supporting the SPDIF in. * * Returns 0 if successful, or a negative error code. */int snd_hda_create_spdif_in_ctls(struct hda_codec *codec, hda_nid_t nid){	int err;	snd_kcontrol_t *kctl;	snd_kcontrol_new_t *dig_mix;	for (dig_mix = dig_in_ctls; dig_mix->name; dig_mix++) {		kctl = snd_ctl_new1(dig_mix, codec);		kctl->private_value = nid;		if ((err = snd_ctl_add(codec->bus->card, kctl)) < 0)			return err;	}	codec->spdif_in_enable = snd_hda_codec_read(codec, nid, 0, AC_VERB_GET_DIGI_CONVERT, 0) & 1;	return 0;}/** * snd_hda_build_controls - build mixer controls * @bus: the BUS * * Creates mixer controls for each codec included in the bus. * * Returns 0 if successful, otherwise a negative error code. */int snd_hda_build_controls(struct hda_bus *bus){	struct list_head *p;	/* build controls */	list_for_each(p, &bus->codec_list) {		struct hda_codec *codec = list_entry(p, struct hda_codec, list);		int err;		if (! codec->patch_ops.build_controls)			continue;		err = codec->patch_ops.build_controls(codec);		if (err < 0)			return err;	}	/* initialize */	list_for_each(p, &bus->codec_list) {		struct hda_codec *codec = list_entry(p, struct hda_codec, list);		int err;		if (! codec->patch_ops.init)			continue;		err = codec->patch_ops.init(codec);		if (err < 0)			return err;	}	return 0;}/* * stream formats */struct hda_rate_tbl {	unsigned int hz;	unsigned int alsa_bits;	unsigned int hda_fmt;};static struct hda_rate_tbl rate_bits[] = {	/* rate in Hz, ALSA rate bitmask, HDA format value */	/* autodetected value used in snd_hda_query_supported_pcm */	{ 8000, SNDRV_PCM_RATE_8000, 0x0500 }, /* 1/6 x 48 */	{ 11025, SNDRV_PCM_RATE_11025, 0x4300 }, /* 1/4 x 44 */	{ 16000, SNDRV_PCM_RATE_16000, 0x0200 }, /* 1/3 x 48 */	{ 22050, SNDRV_PCM_RATE_22050, 0x4100 }, /* 1/2 x 44 */	{ 32000, SNDRV_PCM_RATE_32000, 0x0a00 }, /* 2/3 x 48 */	{ 44100, SNDRV_PCM_RATE_44100, 0x4000 }, /* 44 */	{ 48000, SNDRV_PCM_RATE_48000, 0x0000 }, /* 48 */	{ 88200, SNDRV_PCM_RATE_88200, 0x4800 }, /* 2 x 44 */	{ 96000, SNDRV_PCM_RATE_96000, 0x0800 }, /* 2 x 48 */	{ 176400, SNDRV_PCM_RATE_176400, 0x5800 },/* 4 x 44 */	{ 192000, SNDRV_PCM_RATE_192000, 0x1800 }, /* 4 x 48 */	/* not autodetected value */	{ 9600, SNDRV_PCM_RATE_KNOT, 0x0400 }, /* 1/5 x 48 */	{ 0 } /* terminator */};/** * snd_hda_calc_stream_format - calculate format bitset * @rate: the sample rate * @channels: the number of channels * @format: the PCM format (SNDRV_PCM_FORMAT_XXX) * @maxbps: the max. bps * * Calculate the format bitset from the given rate, channels and th PCM format. * * Return zero if invalid. */unsigned int snd_hda_calc_stream_format(unsigned int rate,					unsigned int channels,					unsigned int format,					unsigned int maxbps){	int i;	unsigned int val = 0;	for (i = 0; rate_bits[i].hz; i++)		if (rate_bits[i].hz == rate) {			val = rate_bits[i].hda_fmt;			break;		}	if (! rate_bits[i].hz) {		snd_printdd("invalid rate %d\n", rate);		return 0;	}	if (channels == 0 || channels > 8) {		snd_printdd("invalid channels %d\n", channels);		return 0;	}	val |= channels - 1;	switch (snd_pcm_format_width(format)) {	case 8:  val |= 0x00; break;	case 16: val |= 0x10; break;	case 20:	case 24:	case 32:		if (maxbps >= 32)			val |= 0x40;		else if (maxbps >= 24)			val |= 0x30;		else			val |= 0x20;		break;	default:		snd_printdd("invalid format width %d\n", snd_pcm_format_width(format));		return 0;	}	return val;}/** * snd_hda_query_supported_pcm - query the supported PCM rates and formats * @codec: the HDA codec * @nid: NID to query * @ratesp: the pointer to store the detected rate bitflags * @formatsp: the pointer to store the detected formats * @bpsp: the pointer to store the detected format widths * * Queries the supported PCM rates and formats.  The NULL @ratesp, @formatsp * or @bsps argument is ignored. * * Returns 0 if successful, otherwise a negative error code. */int snd_hda_query_supported_pcm(struct hda_codec *codec, hda_nid_t nid,				u32 *ratesp, u64 *formatsp, unsigned int *bpsp){	int i;	unsigned int val, streams;	val = 0;	if (nid != codec->afg &&	    snd_hda_param_read(codec, nid, AC_PAR_AUDIO_WIDGET_CAP) & AC_WCAP_FORMAT_OVRD) {		val = snd_hda_param_read(codec, nid, AC_PAR_PCM);		if (val == -1)			return -EIO;	}	if (! val)		val = snd_hda_param_read(codec, codec->afg, AC_PAR_PCM);	if (ratesp) {		u32 rates = 0;		for (i = 0; rate_bits[i].hz; i++) {			if (val & (1 << i))				rates |= rate_bits[i].alsa_bits;		}		*ratesp = rates;	}	if (formatsp || bpsp) {		u64 formats = 0;		unsigned int bps;		unsigned int wcaps;		wcaps = snd_hda_param_read(codec, nid, AC_PAR_AUDIO_WIDGET_CAP);		streams = snd_hda_param_read(codec, nid, AC_PAR_STREAM);		if (streams == -1)			return -EIO;		if (! streams) {			streams = snd_hda_param_read(codec, codec->afg, AC_PAR_STREAM);			if (streams == -1)				return -EIO;		}		bps = 0;		if (streams & AC_SUPFMT_PCM) {			if (val & AC_SUPPCM_BITS_8) {				formats |= SNDRV_PCM_FMTBIT_U8;				bps = 8;			}			if (val & AC_SUPPCM_BITS_16) {				formats |= SNDRV_PCM_FMTBIT_S16_LE;				bps = 16;			}			if (wcaps & AC_WCAP_DIGITAL) {				if (val & AC_SUPPCM_BITS_32)					formats |= SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE;				if (val & (AC_SUPPCM_BITS_20|AC_SUPPCM_BITS_24))					formats |= SNDRV_PCM_FMTBIT_S32_LE;				if (val & AC_SUPPCM_BITS_24)					bps = 24;				else if (val & AC_SUPPCM_BITS_20)					bps = 20;			} else if (val & (AC_SUPPCM_BITS_20|AC_SUPPCM_BITS_24|AC_SUPPCM_BITS_32)) {				formats |= SNDRV_PCM_FMTBIT_S32_LE;				if (val & AC_SUPPCM_BITS_32)					bps = 32;				else if (val & AC_SUPPCM_BITS_20)					bps = 20;				else if (val & AC_SUPPCM_BITS_24)					bps = 24;			}		}		else if (streams == AC_SUPFMT_FLOAT32) { /* should be exclusive */			formats |= SNDRV_PCM_FMTBIT_FLOAT_LE;			bps = 32;		} else if (streams == AC_SUPFMT_AC3) { /* should be exclusive */			/* temporary hack: we have still no proper support			 * for the direct AC3 stream...			 */			formats |= SNDRV_PCM_FMTBIT_U8;			bps = 8;		}		if (formatsp)			*formatsp = formats;		if (bpsp)			*bpsp = bps;	}	return 0;}/** * snd_hda_is_supported_format - check whether the given node supports the format val * * Returns 1 if supported, 0 if not. */int snd_hda_is_supported_format(struct hda_codec *codec, hda_nid_t nid,				unsigned int format){	int i;	unsigned int val = 0, rate, stream;	if (nid != codec->afg &&	    snd_hda_param_read(codec, nid, AC_PAR_AUDIO_WIDGET_CAP) & AC_WCAP_FORMAT_OVRD) {		val = snd_hda_param_read(codec, nid, AC_PAR_PCM);		if (val == -1)			return 0;	}	if (! val) {		val = snd_hda_param_read(codec, codec->afg, AC_PAR_PCM);		if (val == -1)			return 0;	}	rate = format & 0xff00;	for (i = 0; rate_bits[i].hz; i++)		if (rate_bits[i].hda_fmt == rate) {			if (val & (1 << i))				break;			return 0;		}	if (! rate_bits[i].hz)		return 0;	stream = snd_hda_param_read(codec, nid, AC_PAR_STREAM);	if (stream == -1)		return 0;	if (! stream && nid != codec->afg)		stream = snd_hda_param_read(codec, codec->afg, AC_PAR_STREAM);	if (! stream || stream == -1)		return 0;	if (stream & AC_SUPFMT_PCM) {		switch (format & 0xf0) {		case 0x00:			if (! (val & AC_SUPPCM_BITS_8))				return 0;			break;		case 0x10:			if (! (val & AC_SUPPCM_BITS_16))				return 0;			break;		case 0x20:			if (! (val & AC_SUPPCM_BITS_20))				return 0;			break;		case 0x30:			if (! (val & AC_SUPPCM_BITS_24))				return 0;			break;		case 0x40:			if (! (val & AC_SUPPCM_BITS_32))				return 0;			break;		default:			return 0;		}	} else {		/* FIXME: check for float32 and AC3? */	}	return 1;}/* * PCM stuff */static int hda_pcm_default_open_close(struct hda_pcm_stream *hinfo,				      struct hda_codec *codec,				      snd_pcm_substream_t *substream){	return 0;}static int hda_pcm_default_prepare(struct hda_pcm_stream *hinfo,				   struct hda_codec *codec,				   unsigned int stream_tag,				   unsigned int format,				   snd_pcm_substream_t *substream){	snd_hda_codec_setup_stream(codec, hinfo->nid, stream_tag, 0, format);	return 0;}static int hda_pcm_default_cleanup(struct hda_pcm_stream *hinfo,				   struct hda_codec *codec,				   snd_pcm_substream_t *substream){//printk("%s: %p\n", __FUNCTION__, codec);	snd_hda_codec_setup_stream(codec, hinfo->nid, 0, 0, 0);	return 0;}static int set_pcm_default_values(struct hda_codec *codec, struct hda_pcm_stream *info){	if (info->nid) {		/* query support PCM information from the given NID */		if (! info->rates || ! info->formats)			snd_hda_query_supported_pcm(codec, info->nid,						    info->rates ? NULL : &info->rates,						    info->formats ? NULL : &info->formats,						    info->maxbps ? NULL : &info->maxbps);	}	if (info->ops.open == NULL)		info->ops.open = hda_pcm_default_open_close;	if (info->ops.close == NULL)		info->ops.close = hda_pcm_default_open_close;	if (info->ops.prepare == NULL) {		snd_assert(info->nid, return -EINVAL);		info->ops.prepare = hda_pcm_default_prepare;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久一二三区| 一区二区三区在线观看网站| 高清av一区二区| 亚洲日本va午夜在线影院| 欧美不卡一区二区三区四区| 97久久超碰国产精品电影| 蜜桃视频免费观看一区| 亚洲免费大片在线观看| 久久天堂av综合合色蜜桃网| 欧美色老头old∨ideo| 成人精品免费看| 久久精品国产色蜜蜜麻豆| 亚洲sss视频在线视频| 国产日韩综合av| 日韩久久精品一区| 在线播放欧美女士性生活| 99re热这里只有精品免费视频| 久久91精品国产91久久小草| 日日夜夜免费精品视频| 亚洲一区二区三区在线看| 欧美无砖专区一中文字| 国模冰冰炮一区二区| 午夜精品影院在线观看| 国产精品不卡在线| 国产精品久久久久久久久免费樱桃 | 亚洲欧美偷拍另类a∨色屁股| 国产目拍亚洲精品99久久精品| 日韩视频一区在线观看| 欧美在线视频日韩| 色综合天天综合狠狠| 一本色道**综合亚洲精品蜜桃冫 | 精品制服美女久久| 青青草97国产精品免费观看| 天堂影院一区二区| 免费在线欧美视频| 免费成人在线观看| 国产在线视频精品一区| 国产精品一区二区你懂的| 国产一区高清在线| 国产精品一区在线| 国产91色综合久久免费分享| 国产福利91精品一区| 99热在这里有精品免费| 91丨九色porny丨蝌蚪| 91久久精品一区二区三| 欧美视频在线不卡| 9191成人精品久久| 日韩午夜av电影| 国产亚洲精品免费| 国产精品色呦呦| 亚洲主播在线播放| 一区二区三区欧美| 亚洲成av人片在线观看无码| 国产精品美女久久久久久2018| 日韩美女啊v在线免费观看| 亚洲图片有声小说| 国产一区在线视频| 99在线精品视频| 一本一本大道香蕉久在线精品 | 日韩黄色一级片| 精品一区二区综合| 成人的网站免费观看| 在线观看亚洲一区| 欧美大白屁股肥臀xxxxxx| 亚洲国产精品成人综合色在线婷婷| 国产精品不卡一区| 美女看a上一区| 国产电影精品久久禁18| 国内精品免费**视频| 99国产精品久久久久| 日韩欧美国产高清| 中文字幕中文字幕一区| 日韩精品一卡二卡三卡四卡无卡| 经典三级在线一区| 日本韩国一区二区三区视频| 欧美成人在线直播| 欧美一区二区三区免费视频| 337p日本欧洲亚洲大胆精品| 色综合久久88色综合天天| av网站一区二区三区| 在线成人午夜影院| 亚洲天堂精品在线观看| 天天综合网 天天综合色| 国产一区二区在线视频| 欧美日韩国产成人在线免费| 精品久久久久av影院| 亚洲欧洲精品一区二区精品久久久| 日韩国产精品久久| 在线精品视频小说1| 日韩欧美国产三级电影视频| 国产做a爰片久久毛片| 欧美精品粉嫩高潮一区二区| 一区二区三区在线不卡| 国产福利电影一区二区三区| 欧美一级精品在线| 亚洲国产一区二区三区| 一本色道久久综合亚洲精品按摩| 日本一区二区三区久久久久久久久不| 奇米四色…亚洲| 欧美视频一区二区三区| 亚洲欧美激情小说另类| 一本大道av一区二区在线播放| 国产精品久久久久一区| 午夜日韩在线电影| 欧美午夜精品一区二区蜜桃| 一区二区三区日本| 色综合 综合色| 欧美精品自拍偷拍动漫精品| 久久久久国产精品麻豆ai换脸| 国产在线一区二区综合免费视频| 日韩丝袜美女视频| 国产在线国偷精品免费看| 亚洲精品一区二区三区在线观看| 狠狠色2019综合网| 欧美性猛交一区二区三区精品| 国产女人aaa级久久久级| 国产麻豆9l精品三级站| 亚洲国产精品二十页| www.欧美色图| 亚洲影院理伦片| 欧美精品乱人伦久久久久久| 日本色综合中文字幕| 日韩欧美国产一区二区在线播放| 免费三级欧美电影| 久久婷婷一区二区三区| 成人av手机在线观看| 最新国产精品久久精品| 成人av片在线观看| 99精品视频一区二区| 久久精品国产成人一区二区三区| 国产欧美日韩久久| 中文欧美字幕免费| 国产精品午夜久久| 亚洲另类春色国产| 亚洲免费大片在线观看| 亚洲欧美日韩小说| 日韩精品视频网站| 狠狠色狠狠色综合日日91app| 精品制服美女丁香| 高清不卡一区二区| 欧美日韩国产精选| 日韩午夜激情免费电影| 国产欧美一区二区在线| 亚洲日本丝袜连裤袜办公室| 亚洲综合在线视频| 婷婷综合久久一区二区三区| 青椒成人免费视频| 国产一区二区调教| 成人av网址在线| 日韩视频永久免费| 久久久久久久久久看片| 亚洲精品写真福利| 亚洲国产视频直播| 国产麻豆欧美日韩一区| 粉嫩13p一区二区三区| 欧美影视一区在线| 久久久久久麻豆| 午夜精品久久久久久久 | 精品一区二区免费在线观看| 成人激情文学综合网| 在线中文字幕不卡| 国产日韩欧美麻豆| 一区二区三区高清在线| 成人午夜av电影| 欧美一级xxx| 亚洲自拍偷拍av| 国产高清一区日本| 日韩无一区二区| 亚洲欧美激情插 | 国产一区二区三区在线看麻豆| 国产成人精品免费视频网站| 成人开心网精品视频| 精品国产a毛片| 奇米亚洲午夜久久精品| 欧美手机在线视频| 亚洲午夜免费视频| 一本到三区不卡视频| 国产精品日韩精品欧美在线| 蜜臀久久久99精品久久久久久| 91福利精品第一导航| 成人免费在线观看入口| 丰满放荡岳乱妇91ww| 国产精品久久久久久久岛一牛影视| 韩国v欧美v亚洲v日本v| 日韩精品一区二区三区四区| 免费成人在线播放| 久久网这里都是精品| 国产成人午夜99999| 日韩精品一区二区三区在线观看| 免费在线观看视频一区| 91精品国产综合久久婷婷香蕉| 日本亚洲免费观看| 久久蜜桃香蕉精品一区二区三区| 国产精品夜夜嗨| 中文字幕一区二区三区在线播放| 色婷婷综合久久久久中文一区二区 | 亚洲午夜激情网站| 欧美日韩国产另类一区| 高清beeg欧美| 亚洲第一久久影院|