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

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

?? a2dp.c

?? 基于LINUX內(nèi)核驅(qū)動的開發(fā)
?? C
?? 第 1 頁 / 共 3 頁
字號:
	setup = find_setup_by_session(session);	if (err) {		if (setup) {			setup->err = err;			finalize_config(setup);		}		return;	}	avdtp_stream_add_cb(session, stream, stream_state_changed, a2dp_sep);	a2dp_sep->stream = stream;	if (!setup)		return;	dev = a2dp_get_dev(session);	/* Notify sink.c of the new stream */	sink_new_stream(dev, session, setup->stream);	ret = avdtp_open(session, stream);	if (ret < 0) {		error("Error on avdtp_open %s (%d)", strerror(-ret),				-ret);		setup->stream = NULL;		finalize_config_errno(setup, ret);	}}static gboolean getconf_ind(struct avdtp *session, struct avdtp_local_sep *sep,				uint8_t *err, void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: Get_Configuration_Ind");	else		debug("Source %p: Get_Configuration_Ind");	return TRUE;}static void getconf_cfm(struct avdtp *session, struct avdtp_local_sep *sep,			struct avdtp_stream *stream, struct avdtp_error *err,			void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: Set_Configuration_Cfm", sep);	else		debug("Source %p: Set_Configuration_Cfm", sep);}static gboolean open_ind(struct avdtp *session, struct avdtp_local_sep *sep,				struct avdtp_stream *stream, uint8_t *err,				void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: Open_Ind", sep);	else		debug("Source %p: Open_Ind", sep);	return TRUE;}static void open_cfm(struct avdtp *session, struct avdtp_local_sep *sep,			struct avdtp_stream *stream, struct avdtp_error *err,			void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	struct a2dp_setup *setup;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: Open_Cfm", sep);	else		debug("Source %p: Open_Cfm", sep);	setup = find_setup_by_session(session);	if (!setup)		return;	if (setup->canceled) {		if (!err)			avdtp_close(session, stream);		setup_unref(setup);		return;	}	if (setup->reconfigure)		setup->reconfigure = FALSE;	if (err) {		setup->stream = NULL;		setup->err = err;		finalize_config(setup);	}	else		finalize_config_errno(setup, 0);}static gboolean suspend_timeout(struct a2dp_sep *sep){	if (avdtp_suspend(sep->session, sep->stream) == 0)		sep->suspending = TRUE;	sep->suspend_timer = 0;	avdtp_unref(sep->session);	sep->session = NULL;	return FALSE;}static gboolean start_ind(struct avdtp *session, struct avdtp_local_sep *sep,				struct avdtp_stream *stream, uint8_t *err,				void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: Start_Ind", sep);	else		debug("Source %p: Start_Ind", sep);	if (!a2dp_sep->locked) {		a2dp_sep->session = avdtp_ref(session);		a2dp_sep->suspend_timer = g_timeout_add(SUSPEND_TIMEOUT,						(GSourceFunc) suspend_timeout,						a2dp_sep);	}	return TRUE;}static void start_cfm(struct avdtp *session, struct avdtp_local_sep *sep,			struct avdtp_stream *stream, struct avdtp_error *err,			void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	struct a2dp_setup *setup;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: Start_Cfm", sep);	else		debug("Source %p: Start_Cfm", sep);	setup = find_setup_by_session(session);	if (!setup)		return;	if (setup->canceled) {		if (!err)			avdtp_close(session, stream);		setup_unref(setup);		return;	}	if (err) {		setup->stream = NULL;		setup->err = err;		finalize_resume(setup);	}	else		finalize_resume_errno(setup, 0);}static gboolean suspend_ind(struct avdtp *session, struct avdtp_local_sep *sep,				struct avdtp_stream *stream, uint8_t *err,				void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: Suspend_Ind", sep);	else		debug("Source %p: Suspend_Ind", sep);	if (a2dp_sep->suspend_timer) {		g_source_remove(a2dp_sep->suspend_timer);		a2dp_sep->suspend_timer = 0;		avdtp_unref(a2dp_sep->session);		a2dp_sep->session = NULL;	}	return TRUE;}static void suspend_cfm(struct avdtp *session, struct avdtp_local_sep *sep,			struct avdtp_stream *stream, struct avdtp_error *err,			void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	struct a2dp_setup *setup;	gboolean start;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: Suspend_Cfm", sep);	else		debug("Source %p: Suspend_Cfm", sep);	a2dp_sep->suspending = FALSE;	setup = find_setup_by_session(session);	if (!setup)		return;	start = setup->start;	setup->start = FALSE;	if (err) {		setup->stream = NULL;		setup->err = err;		finalize_suspend(setup);	}	else		finalize_suspend_errno(setup, 0);	if (!start)		return;	if (err) {		setup->err = err;		finalize_suspend(setup);	} else if (avdtp_start(session, a2dp_sep->stream) < 0) {		struct avdtp_error start_err;		error("avdtp_start failed");		avdtp_error_init(&start_err, AVDTP_ERROR_ERRNO, EIO);		setup->err = err;		finalize_suspend(setup);	}}static gboolean close_ind(struct avdtp *session, struct avdtp_local_sep *sep,				struct avdtp_stream *stream, uint8_t *err,				void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: Close_Ind", sep);	else		debug("Source %p: Close_Ind", sep);	return TRUE;}static gboolean reconfigure(gpointer data){	struct a2dp_setup *setup = data;	struct avdtp_local_sep *lsep;	struct avdtp_remote_sep *rsep;	int posix_err;	posix_err = avdtp_get_seps(setup->session, AVDTP_SEP_TYPE_SINK,					AVDTP_MEDIA_TYPE_AUDIO, A2DP_CODEC_SBC,					&lsep, &rsep);	if (posix_err < 0) {		error("No matching ACP and INT SEPs found");		finalize_config_errno(setup, posix_err);	}	posix_err = avdtp_set_configuration(setup->session, rsep, lsep,						setup->client_caps,						&setup->stream);	if (posix_err < 0) {		error("avdtp_set_configuration: %s",			strerror(-posix_err));		finalize_config_errno(setup, posix_err);	}	return FALSE;}static void close_cfm(struct avdtp *session, struct avdtp_local_sep *sep,			struct avdtp_stream *stream, struct avdtp_error *err,			void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	struct a2dp_setup *setup;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: Close_Cfm", sep);	else		debug("Source %p: Close_Cfm", sep);	setup = find_setup_by_session(session);	if (!setup)		return;	if (setup->canceled) {		setup_unref(setup);		return;	}	if (err) {		setup->stream = NULL;		setup->err = err;		finalize_config(setup);		return;	}	if (setup->reconfigure)		g_timeout_add(RECONFIGURE_TIMEOUT, reconfigure, setup);}static gboolean abort_ind(struct avdtp *session, struct avdtp_local_sep *sep,				struct avdtp_stream *stream, uint8_t *err,				void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: Abort_Ind", sep);	else		debug("Source %p: Abort_Ind", sep);	a2dp_sep->stream = NULL;	return TRUE;}static void abort_cfm(struct avdtp *session, struct avdtp_local_sep *sep,			struct avdtp_stream *stream, struct avdtp_error *err,			void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	struct a2dp_setup *setup;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: Abort_Cfm", sep);	else		debug("Source %p: Abort_Cfm", sep);	setup = find_setup_by_session(session);	if (!setup)		return;	setup_unref(setup);}static gboolean reconf_ind(struct avdtp *session, struct avdtp_local_sep *sep,				uint8_t *err, void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: ReConfigure_Ind", sep);	else		debug("Source %p: ReConfigure_Ind", sep);	return TRUE;}static void reconf_cfm(struct avdtp *session, struct avdtp_local_sep *sep,			struct avdtp_stream *stream, struct avdtp_error *err,			void *user_data){	struct a2dp_sep *a2dp_sep = user_data;	struct a2dp_setup *setup;	if (a2dp_sep->type == AVDTP_SEP_TYPE_SINK)		debug("Sink %p: ReConfigure_Cfm", sep);	else		debug("Source %p: ReConfigure_Cfm", sep);	setup = find_setup_by_session(session);	if (!setup)		return;	if (setup->canceled) {		if (!err)			avdtp_close(session, stream);		setup_unref(setup);		return;	}	if (err) {		setup->stream = NULL;		setup->err = err;		finalize_config(setup);	}	else		finalize_config_errno(setup, 0);}static struct avdtp_sep_cfm cfm = {	.set_configuration	= setconf_cfm,	.get_configuration	= getconf_cfm,	.open			= open_cfm,	.start			= start_cfm,	.suspend		= suspend_cfm,	.close			= close_cfm,	.abort			= abort_cfm,	.reconfigure		= reconf_cfm};static struct avdtp_sep_ind sbc_ind = {	.get_capability		= sbc_getcap_ind,	.set_configuration	= sbc_setconf_ind,	.get_configuration	= getconf_ind,	.open			= open_ind,	.start			= start_ind,	.suspend		= suspend_ind,	.close			= close_ind,	.abort			= abort_ind,	.reconfigure		= reconf_ind};static struct avdtp_sep_ind mpeg_ind = {	.get_capability		= mpeg_getcap_ind,	.set_configuration	= mpeg_setconf_ind,	.get_configuration	= getconf_ind,	.open			= open_ind,	.start			= start_ind,	.suspend		= suspend_ind,	.close			= close_ind,	.abort			= abort_ind,	.reconfigure		= reconf_ind};static int a2dp_source_record(sdp_buf_t *buf){	sdp_list_t *svclass_id, *pfseq, *apseq, *root;	uuid_t root_uuid, l2cap, avdtp, a2src;	sdp_profile_desc_t profile[1];	sdp_list_t *aproto, *proto[2];	sdp_record_t record;	sdp_data_t *psm, *version, *features;	uint16_t lp = AVDTP_UUID, ver = 0x0100, feat = 0x000F;	int ret = 0;	memset(&record, 0, sizeof(sdp_record_t));	sdp_uuid16_create(&root_uuid, PUBLIC_BROWSE_GROUP);	root = sdp_list_append(0, &root_uuid);	sdp_set_browse_groups(&record, root);	sdp_uuid16_create(&a2src, AUDIO_SOURCE_SVCLASS_ID);	svclass_id = sdp_list_append(0, &a2src);	sdp_set_service_classes(&record, svclass_id);	sdp_uuid16_create(&profile[0].uuid, ADVANCED_AUDIO_PROFILE_ID);	profile[0].version = 0x0100;	pfseq = sdp_list_append(0, &profile[0]);	sdp_set_profile_descs(&record, pfseq);	sdp_uuid16_create(&l2cap, L2CAP_UUID);	proto[0] = sdp_list_append(0, &l2cap);	psm = sdp_data_alloc(SDP_UINT16, &lp);	proto[0] = sdp_list_append(proto[0], psm);	apseq = sdp_list_append(0, proto[0]);	sdp_uuid16_create(&avdtp, AVDTP_UUID);	proto[1] = sdp_list_append(0, &avdtp);	version = sdp_data_alloc(SDP_UINT16, &ver);	proto[1] = sdp_list_append(proto[1], version);	apseq = sdp_list_append(apseq, proto[1]);	aproto = sdp_list_append(0, apseq);	sdp_set_access_protos(&record, aproto);	features = sdp_data_alloc(SDP_UINT16, &feat);	sdp_attr_add(&record, SDP_ATTR_SUPPORTED_FEATURES, features);	sdp_set_info_attr(&record, "Audio Source", 0, 0);	if (sdp_gen_record_pdu(&record, buf) < 0)		ret = -1;	else		ret = 0;	free(psm);	free(version);	sdp_list_free(proto[0], 0);	sdp_list_free(proto[1], 0);	sdp_list_free(apseq, 0);	sdp_list_free(pfseq, 0);	sdp_list_free(aproto, 0);	sdp_list_free(root, 0);	sdp_list_free(svclass_id, 0);	sdp_list_free(record.attrlist, (sdp_free_func_t) sdp_data_free);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲视频你懂的| 国产精品原创巨作av| 亚洲综合成人网| 一区二区三区日韩在线观看| 亚洲乱码日产精品bd| 亚洲免费在线播放| 一区二区免费看| 亚洲一区二区中文在线| 亚洲午夜三级在线| 亚洲sss视频在线视频| 日韩 欧美一区二区三区| 奇米影视一区二区三区小说| 麻豆国产欧美一区二区三区| 经典三级在线一区| 国产成+人+日韩+欧美+亚洲| 成人免费毛片嘿嘿连载视频| 91毛片在线观看| 日本国产一区二区| 91麻豆精品国产91久久久资源速度| 欧美一区二区三区啪啪| 精品美女被调教视频大全网站| 精品国产一区二区三区忘忧草| 久久久久久99精品| 亚洲欧洲成人自拍| 亚洲一区在线电影| 美国十次综合导航| 成人性生交大合| 精品视频在线视频| 亚洲精品一区二区三区精华液 | 欧美不卡激情三级在线观看| 精品成a人在线观看| 国产精品美女久久久久久久 | 国产乱码精品1区2区3区| 成人免费三级在线| 欧美日韩国产天堂| 26uuu精品一区二区三区四区在线| 国产亚洲精品7777| 亚洲综合av网| 国产精品白丝av| 日本道精品一区二区三区| 欧美一区二区三区在线观看视频| 国产无人区一区二区三区| 悠悠色在线精品| 九九精品一区二区| 一本大道久久a久久综合| 91精品啪在线观看国产60岁| 中文字幕 久热精品 视频在线| 午夜在线成人av| 国产99久久久国产精品潘金| 欧美丰满高潮xxxx喷水动漫| 日本一区免费视频| 视频在线在亚洲| 东方欧美亚洲色图在线| 欧美精品在线一区二区| 国产精品素人一区二区| 水野朝阳av一区二区三区| av一二三不卡影片| 日韩精品综合一本久道在线视频| 日韩一区欧美小说| 国产美女娇喘av呻吟久久| 欧美日韩亚洲丝袜制服| 国产精品每日更新在线播放网址| 亚洲成人高清在线| 成人国产精品免费网站| 日韩欧美国产一区二区三区| 一区二区三区四区av| 国产伦理精品不卡| 91精品蜜臀在线一区尤物| 亚洲免费观看在线视频| 国产成人av福利| 日韩免费福利电影在线观看| 亚洲午夜久久久久久久久电影网| 高清成人在线观看| 精品免费视频.| 日本中文在线一区| 欧美丝袜丝交足nylons图片| 1024精品合集| 国产98色在线|日韩| 欧美v亚洲v综合ⅴ国产v| 亚洲最新视频在线播放| a级高清视频欧美日韩| 国产亚洲一区二区三区四区| 美女在线视频一区| 欧美日本一区二区| 一区二区理论电影在线观看| 亚洲电影视频在线| 欧美影院一区二区| 欧美国产日韩亚洲一区| 激情小说欧美图片| 7777精品伊人久久久大香线蕉经典版下载 | 日韩一区二区高清| 亚洲gay无套男同| 色又黄又爽网站www久久| 中文字幕亚洲区| 国产成人自拍高清视频在线免费播放| 精品久久99ma| 蜜臀av性久久久久蜜臀av麻豆| 欧美日韩激情在线| 天天综合色天天综合色h| 欧美日韩视频在线一区二区| 丝袜美腿高跟呻吟高潮一区| 欧美日韩和欧美的一区二区| 亚洲成a人v欧美综合天堂| 欧美色图天堂网| 亚洲午夜电影在线观看| 欧美午夜片在线看| 亚洲r级在线视频| 制服.丝袜.亚洲.中文.综合| 日本成人在线看| 精品少妇一区二区三区视频免付费| 久久精品国产在热久久| 欧美sm美女调教| 国产在线不卡一卡二卡三卡四卡| 欧美v亚洲v综合ⅴ国产v| 国产一区二区三区免费看| 中文字幕精品—区二区四季| 91麻豆免费视频| 五月婷婷欧美视频| 日韩欧美另类在线| 国产很黄免费观看久久| 国产精品美日韩| 欧美亚洲国产一区二区三区va| 亚洲成av人片一区二区梦乃| 欧美成va人片在线观看| 春色校园综合激情亚洲| 亚洲日本护士毛茸茸| 欧美日韩亚洲国产综合| 蜜桃av一区二区三区电影| 久久久久国色av免费看影院| av福利精品导航| 亚洲高清免费在线| 精品国产免费视频| thepron国产精品| 性久久久久久久| 久久综合久久综合亚洲| 97aⅴ精品视频一二三区| 亚洲国产精品久久人人爱| 精品乱码亚洲一区二区不卡| 成人精品高清在线| 午夜视频在线观看一区二区三区| 欧美不卡一区二区三区四区| 99视频有精品| 日韩专区一卡二卡| 欧美高清在线一区二区| 欧洲国产伦久久久久久久| 国产在线视频一区二区| 亚洲精品欧美综合四区| 日韩欧美成人一区| 99精品视频在线播放观看| 青青草97国产精品免费观看无弹窗版| 久久久高清一区二区三区| 欧美色综合影院| 国产成人精品免费一区二区| 偷偷要91色婷婷| 国产精品视频你懂的| 日韩一级片网址| 色一区在线观看| 国产在线一区二区综合免费视频| 一区二区成人在线| 久久久精品国产免费观看同学| 欧美日韩aaaaaa| 99re成人精品视频| 久久成人免费网| 亚洲午夜激情网页| 国产精品久久久久久久久动漫| 日韩视频在线一区二区| 欧美性生活影院| 丁香另类激情小说| 看电影不卡的网站| 亚洲国产一区二区三区| 国产精品入口麻豆九色| 日韩精品影音先锋| 欧美性猛交一区二区三区精品| 成人亚洲一区二区一| 激情六月婷婷久久| 日韩黄色免费电影| 亚洲乱码中文字幕| 国产精品成人一区二区艾草 | 欧美一区二区精品在线| 一本久久综合亚洲鲁鲁五月天 | 欧美一区二区三区在线观看| 色婷婷久久久综合中文字幕| 成人一区在线观看| 捆绑变态av一区二区三区| 婷婷久久综合九色综合伊人色| 亚洲日本va午夜在线影院| 国产香蕉久久精品综合网| 欧美大白屁股肥臀xxxxxx| 欧美高清性hdvideosex| 欧美日韩免费观看一区三区| 91麻豆.com| 97久久精品人人爽人人爽蜜臀| 国产成人综合自拍| 国产福利91精品一区二区三区| 国内不卡的二区三区中文字幕| 日韩av中文字幕一区二区三区| 午夜私人影院久久久久| 亚洲成人中文在线| 亚洲成人免费在线观看| 亚洲成人一区在线|