This page describes how to create a new session with the socket server
and how to open the session and set some of the session parameters. It also
describes how to use an RTP [[[ERROR: [NOKX000E] Unable to find definition for key reference 'RRtpSession']]]RSocket
interface.
To communicate with RTP, open a session with the socket server. You can open several sessions at the same time.
An active scheduler must be created and started before you open an RTP session.
[[[ERROR: [NOKX000E] Unable to find definition for key reference 'RRtpSession']]]RRtpSession::OpenL()
opens
an RTP session and starts it. The method has four overloads. RTCP is enabled
for the first three overloads and is disabled for the last overload.
IMPORT_C void OpenL(RSocketServ &aServer, TSockAddr &aLocalAddr, TSockAddr &aRemoteAddr, TInt aMaxRXSize, RConnection &aConnection, TInt aPriority=EPriorityNormal, const TDesC8 &aCNAME=KNullDesC8);
IMPORT_C void OpenL(RSocketServ &aServer, TSockAddr &aLocalAddr, TSockAddr &aRemoteAddr, TInt aMaxRXSize, TInt aPriority=EPriorityNormal, const TDesC8 &aCNAME=KNullDesC8);
IMPORT_C void OpenL(RSocket &aSocket, TInt aMaxRXSize, RSocket &aRtcpSocket, TInt aPriority=EPriorityNormal, const TDesC8 &aCNAME=KNullDesC8);
IMPORT_C void OpenL(RSocket &aSocket, TInt aMaxRXSize, TInt aPriority=EPriorityNormal);
After creating an RTP session, you need to set the following parameters before sending and receiving RTP packets:
the bandwidth for the
RTP stream, by calling the [[[ERROR: [NOKX000E] Unable to find definition for key reference 'RRtpSession']]]SetBandwidth()
method
the conversion rate
for the RTCP timestamp, by calling the [[[ERROR: [NOKX000E] Unable to find definition for key reference 'RRtpSession']]]SetRTPTimeConversion()
method
During an active RTP session, you can change the following parameters:
the destination address,
by calling the [[[ERROR: [NOKX000E] Unable to find definition for key reference 'RRtpSession']]]SetRemoteAddress()
method
the remote RTCP port,
by calling the [[[ERROR: [NOKX000E] Unable to find definition for key reference 'RRtpSession']]]SetRemoteRtcpPort()
method
When specifying a new remote address for the RTP session, the remote RTCP port is set one port higher than the RTP port, as defined by the RTP standard. When specifying a new RTCP port, the RTP port is not modified.
Note:
If you need more configuration options for your RTP communications, you can
change the settings of the internal sockets. The [[[ERROR: [NOKX000E] Unable to find definition for key reference 'RRtpSession']]]RtpSocket()
and [[[ERROR: [NOKX000E] Unable to find definition for key reference 'RRtpSession']]]RtcpSocket()
methods return the handles of
the internal sockets used for RTP and RTCP data.
The following code shows how to create a new session, and set session parameters.
// [...] // Construct a new session object RRtpSession session; session.OpenL(iRtpSocket, 1500, EPriorityNormal); // Set the RTP session parameters session.SetBandwidth(1000); // Set session bandwidth in bps at the start up //SetRTPTimeConversion API is called before receiving an RTP packet session.SetRTPTimeConversion(100, 100); // Set RTP time conversion for generating the RTP timestamps in RTCP packets
The following code shows how to change parameters during the RTP session:
// sample address and port for the RTP socket TSockAddr newAddr; newAddrr.SetAddress(INET_ADDR(192,168,0,1)); newAddr.SetPort(4646); // changing the RTP destination session.SetRemoteAddress(newAddr); // by default, the RTCP port is set to the first port higher than the RTP port session.SetRemoteRtcpPort(4649); // turning IMCP errors onsession. RtpSocket().SetOpt(KSoUdpReceiveICMPError, KSolInetUdp, 1);