class RRtpSession |
A handle to an RTP session.
This is the interface to the socket-level RTP service, and provides additional facilities such as header parsing, re-ordering out-of-order packets, demultiplexing multiple sources etc.
The class abstracts all RTP information going to/from a RTP socket, and its corresponding RTCP data.
Each RTP endpoint on a device needs its own RTP session.
Multiple hosts streaming to a port on this device correspond to different RRtpReceiveSource objects associated with the session.
The class behaviour assumes that an active scheduler has already been created and started; the class does not function correctly if not.
Public Member Enumerations | |
---|---|
enum | TRtpSendPacketType { ERtcpPacketCNAME = 1, ERtcpPacketNAME = 2, ERtcpPacketEMAIL = 4, ERtcpPacketPHONE = 8, ERtcpPacketLOC = 16, ERtcpPacketTOOL = 32, ERtcpPacketNOTE = 64, ERtcpPacketPRIV = 128 } |
Private Attributes | |
---|---|
CRtpSession * | iPtr |
IMPORT_C void | DontReceive | ( | TInt | aRtpOrRtcp | ) |
Enables Receive only option for rtp or rtcp
TInt aRtpOrRtcp | Takes the values from the enum TPacketType |
IMPORT_C RRtcpRRPart | GetRRs | ( | ) |
Gets an array contining the most recent RR (Receiver Report) from all hosts who are reporting on our send stream.
The array of RRs.
IMPORT_C TInt | GetSDES | ( | const TInt | aType, |
TDes8 & | aValue | |||
) |
Gets the data associated with the specified RTCP SDES (Source Description) item.
Note a that the PRIV (Private Extensions) SDES item is not supported by this mechanism.
KErrNotFound if the item type was not found in the most recent RTCP packet KErrNone if the operation is successful
TBool | IsOpen | ( | ) | const [inline] |
Tests whether the RTP session represented by this handle is open.
ETrue, if the session is open, false otherwise.
IMPORT_C RRtpSendSource | NewSendSourceL | ( | ) |
Creates a new send stream, and returns the send stream handle.
Only one send stream per session is permitted, which means that you must not call this function if the send stream has already been created.
As the send stream is an active object, it cannot handle request completion events until control returns to the active scheduler. Typically, clients will want to add event registrations before that.
The Code panics if the SendSource has alredy been opened.
The send stream handle.
This function may leave if memory is not enough.
IMPORT_C TPtr8 | NonRtcpDataL | ( | ) |
Gets the last received non RTCP data, If no data found function leaves
Returns the last received non RTCP data
IMPORT_C const TDesC8 & | NonRtpDataL | ( | ) |
Gets the last received non RTP data, If no data found function leaves
Returns the last received non RTP data
IMPORT_C void | OpenL | ( | RSocketServ & | aServer, |
TSockAddr & | aLocalAddr, | |||
TSockAddr & | aRemoteAddr, | |||
TInt | aMaxRXSize, | |||
RConnection & | aConnection, | |||
TInt | aPriority = EPriorityNormal, | |||
const TDesC8 & | aCNAME = KNullDesC8 | |||
) |
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 | |||
) |
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 | |||
) |
Opens the session and initialises it.
No events will be generated until after control returns to the active scheduler. The client has this time to initialise the object by adding event callbacks.
RSocket & aSocket | The connected socket. |
TInt aMaxRXSize | The maximum size of a received packet. |
RSocket & aRtcpSocket | The RTCP socket. |
TInt aPriority = EPriorityNormal | The priority to be used for internal active objects |
const TDesC8 & aCNAME = KNullDesC8 | The CNAME. A sensible default is supplied if none is provided. |
IMPORT_C void | OpenL | ( | RSocket & | aSocket, |
TInt | aMaxRXSize, | |||
TInt | aPriority = EPriorityNormal | |||
) |
IMPORT_C void | OpenL | ( | RSocketServ & | aServer, |
TSockAddr & | aLocalAddr, | |||
TSockAddr & | aRemoteAddr, | |||
TInt | aMaxRXSize, | |||
RSubConnection & | aSubConnection, | |||
TInt | aPriority = EPriorityNormal, | |||
const TDesC8 & | aCNAME = KNullDesC8 | |||
) |
Opens the session and initialises it.
No events will be generated until after control returns to the active scheduler. The client has this time to initialise the object by adding event callbacks.
This API uses the RTP Stack implemented as a CF Prorotocol. The SubConnection which is passed to the API should be initialised with the RTP Params.
RSocketServ & aServer | Socket Server. |
TSockAddr & aLocalAddr | The maximum size of a received packet. |
TSockAddr & aRemoteAddr | The RTCP socket. |
TInt aMaxRXSize | The maximum size of a received packet. |
RSubConnection & aSubConnection | The subconnection with RTP Parametrs set on it. |
TInt aPriority = EPriorityNormal | |
const TDesC8 & aCNAME = KNullDesC8 |
IMPORT_C void | PrivRegisterEventCallbackL | ( | TUint | aType, |
TRtpCallbackFunction | aCallback, | |||
TAny * | aPtr, | |||
TInt | aParameter | |||
) |
The event manager contains a number of callback registrations, each of which binds a function and pointer (normally an object) to a particular kind of event. Registrations can be bound to all events on a stream.
If a function is registered for a particular event, it will be called when that event occurs. One callback function can be associated with more than 1 callback registration. Callback functions take a pointer argument which was supplied as part of the registration
TUint aType | Event type |
TRtpCallbackFunction aCallback | Callback object |
TAny * aPtr | Pointer to data that needs to be passed to the callback function |
TInt aParameter | Parameter to be passed to internal callback subsystem |
IMPORT_C void | PrivRegisterEventCallbackL | ( | TUint | aType, |
TRtpCallbackFunction | aCallback, | |||
TAny * | aPtr | |||
) |
The event manager contains a number of callback registrations, each of which binds a function and pointer (normally an object) to a particular kind of event. Registrations can be bound to all events on a stream.
If a function is registered for a particular event, it will be called when that event occurs. One callback function can be associated with more than 1 callback registration. Callback functions take a pointer argument which was supplied as part of the registration
TUint aType | Event type |
TRtpCallbackFunction aCallback | Callback object |
TAny * aPtr | Pointer to data that needs to be passed to the callback function |
IMPORT_C TBool | RTCPAutoSend | ( | ) | const |
Gets the RTCP Auto Send status.
True, if RTCP SR, RR and SDES packets are automatically sent, false otherwise
void | RegisterEventCallbackL | ( | TRtpEventType | aType, |
void(*)(T *, const TRtpEvent &) | aCallback, | |||
T * | aPtr, | |||
TRtpOneShotness | aOneShot, | |||
TInt | aParameter | |||
) | [inline] |
Registers a callback for the specified event.
Some compilers may not support templated member functions. A static version of this function is available that offers the same behaviour: RegisterEventCallbackL(RRtpSession,TRtpEventType,void (*aCallback)(T*, const TRtpEvent&),T*,TRtpOneShotness,TInt)
TRtpEventType aType | The type of event. |
void(*)(T *, const TRtpEvent &) aCallback | The callback function. The function is templated, and is prototyped to take a pointer to an object of the template type and a const reference to a TRtpEvent. The function returns void. |
T * aPtr | A pointer that is passed to the callback function when that function is called. |
TRtpOneShotness aOneShot | Indicates whether the callback function is only called once, or can be called more than once. |
TInt aParameter | A parameter to be passed to the registration function. The meaning of this depends entirely on the event type. The parameter is optional - the other overload of this function is available for registrations that don't need to pass a parameter. |
void | RegisterEventCallbackL | ( | TRtpEventType | aType, |
void(*)(T *, const TRtpEvent &) | aCallback, | |||
T * | aPtr, | |||
TRtpOneShotness | aOneShot = ERtpNotOneShot | |||
) | [inline] |
Registers a callback for the specified event.
Some compilers may not support templated member functions. A static version of this function is available that offers the same behaviour: RegisterEventCallbackL(RRtpSession,TRtpEventType,void (*aCallback)(T*, const TRtpEvent&),T*,TRtpOneShotness)
TRtpEventType aType | The type of event. |
void(*)(T *, const TRtpEvent &) aCallback | The callback function. The function is templated, and is prototyped to take a pointer to an object of the template type and a const reference to a TRtpEvent. The function returns void. |
T * aPtr | A pointer that is passed to the callback function when that function is called. |
TRtpOneShotness aOneShot = ERtpNotOneShot | Indicates whether the callback function is only called once, or can be called more than once. If not specified, the default is to allow the callback function to be called more than once. |
IMPORT_C RSocket * | RtcpSocket | ( | ) |
Gets a handle to the RTCP socket; it provides a direct access to the functionality of RTCP socket.
The RTCP socket for the current session
IMPORT_C TInt | RtcpStatistics | ( | TUint32 | aSsrc, |
TRtcpStatistics & | aRtcpStatistics | |||
) |
Gets the remote RTCP Statistics for the current RTP session
TUint32 aSsrc | |
TRtcpStatistics & aRtcpStatistics |
IMPORT_C RSocket * | RtpSocket | ( | ) |
Gets a handle to the RTP socket; it provides a direct access to the functionality of RTP socket.
The RTP socket for the current session
IMPORT_C void | SendAPPL | ( | const TDesC8 & | aName, |
const TDesC8 & | aAppData = KNullDesC8 , | |||
TUint8 | aSubType = 0 | |||
) |
Sends an APP (Application Defined) RTCP Packet.
The packet is sent immediately.
If used with RTCP auto-send, the function disrupts the auto-send intervals. Note however that Symbian reserves the right to fix this.
const TDesC8 & aName | |
const TDesC8 & aAppData = KNullDesC8 | |
TUint8 aSubType = 0 |
IMPORT_C void | SendDataL | ( | TBool | aSocketType, |
const TDesC8 & | aData, | |||
TRequestStatus & | aStatus | |||
) |
Send a non-RTP (control) data packet asynchronously
TBool aSocketType | SocketType that tells whether non RTP data has to go through RTP or RTCP socket |
const TDesC8 & aData | Non RTP data that has to be sent |
TRequestStatus & aStatus | Tells whether the data has been sent successfully |
IMPORT_C void | SendRTCPPacketL | ( | TDesC8 & | aPacket | ) |
Sends an RTCP packet now.
Calling this function doesn't make much sense if auto-send is on, as it will result in packets being sent at rather incoherent intervals.
Example:
If every report has go with CNAME,LOC and PRIV... then set flags as fallows..
SDES Flags: 1 2 3 4 5 6 7 8 1 0 0 0 1 0 0 1
TDesC8 & aPacket |
IMPORT_C RRtpSendSource | SendSource | ( | ) |
Gets the handle to the send stream object associated with this session.
The send stream object is the one created in a previous call to NewSendSourceL(). If the send stream object has not been created, then the returned handle will refer to a closed send stream.
The handle to the send stream object.
IMPORT_C void | SetBandwidth | ( | TUint | aBandwidth | ) |
Sets the estimated bandwidth used by the session.
This is used to decide when to send RTCP status packets. The default value is read from a resource file and should be a reasonably sensible default based on the maximum bandwidth of the handset.
TUint aBandwidth | The bandwidth in bps. |
IMPORT_C TInt | SetPRIVL | ( | const TDesC8 & | aPrefix, |
const TDesC8 & | aValue | |||
) |
Sets the data associated with the PRIV (Private Extensions) SDES item.
KErrTooBig if the length of the aValue and aPrefix combined is more than KMaxSdesItemLength(=255) KErrNone if the operation is successful
IMPORT_C void | SetPrePostProcessingRegisterCallback | ( | MPrePostProcessingCallback * | aPrePostProcessingCallback | ) |
Pre and Post processing function for RTP and RTCP packets
If a function is registered for a particular event, it will be called when that event occurs. One callback function can be associated with more than 1 callback registration. Callback functions take a pointer argument which was supplied as part of the registration
MPrePostProcessingCallback * aPrePostProcessingCallback |
IMPORT_C void | SetRTCPAutoSend | ( | TBool | aAutoSend | ) |
Enables or disables the automatic sending of RTCP SR (Sender Report), RR (Receiver Report), and SDES (Source Description) packets.
Note that if automatic sending is not enabled and RTCP sending is required, then explicit calls to SendRTCPPacketL() will be required.
TBool aAutoSend | ETrue, if RTCP packets need to be send automatically EFalse otherwise. |
IMPORT_C void | SetRTPTimeConversion | ( | TUint | aNow, |
TUint | aConversion | |||
) |
Supplies information about the profile-specific RTP timestamps.
This is used to generate the RTP timestamps in RTCP packets. It is not used to generate timestamps in RTP packets as they must accurately relate to the time of the sample.
IMPORT_C void | SetRemoteAddress | ( | const TSockAddr & | aRemoteAddr | ) |
Sets the remote RTP address for the current RTP session
const TSockAddr & aRemoteAddr | Remote RTP address to be set |
IMPORT_C void | SetRemoteRtcpPort | ( | TUint | aPort | ) |
Sets the remote RTCP port for the current active RTP session
TUint aPort |
IMPORT_C void | SetRtcpInterval | ( | TTimeIntervalMicroSeconds32 & | aInterval | ) |
Sets the RTCP Auto Send interval. This disables the RFC based calculation of RTCP intervals. To re-enable auto calculation, set the interval to zero.
TTimeIntervalMicroSeconds32 & aInterval | Time interval after which an RTCP auto-send will take place |
IMPORT_C void | SetRtpStreamParameters | ( | TInt | aMinSequential, |
TInt | aMaxMisorder, | |||
TInt | aMaxDropout | |||
) |
Sets the number of sequential packets that must be received before a stream is considered good.
Sets the maximum number of dropped packets to be considered a dropout, as opposed to an ended and restarted stream.
Sets the maximum number of packets by which a packet can be delayed before it is considered dropped.
The session will be 'restarted', i.e. it resets the sequence number sequence and resets all RTCP statistics.
IMPORT_C TInt | SetSDESL | ( | TInt | aType, |
const TDesC8 & | aValue | |||
) |
Sets the data associated with the specified RTCP SDES (Source Description) item for sending in the next SDES packet only.
The function Leaves if duplicate values are set for the same CNAME.
The SDES Items set by this API is valid only till the stack sends the next RTCP Packet. The list of items(except CNAME and NONE) is flushed after every RTCP report is sent
Note a that the PRIV (Private Extensions) SDES item is not supported by this mechanism.
NOTE - This call cannot be used to set a different CNAME for this session. The default CNAME is send with every SDES packets.
KErrTooBig if the length of the aValue is more than KMaxSdesItemLength(=255) KErrNone if the operation is successful
IMPORT_C TInt | SetSamplingRate | ( | TInt | aPayloadType, |
TUint | aSamplingRate | |||
) |
Sets the sampling rate for a Particular Payloadtype
TBool | operator!= | ( | RRtpSession | aThat | ) | const [inline] |
Tests whether this session handle represents a different session to the one represented by the specified handle.
ETrue, if the represented sessions are different, false otherwise.
RRtpSession aThat | The handle of the session to be compared. |
TBool | operator== | ( | RRtpSession | aThat | ) | const [inline] |
Tests whether this session handle represents the same session as the one represented by the specified handle.
ETrue, if the represented sessions are the same, false otherwise.
RRtpSession aThat | The handle of the session to be compared. |
A set of bit values passed as a parameter to RRtpSession::SendRTCPPacketL() to specify the SDES (Source Description) items that are to be sent with the packet. One or more of these may be set.
ERtcpPacketCNAME = 1 |
Canonical End-Point Identifier SDES Item. |
ERtcpPacketNAME = 2 |
User Name SDES Item. |
ERtcpPacketEMAIL = 4 |
Electronic Mail Address SDES Item. |
ERtcpPacketPHONE = 8 |
Phone Number SDES Item. |
ERtcpPacketLOC = 16 |
Geographic User Location SDES Item. |
ERtcpPacketTOOL = 32 |
Application or Tool Name SDES Item |
ERtcpPacketNOTE = 64 |
Notice/Status SDES Item |
ERtcpPacketPRIV = 128 |
Private Extensions SDES Item |