The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

=head1 NAME

Net::SIP::Simple::RTP - simple RTP handling for L<Net::SIP::Simple>

=head1 SYNOPSIS

  my $echo_10 = Net::SIP::Simple->rtp( 'media_recv_echo', 'output.pcmu-8000', 10 );
  my $announce = Net::SIP::Simple->rtp( 'media_send_recv', 'announce.pcmu-8000', 2 );

=head1 DESCRIPTION

This package handles simple RTP stuff for testing and small applications.
It provides methods for receiving PCUM/8000 data and for echoing them back
or for sending and receiving PCMU/8000 data.

It's used from method B<rtp> in L<Net::SIP::Simple>.

=head1 SUBROUTINES

=over 4

=item media_recv_echo ( [ OUTPUT, DELAY ] )

Receives RTP data and echoes them back to the sender.
If OUTPUT is given it will be used as the file for saving the
received data without the RTP header.

OUTPUT might also be a callback which gets the payload
as argument.

If DELAY is >0 the data will not be echoed
back immediately but with a delay of DELAY packets (e.g.
with DELAY 10 it will send back the first packet after it
received the 10th packet).
If DELAY is <0 the data will not be echoed back.
If DELAY is not given or equal 0 the data will be echoed
back immediately.

If no traffic comes in for more then 10 seconds it will
hang up the call because of inactivity.

=item media_send_recv ( INPUT, [ REPEAT, OUTPUT ] )

Will read data from file INPUT and send them as RTP to peer.
It will assume that each data block in INPUT consists
of 160 bytes, which is right for PCMU/8000 without RTP
header. The RTP header will be added to the data.

If it reaches the end of the file it will stop unless REPEAT
is given in which case it will repeat the sending REPEAT
times (if REPEAT is less 0 it will repeat forever e.g. until the
other party hangs up). On stopping it will invoke the
callback B<cb_rtp_done> from the connection params for
the L<Net::SIP::Simple::Call> or if this is not given it will
close the call by issuing a BYE.

INPUT might also be a callback usable by B<invoke_callback>
in L<Net::SIP::Util> which returns the data to send. In this
case REPEAT is not used.

Incoming data will be written to the optional OUTPUT
file like in B<media_recv_echo>. The content from OUTPUT
has the same format as INPUT or OUTPUT from B<media_recv_echo>.

OUTPUT might also be a callback which gets the payload
as an argument.

If no traffic comes in for more then 10 seconds it will
hang up the call because of inactivity.

=back