diff --git a/linphone/coreapi/linphonecore.c b/linphone/coreapi/linphonecore.c
index c5a07d1b4ddb3c24381235d04670652ebf045688..5a20735680785aace5b2f7f96b37fffd853ae470 100644
--- a/linphone/coreapi/linphonecore.c
+++ b/linphone/coreapi/linphonecore.c
@@ -1616,6 +1616,9 @@ void linphone_core_init_media_streams(LinphoneCore *lc){
 		audio_stream_set_echo_canceler_params(lc->audiostream,len,delay,framesize);
 	}
 	audio_stream_enable_automatic_gain_control(lc->audiostream,linphone_core_agc_enabled(lc));
+	if (lc->a_rtp)
+		rtp_session_set_transports(lc->audiostream->session,lc->a_rtp,lc->a_rtcp);
+
 #ifdef VIDEO_ENABLED
 	if (lc->video_conf.display || lc->video_conf.capture)
 		lc->videostream=video_stream_new(linphone_core_get_video_port(lc),linphone_core_ipv6_enabled(lc));
@@ -2584,6 +2587,11 @@ void linphone_core_stop_waiting(LinphoneCore *lc){
 	}
 }
 
+void linphone_core_set_audio_transports(LinphoneCore *lc, RtpTransport *rtp, RtpTransport *rtcp){
+	lc->a_rtp=rtp;
+	lc->a_rtcp=rtcp;
+}
+
 void net_config_uninit(LinphoneCore *lc)
 {
 	net_config_t *config=&lc->net_conf;
diff --git a/linphone/coreapi/linphonecore.h b/linphone/coreapi/linphonecore.h
index 9a14f7d76bc738f041f9de37ca39f57aabdc54aa..be0a5f983e963e13b01750b07c881db98e4f180c 100644
--- a/linphone/coreapi/linphonecore.h
+++ b/linphone/coreapi/linphonecore.h
@@ -480,6 +480,7 @@ typedef struct _LinphoneCore
 	struct _AudioStream *audiostream;  /**/
 	struct _VideoStream *videostream;
 	struct _VideoStream *previewstream;
+	RtpTransport *a_rtp,*a_rtcp;
 	struct _RtpProfile *local_profile;
 	MSList *bl_reqs;
 	MSList *subscribers;	/* unknown subscribers */
@@ -773,6 +774,9 @@ const MSList * linphone_core_get_sip_setups(LinphoneCore *lc);
 void linphone_core_uninit(LinphoneCore *lc);
 void linphone_core_destroy(LinphoneCore *lc);
 
+/*for advanced users:*/
+void linphone_core_set_audio_transports(LinphoneCore *lc, RtpTransport *rtp, RtpTransport *rtcp);
+
 /* end of lecacy api */
 
 /*internal use only */