Sending an RTP packet

This page describes how to prepare, create and send an RTP packet.

Preparing the packet

RRtpSendPacket allows you to set the following fields for an RTP packet.

SetMarker(): Sets or unsets the marker bit.

SetPayloadType(): Sets the default payload type this is usually set befor e creating a new packet.

SetTimeStamp(): Sets the sampling instant of first octet in the RTP data packet (also RTCP packet).

SetFlags(): Sets the first 32 bits of the packet header.

You can retrieve the following from an RTP packet:

WritePayload(): Gets the descriptor to which the data can be written.

Creating a send packet

RRtpSendSource allows you to create a new RTP packet. NewSendPacketL and NewSendPacketLC create a new send RTP packet. These functions return a handle to an RRtpSendPacket object.

RRtpSendPacket NewSendPacketL(TInt aPayloadSize=0, TInt aHeaderExtensionSize=KRtpNoExtension);

Set the default payload type and payload size before you create the new send packet using SetPayloadType() and SetDefaultPayloadSize() respectively.

Set the header extension size to multiples of 4-byte words this means the fixed header must be followed by exactly one header extension. The default value is KRtpNoExtension. 0 is an acceptable value.

RRtpSendSource allows you to set any of the following for an RTP packet to be sent:

SetAlignment: Aligns the header data to multiples of the set padding value. The values can range within 1-255. 1 is the default value, which means not padded.

SetDefaultPayloadSize: Sets the default payload size for the RTP packet that is to be sent. This is usually set before creating a new packet.

SetPayloadType: Sets the default payload type for the RTP packet that is to be sent. This is usually set before creating a new packet.

Call ByeL to send the BYE packet to indicate that one or more sources are no longer active (example when a participant wants to leave).

You can stop sending a packet even after making a send request. Call RRtpSendSource::Cancel() to cancel the outstanding send request on the send stream.

Sending the packet

Call RRtpSendPacket::Send() to send the RTP packet. The packet is considered to be sent only when an ERtpSendSucceeded event is received from the send stream. If a failure occurs, an ERtpSendFailed event is received.

Note: Before sending an RTP packet you must set the bandwidth for the RTP session. The following code snippet shows how to set the bandwidth for an RTP session.

IMPORT_C void SetBandwidth(TUint aBandwidth) 

Closing the packet

Once the packet has been sent, call RRtpSendPacket::Close() to close the RTP packet.

Closing the send stream

Call RRtpSendSource::Close() to close the send stream. The send stream cannot be closed if an event is currently being handled by a call back function.