Because if a RTP packet is due and hasn't arrived yet you need something to play. Audio isn't like TCP where you dropped packets can be retransmitted, if it hasn't arrived by the time you want to play it it's too late and you have to play silence to handle it. Your audio problems are more likely due to packet loss or jitter which is why the RTP packet is overdue, not the CNG itself. It jitter's the problem enabling the jitterbuffer might help (at the expense of increased lag). If loss is the problem there's no way to handle that except as silence for the missing interval, you need to fix whatever is causing the loss. -Steve On 5 February 2013 10:23, Xijing Dai <dxj19831029@gmail.com> wrote:
Hey all,
Inside code
switch_rtp.c file:
static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_type, switch_frame_flag_t *flags, switch_io_flag_t io_flags) ................ if (check || (bytes && !switch_test_flag(rtp_session, SWITCH_RTP_FLAG_USE_TIMER))) { if (!bytes && switch_test_flag(rtp_session, SWITCH_RTP_FLAG_USE_TIMER)) { /* We're late! We're Late! */ if (!switch_test_flag(rtp_session, SWITCH_RTP_FLAG_NOBLOCK) && status == SWITCH_STATUS_BREAK) { switch_cond_next(); continue; }
return_cng_frame(); <------- this lane to return cng frame if late. } }
Could someone explain why we want to return cng frame when package is late? this is caused for me to hear very bad noise audio.
Can I disable return CNG frame?
Cheers
_________________________________________________________________________ Professional FreeSWITCH Consulting Services: consulting@freeswitch.org http://www.freeswitchsolutions.com
FreeSWITCH-powered IP PBX: The CudaTel Communication Server http://www.cudatel.com
Official FreeSWITCH Sites http://www.freeswitch.org http://wiki.freeswitch.org http://www.cluecon.com
FreeSWITCH-dev mailing list FreeSWITCH-dev@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-dev UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-dev http://www.freeswitch.org