RTCP Implemented

256 views
Skip to first unread message

Arsen Chaloyan

unread,
Nov 19, 2009, 8:19:28 AM11/19/09
to UniMRCP, unimrcp-an...@googlegroups.com
The RTP control protocol (RTCP) has been implemented in the trunk.

RTCP allows to monitor RTP delivery. The protocol is based on periodic
transmission of control packets. The primary function is to provide
statistical reports such as Sender Report (SR) and Receiver Report
(RR).

There are a number of options to configure.

1. Enable RTCP support
Currently RTCP is disabled by default, you should enable it first from
unimrcpclient.xml and/or unimrcpserver.xml configuration files.
<!-- enable/disable rtcp support -->
<param name="rtcp" value="1"/>

2. Transmission of RTCP reports
The default transmission interval is 5 sec. This is the period RTCP
reports are generated and sent with. Typically, RTCP traffic bandwidth
should be fixed at 5% of overall RTP/RTCP session bandwidth. Anyway,
you can adjust the interval by the following parameter. To disable
periodic transmission set it 0.
<!-- rtcp transmission interval in msec -->
<param name="rtcp-tx-interval" value="5000"/>

3. Transmission of an RTCP BYE packet
According to the specification (RFC3550), a participant should sent an
RTCP BYE packet when he wishes to leave an RTP session. Typically, RTP
is used in conjunction with higher level session management protocols
such as SIP, H323, which provide own mechanisms for the participants
to join/leave a session. Therefore, presence of RTCP BYE packet is
usually optional.
However, the role of RTCP BYE in an MRCP environment was re-defined by
well known vendor(s). It's intended to indicate end of input
(utterance). All the mentioned options are supported by UniMRCP now.
<!-- rtcp bye policies
0 - disable rtcp bye
1 - send rtcp bye at the end of session
2 - send rtcp bye also at the end of each talkspurt (input)
-->
<param name="rtcp-bye" value="1"/>

4. Reception of RTCP packets
Currently this routine dumps received RTCP packets in the logs and it
is mainly helpful for monitoring and debugging.
The period, which is used to check for new RTCP messages, can be
adjusted by the following parameter. To disable the reception of RTCP
packets set it 0.
<!-- period (timeout) to check for new rtcp messages in msec -->
<param name="rtcp-rx-resolution" value="1000"/>


Give it a try by choosing options which best fit your needs.

--
Arsen Chaloyan
The author of UniMRCP
http://www.unimrcp.org

Christopher Rienzo

unread,
Nov 19, 2009, 9:06:01 AM11/19/09
to uni...@googlegroups.com
This is great news!  I guess I have to stop slacking and work with MikeJ to update UniMRCP in FreeSWITCH.  We're still at 0.6.0!

Arsen Chaloyan

unread,
Nov 19, 2009, 9:10:56 AM11/19/09
to uni...@googlegroups.com
Yes, there are many reasons to upgrade. Don't hesitate to contact me,
if there is anything I can help with this undertaking.

J.W.F. Thirion

unread,
Nov 19, 2009, 11:11:34 AM11/19/09
to UniMRCP
I've tested the RTCP features with Nuance Speech Server 5.1.0 and
Nuance Recognizer 9.0.3. It works beautifully! For the unimrcpclient
application, I had to set rtcp-bye to 2.

Well done Arsen!

Arsen Chaloyan

unread,
Nov 19, 2009, 11:27:38 AM11/19/09
to uni...@googlegroups.com
Thanks for the feedback, Derik.
You seem to be as usual fast and smart enough :)

Christopher Rienzo

unread,
Nov 20, 2009, 1:02:21 PM11/20/09
to uni...@googlegroups.com
The updated lib still hasn't been added to FreeSWITCH trunk, but I did update the module to support it.  My testing has been very successful. Nice work, Arsen!.

Also, I added support for the codec capabilities functions- they work great too.  Now FreeSWITCH can resample the audio from UniMRCP if the MRCP server doesn't support the preferred rate.

Arsen Chaloyan

unread,
Nov 20, 2009, 1:33:16 PM11/20/09
to uni...@googlegroups.com
Great, Chris!
I'm proud that my project has been integrated with FreeSWITCH and
should acknowledge it's done at LEVEL...

J.W.F. Thirion

unread,
Nov 23, 2009, 4:12:54 AM11/23/09
to UniMRCP
Dear Chris,

It seems like the unimrcp trunk has been updated for backward
compatibility.
------------------------------------------------------------------------
r1297 | achaloyan | 2009-11-22 21:30:30 +0200 (Sun, 22 Nov 2009) | 1
line

Provided the same functionality to change scheduler rate (if needed)
without modifying existing API (ensured backward compatibility)

In mod_unimrcp_client_create of mod_unimrcp.c:

Change:

#if UNI_VERSION_AT_LEAST(0,8,0)
media_engine = mpf_engine_create(1, pool);
#else
media_engine = mpf_engine_create(pool);
#endif

To:
media_engine = mpf_engine_create(1, pool);

Great work on the freeswitch module!

Kind regards,
Derik
Reply all
Reply to author
Forward
0 new messages