For question 1, you can use SWITCH_CHANNEL_SESSION_LOG if you have a NULL session pointer.

Chris


On Aug 4, 2013, at 8:54 PM, Seven Du <dujinfang@gmail.com> wrote:

Hi,

1) when use switch_rtp without a session SWITCH_RTP_FLAG_DEBUG_RTP_READ complaining no session attached because it use SWITCH_CHANNEL_SESSION_LOG.

Suggested fix:

use SWITCH_CHANNEL_SESSION_LOG where possible and SWITCH_CHANNEL_LOG when no session.

also, I think the following code is wrong because there's no rtp_session->session:

if (!rtp_session->session) {
rtp_session->flags[SWITCH_RTP_FLAG_DEBUG_RTP_READ] = 0;
switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(rtp_session->session), SWITCH_LOG_CRIT, "RTP HAS NO SESSION!\n");
} else {
...

I can fix and push if confirmed.

2) switch_rtp_zerocopy_read_frame() blocks forever if no RTP comes. Anyway to make it non block? I tried the following code  it blocks even with SWITCH_IO_FLAG_NOBLOCK.

I tried the following code in mod_skel, I can make a diff if necessary.


rtp_flag[SWITCH_RTP_FLAG_IO] = 1;
rtp_flag[SWITCH_RTP_FLAG_AUTOADJ] = 1;
rtp_flag[SWITCH_RTP_FLAG_DATAWAIT] = 0;
rtp_flag[SWITCH_RTP_FLAG_VIDEO] = 1;
rtp_flag[SWITCH_RTP_FLAG_NOBLOCK] = 1;
rtp_flag[SWITCH_RTP_FLAG_AUTO_CNG] = 1;
// rtp_flag[SWITCH_RTP_FLAG_DEBUG_RTP_READ] = 1;
// rtp_flag[SWITCH_RTP_FLAG_DEBUG_RTP_WRITE] = 1;

rtp_session = switch_rtp_new(IP, //local
50002, //recv port
IP,
42000, //remote, doesn't matter for us, but can't be 0
96, // payload_type
1,
90000,
rtp_flag,
NULL, &err, pool);

if (!rtp_session) {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "RTP Error: %s\n", err);
goto done;
}

while(!done) {
// status = switch_rtp_zerocopy_read_frame(rtp_session, &read_frame, SWITCH_IO_FLAG_NOBLOCK);
status = switch_rtp_zerocopy_read_frame(rtp_session, &read_frame, SWITCH_IO_FLAG_NONE);
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_INFO, "read %d\n", read_frame.packetlen);
switch_yield(100000);
}

Thanks for help.


-- 
Seven Du
http://www.freeswitch.org.cn
http://about.me/dujinfang
http://www.dujinfang.com

Sent with Sparrow

_________________________________________________________________________
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