fix rtp issue
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4863 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
ff484e6abb
commit
9b9723cbe8
|
@ -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"/>-->
|
||||
|
||||
|
|
|
@ -829,15 +829,13 @@ static int activate_rtp(struct private_object *tech_pvt)
|
|||
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,
|
||||
|
|
|
@ -105,7 +105,8 @@ typedef enum {
|
|||
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 {
|
||||
|
|
|
@ -547,6 +547,10 @@ switch_status_t config_sofia(int reload)
|
|||
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;
|
||||
|
|
|
@ -682,7 +682,7 @@ switch_status_t sofia_glue_activate_rtp(private_object_t * tech_pvt)
|
|||
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 @@ switch_status_t sofia_glue_activate_rtp(private_object_t * tech_pvt)
|
|||
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;
|
||||
}
|
||||
|
|
|
@ -1307,6 +1307,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session, void *data, uint32_t data
|
|||
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(switch_rtp_t *rtp_session, void *data, uint
|
|||
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 @@ SWITCH_DECLARE(int) switch_rtp_write_frame(switch_rtp_t *rtp_session, switch_fra
|
|||
}
|
||||
|
||||
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 @@ SWITCH_DECLARE(int) switch_rtp_write_frame(switch_rtp_t *rtp_session, switch_fra
|
|||
payload = rtp_session->payload;
|
||||
}
|
||||
|
||||
if (fwd && !packetize) {
|
||||
if (fwd) {
|
||||
data = frame->packet;
|
||||
len = frame->packetlen;
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue