[Freeswitch-svn] [commit] r4470 - in freeswitch/trunk/src: . mod/endpoints/mod_sofia

Freeswitch SVN anthm at freeswitch.org
Wed Mar 7 16:21:42 EST 2007


Author: anthm
Date: Wed Mar  7 16:21:42 2007
New Revision: 4470

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
   freeswitch/trunk/src/switch_rtp.c

Log:
update wip

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	Wed Mar  7 16:21:42 2007
@@ -874,6 +874,8 @@
 	switch_core_session_add_stream(session, NULL);
 	channel = switch_core_session_get_channel(session);
 	
+	switch_channel_set_flag(channel, CF_ACCEPT_CNG);
+	
 	switch_mutex_init(&tech_pvt->flag_mutex, SWITCH_MUTEX_NESTED, switch_core_session_get_pool(session));
 	switch_mutex_lock(tech_pvt->flag_mutex);
 	tech_pvt->flags = profile->flags;
@@ -1891,14 +1893,15 @@
 
 	switch_set_flag_locked(tech_pvt, TFLAG_WRITING);
 
+	if (!switch_test_flag(frame, SFF_CNG)) {
+		if (tech_pvt->read_codec.implementation->encoded_bytes_per_frame) {
+			bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_frame;
+			frames = ((int) frame->datalen / bytes);
+		} else
+			frames = 1;
 
-	if (tech_pvt->read_codec.implementation->encoded_bytes_per_frame) {
-		bytes = tech_pvt->read_codec.implementation->encoded_bytes_per_frame;
-		frames = ((int) frame->datalen / bytes);
-	} else
-		frames = 1;
-
-	samples = frames * tech_pvt->read_codec.implementation->samples_per_frame;
+		samples = frames * tech_pvt->read_codec.implementation->samples_per_frame;
+	}
 
 #if 0
 	printf("%s %s->%s send %d bytes %d samples in %d frames ts=%d\n",

Modified: freeswitch/trunk/src/switch_rtp.c
==============================================================================
--- freeswitch/trunk/src/switch_rtp.c	(original)
+++ freeswitch/trunk/src/switch_rtp.c	Wed Mar  7 16:21:42 2007
@@ -1364,11 +1364,24 @@
 	void *data;
 	uint32_t len;
 	uint8_t mark = 0;
+	switch_payload_t payload;
 
 	if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO) || !rtp_session->remote_addr) {
 		return -1;
 	}
 	
+	assert(frame != NULL);
+
+	if (switch_test_flag(frame, SFF_CNG)) {
+		payload = rtp_session->cng_pt;
+	} else {
+		payload = frame->payload;
+	}
+
+	if (payload) {
+		payload = rtp_session->payload;
+	}
+
 	if (fwd && !packetize) {
 		data = frame->packet;
 		len = frame->packetlen;
@@ -1394,7 +1407,7 @@
 		rtp_session->send_msg.header.ts = htonl(rtp_session->ts);
 	}
 
-	return rtp_common_write(rtp_session, data, len, mark, rtp_session->payload, &frame->flags);
+	return rtp_common_write(rtp_session, data, len, mark, payload, &frame->flags);
 
 }
 



More information about the Freeswitch-svn mailing list