[commit] r4863 - in freeswitch/trunk: conf src src/mod/endpoints/mod_dingaling src/mod/endpoints/mod_sofia
Author: anthm Date: Thu Apr 5 15:29:48 2007 New Revision: 4863 Modified: freeswitch/trunk/conf/sofia.conf.xml freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c freeswitch/trunk/src/switch_rtp.c Log: fix rtp issue Modified: freeswitch/trunk/conf/sofia.conf.xml ============================================================================== --- freeswitch/trunk/conf/sofia.conf.xml (original) +++ freeswitch/trunk/conf/sofia.conf.xml Thu Apr 5 15:29:48 2007 @@ -31,6 +31,9 @@ <param name="rtp-ip" value="auto"/> <param name="sip-ip" value="auto"/> + <!--If you don't want to pass through timestampes from 1 RTP call to another (on a per call basis with rtp_rewrite_timestamps chanvar)--> + <!--<param name="rtp-rewrite-timestampes" value="true"/>--> + <!--If you have ODBC support and a working dsn you can use it instead of SQLite--> <!--<param name="odbc-dsn" value="dsn:user:pass"/>--> Modified: freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_dingaling/mod_dingaling.c Thu Apr 5 15:29:48 2007 @@ -829,15 +829,13 @@ switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "SETUP RTP %s:%d -> %s:%d\n", tech_pvt->profile->ip, tech_pvt->local_port, tech_pvt->remote_ip, tech_pvt->remote_port); - flags = SWITCH_RTP_FLAG_GOOGLEHACK | SWITCH_RTP_FLAG_AUTOADJ; + flags = SWITCH_RTP_FLAG_GOOGLEHACK | SWITCH_RTP_FLAG_AUTOADJ | SWITCH_RTP_FLAG_RAW_WRITE | SWITCH_RTP_FLAG_AUTO_CNG; //flags = SWITCH_RTP_FLAG_AUTOADJ; if (switch_test_flag(tech_pvt->profile, TFLAG_TIMER)) { flags |= SWITCH_RTP_FLAG_USE_TIMER; } - flags |= SWITCH_RTP_FLAG_AUTO_CNG; - if (!(tech_pvt->rtp_session = switch_rtp_new(tech_pvt->profile->ip, tech_pvt->local_port, tech_pvt->remote_ip, Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h Thu Apr 5 15:29:48 2007 @@ -105,7 +105,8 @@ PFLAG_FULL_ID = (1 << 3), PFLAG_PRESENCE = (1 << 4), PFLAG_PASS_RFC2833 = (1 << 5), - PFLAG_DISABLE_TRANSCODING = (1 << 6) + PFLAG_DISABLE_TRANSCODING = (1 << 6), + PFLAG_REWRITE_TIMESTAMPS = (1 << 7) } PFLAGS; typedef enum { Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Thu Apr 5 15:29:48 2007 @@ -547,6 +547,10 @@ if (switch_true(val)) { profile->pflags |= PFLAG_DISABLE_TRANSCODING; } + } else if (!strcasecmp(var, "rtp-rewrite-timestamps")) { + if (switch_true(val)) { + profile->pflags |= PFLAG_REWRITE_TIMESTAMPS; + } } else if (!strcasecmp(var, "auth-calls")) { if (switch_true(val)) { profile->pflags |= PFLAG_AUTH_CALLS; Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c ============================================================================== --- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c (original) +++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c Thu Apr 5 15:29:48 2007 @@ -682,7 +682,7 @@ bw = tech_pvt->read_codec.implementation->bits_per_second; ms = tech_pvt->read_codec.implementation->microseconds_per_frame; - flags = (switch_rtp_flag_t) (SWITCH_RTP_FLAG_RAW_WRITE | SWITCH_RTP_FLAG_AUTOADJ | SWITCH_RTP_FLAG_DATAWAIT); + flags = (switch_rtp_flag_t) (SWITCH_RTP_FLAG_AUTOADJ | SWITCH_RTP_FLAG_DATAWAIT); if (switch_test_flag(tech_pvt, TFLAG_BUGGY_2833)) { flags |= SWITCH_RTP_FLAG_BUGGY_2833; @@ -693,6 +693,11 @@ flags |= SWITCH_RTP_FLAG_PASS_RFC2833; } + if (!((tech_pvt->profile->pflags & PFLAG_REWRITE_TIMESTAMPS) || + ((val = switch_channel_get_variable(channel, "rtp_rewrite_timestamps")) && switch_true(val)))) { + flags |= SWITCH_RTP_FLAG_RAW_WRITE; + } + if (tech_pvt->cng_pt) { flags |= SWITCH_RTP_FLAG_AUTO_CNG; } Modified: freeswitch/trunk/src/switch_rtp.c ============================================================================== --- freeswitch/trunk/src/switch_rtp.c (original) +++ freeswitch/trunk/src/switch_rtp.c Thu Apr 5 15:29:48 2007 @@ -1307,6 +1307,7 @@ switch_core_timer_check(&rtp_session->timer); rtp_session->last_write_samplecount = rtp_session->timer.samplecount; } + switch_socket_sendto(rtp_session->sock, rtp_session->remote_addr, 0, (void *) send_msg, &bytes); } @@ -1410,7 +1411,6 @@ SWITCH_DECLARE(int) switch_rtp_write_frame(switch_rtp_t *rtp_session, switch_frame_t *frame, uint32_t ts) { uint8_t fwd = 0; - uint8_t packetize = 0; void *data; uint32_t len; switch_payload_t payload; @@ -1421,7 +1421,6 @@ } fwd = (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_RAW_WRITE) && switch_test_flag(frame, SFF_RAW_RTP)) ? 1 : 0; - packetize = (rtp_session->samples_per_interval > frame->datalen && (frame->payload == rtp_session->payload)) ? 1 : 0; if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_IO) || !rtp_session->remote_addr) { return -1; @@ -1435,7 +1434,7 @@ payload = rtp_session->payload; } - if (fwd && !packetize) { + if (fwd) { data = frame->packet; len = frame->packetlen; } else {
participants (1)
-
Freeswitch SVN