diff --git a/src/mod/applications/mod_conference/mod_conference.c b/src/mod/applications/mod_conference/mod_conference.c index 1ea51ff932..df51f62f74 100644 --- a/src/mod/applications/mod_conference/mod_conference.c +++ b/src/mod/applications/mod_conference/mod_conference.c @@ -1511,7 +1511,7 @@ static void conference_loop_output(conference_member_t * member) uint32_t interval = read_codec->implementation->microseconds_per_frame / 1000; uint32_t csamples = switch_bytes_per_frame(member->conference->rate, member->conference->interval); uint32_t samples = switch_bytes_per_frame(member->conference->rate, interval); - uint32_t tsamples = switch_bytes_per_frame(read_codec->implementation->samples_per_second, interval) / 2; + uint32_t tsamples = switch_bytes_per_frame(read_codec->implementation->samples_per_second, interval); uint32_t low_count = 0, bytes = samples * 2; call_list_t *call_list = NULL, *cp = NULL; diff --git a/src/switch_rtp.c b/src/switch_rtp.c index 368a518fb4..369be3e554 100644 --- a/src/switch_rtp.c +++ b/src/switch_rtp.c @@ -847,6 +847,12 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_ return -1; } + if (rtp_session->recv_msg.header.pt == 9 /* && G722 RFC != LAME */) { + uint32_t rfc_sucks = ntohl(rtp_session->recv_msg.header.ts); + rfc_sucks *= 2; + rtp_session->recv_msg.header.ts = htonl(rfc_sucks); + } + if (rtp_session->jb && bytes && rtp_session->recv_msg.header.pt == rtp_session->payload) { if (rtp_session->recv_msg.header.m) { stfu_n_reset(rtp_session->jb); @@ -1617,7 +1623,9 @@ SWITCH_DECLARE(int) switch_rtp_write_manual(switch_rtp_t *rtp_session, } send_msg = rtp_session->send_msg; - + if (payload == 9 /* && G722 RFC != LAME */) { + ts /= 2; + } send_msg.header.seq = htons(mseq); send_msg.header.ts = htonl(ts); send_msg.header.ssrc = htonl(ssrc);