epoc32/include/rtp.h
branchSymbian2
changeset 3 e1b950c65cb4
parent 2 2fe1408b6811
child 4 837f303aceeb
     1.1 --- a/epoc32/include/rtp.h	Tue Mar 16 16:12:26 2010 +0000
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,1352 +0,0 @@
     1.4 -// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.5 -// All rights reserved.
     1.6 -// This component and the accompanying materials are made available
     1.7 -// under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     1.8 -// which accompanies this distribution, and is available
     1.9 -// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    1.10 -//
    1.11 -// Initial Contributors:
    1.12 -// Nokia Corporation - initial contribution.
    1.13 -//
    1.14 -// Contributors:
    1.15 -//
    1.16 -// Description:
    1.17 -//
    1.18 -
    1.19 -#ifndef RTP_H
    1.20 -#define RTP_H
    1.21 -
    1.22 -#include <es_sock.h>
    1.23 - 
    1.24 -class TRtpEvent;
    1.25 -class RRtpSession;
    1.26 -class RRtpSendPacket;
    1.27 -class RRtpReceivePacket;
    1.28 -class RRtpReceiveSource;
    1.29 -class RRtpSendSource;
    1.30 -class RRtpHeaderExtension;
    1.31 -class RRtpCSRCs;
    1.32 -class CRtpSession;
    1.33 -class CRtpReceiveSource;
    1.34 -class CRtpSendSource;
    1.35 -class TRtpPacket;
    1.36 -
    1.37 -class RRtcpRRPart;
    1.38 -class RRtcpSRPart;
    1.39 -
    1.40 -/**
    1.41 -@publishedAll
    1.42 -@released
    1.43 -
    1.44 -A set of values that defines the event types that may be handled.
    1.45 -
    1.46 -See all variants of the RegisterEventCallbackL() function. 
    1.47 -
    1.48 -@see TRtpEvent
    1.49 -*/
    1.50 -enum TRtpEventType
    1.51 -	{
    1.52 -	/** 
    1.53 -	A special event type that is interpreted by all of
    1.54 -	the RegisterEventCallbackL() set of functions to mean that the registered
    1.55 -	callback function is to be called for any event except failure events.
    1.56 -    */
    1.57 -	ERtpAnyEvent = 0,
    1.58 -	
    1.59 -	
    1.60 -    /**
    1.61 -    Defines a base value for session events.
    1.62 -   
    1.63 -    All session event types have values that are greater than this.
    1.64 -    */
    1.65 -	ERtpSessionEventBase = 0x100,
    1.66 -	
    1.67 -	
    1.68 -	/**
    1.69 -	An event type that indicates that a session-level error has occurred.
    1.70 -	
    1.71 -	The event status is a standard Symbian OS error code.
    1.72 -	The callback parameter is used to register interest in only one 
    1.73 -	type of error.
    1.74 -	*/
    1.75 -	ERtpSessionFail      = 0x101, 
    1.76 -	
    1.77 -	
    1.78 -	/**
    1.79 -    An event type that indicates that a new stream has been received.
    1.80 -	
    1.81 -	The event status is the	SSRC of the stream.
    1.82 -	*/
    1.83 -	ERtpNewSource        = 0x102,
    1.84 -	
    1.85 -	
    1.86 -	/**
    1.87 -	An event type that indicates that an RTCP RR (Receiver Report) has been
    1.88 -	received.
    1.89 -	
    1.90 -	The event status is the SSRC of the sender.
    1.91 -
    1.92 -	Note - This event type has not been implemented yet.
    1.93 -	*/
    1.94 -	ERtpNewRR            = 0x103,
    1.95 -	
    1.96 -	
    1.97 -	/**
    1.98 -	An event type that indicates that a packet bigger than the expected maximum
    1.99 -	has been received.
   1.100 -	
   1.101 -	When this event occurs, the packet is deleted.
   1.102 -	*/
   1.103 -	ERtpBufferOverflow   = 0x104,
   1.104 -	
   1.105 -	
   1.106 -	/**
   1.107 -	An event type that indicates that a packet has been recived that
   1.108 -	is smaller than its header.
   1.109 -	
   1.110 -	When this event occurs, the packet is deleted.
   1.111 -	*/
   1.112 -	ERtpUndersizedPacket = 0x105,
   1.113 - 
   1.114 - 	
   1.115 -	/**
   1.116 -	Not an event type, but defines the upper limit for session event
   1.117 -	type values.
   1.118 -    */
   1.119 -	ERtpSessionEventEnd  = 0x1ff,
   1.120 -
   1.121 -
   1.122 -    /**
   1.123 -    Not an event type but defines a base value for send stream events.
   1.124 -   
   1.125 -    All send stream event types have values that are greater than this.
   1.126 -    */
   1.127 -	ERtpSendEventBase    = 0x200,
   1.128 -
   1.129 -
   1.130 -	/**
   1.131 -	An event type that indicates that an error has occurred while sending
   1.132 -	a packet.
   1.133 -	
   1.134 -	The event status is a standard Symbian OS error code. The callback parameter
   1.135 -	is used only to register interest in one type of error.
   1.136 -	*/
   1.137 -	ERtpSendFail         = 0x201, 
   1.138 -	
   1.139 -	
   1.140 -	/**
   1.141 -	An event type that indicates that a send packet operation has succeeded.
   1.142 -	*/
   1.143 -	ERtpSendSucceeded    = 0x202,
   1.144 -	
   1.145 -	
   1.146 -	/**
   1.147 -	Not an event type, but defines the upper limit for send stream event 
   1.148 -	type values.
   1.149 -	*/
   1.150 -	ERtpSendEventEnd     = 0x2ff,
   1.151 -
   1.152 -
   1.153 -    /**
   1.154 -    Not an event type but defines a base value for receive stream events.
   1.155 -   
   1.156 -    All receive stream event types have values that are greater than this.
   1.157 -    */
   1.158 -	ERtpSourceEventBase  = 0x300,
   1.159 -	
   1.160 -	
   1.161 -	/**
   1.162 -	An event type that indicates that an error has occurred.
   1.163 -	
   1.164 -    The event status is a standard Symbian OS error code. The callback parameter
   1.165 -    is used only to register interest in one type of error.
   1.166 -    */
   1.167 -	ERtpSourceFail       = 0x301,
   1.168 -	
   1.169 -	
   1.170 -	/**
   1.171 -	An event type that indicates that an in-sequence packet has been received.
   1.172 -	*/
   1.173 -	ERtpPacketReceived   = 0x302,
   1.174 -	
   1.175 -	
   1.176 -	/**
   1.177 -	An event type that indicates that the  codec has changed.
   1.178 -	
   1.179 -	The event status is the new payload type.
   1.180 -	*/
   1.181 -	ERtpCodecChange      = 0x303,
   1.182 -	
   1.183 -	
   1.184 -	/**
   1.185 -	An event type that indicates that a marker packet has arrived.
   1.186 -	*/
   1.187 -	ERtpMarker           = 0x304,
   1.188 -	
   1.189 -	
   1.190 -	/**
   1.191 -	An event type that indicates that a misordered packet has arrived.
   1.192 -	*/
   1.193 -	ERtpMisorder         = 0x305,
   1.194 -	
   1.195 -	
   1.196 -	/**
   1.197 -	An event type that indicates that a dropout has been detected.
   1.198 -	*/
   1.199 -	ERtpDropout          = 0x306,
   1.200 -	
   1.201 -	
   1.202 -	/**
   1.203 -	An event type that indicates that a SDES (Source Description) RTCP packet
   1.204 -	has been received.
   1.205 -	
   1.206 -	For SDES events, the callback parameter is used to specify the type of 
   1.207 -	SDES. Use a value from TRtpSendPacketType
   1.208 -	
   1.209 -	The event status is the SSRC of the sender.
   1.210 -
   1.211 -	@see RRtpSession::TRtpSendPacketType
   1.212 -	*/
   1.213 -	ERtpSDES             = 0x307, 
   1.214 -
   1.215 -
   1.216 -	/**
   1.217 -	An event type that indicates that a APP (Application Defined) RTCP packet
   1.218 -	has been received.
   1.219 -	
   1.220 -	The event status is the SSRC of the sender.
   1.221 -
   1.222 -	*/
   1.223 -	ERtpAPP              = 0x308,
   1.224 -	
   1.225 -	
   1.226 -	/**
   1.227 -	An event type that indicates that a SR (Sender Report) RTCP packet
   1.228 -	has been received.
   1.229 -
   1.230 -	The event status is the SSRC of the sender.
   1.231 -	
   1.232 -	*/
   1.233 -	ERtpSR               = 0x309,
   1.234 -	
   1.235 -	
   1.236 -	/**
   1.237 -	An event type that indicates that a RR (Receiver Report) RTCP packet
   1.238 -	has been received.
   1.239 -
   1.240 -	The event status is the SSRC of the sender.
   1.241 -	*/
   1.242 -	ERtpRR               = 0x30a,
   1.243 -
   1.244 -
   1.245 -	/**
   1.246 -	An event type that indicates that a BYE (Goodbye) RTCP packet
   1.247 -	has been received.
   1.248 -
   1.249 -	The event status is the SSRC of the sender.
   1.250 -	*/
   1.251 -	ERtpBYE              = 0x30b,
   1.252 -
   1.253 -	
   1.254 -	/**
   1.255 -	Not an event type, but defines the upper limit for receive stream event 
   1.256 -	type values.
   1.257 -	*/
   1.258 -	ERtpSourceEventEnd   = 0x3ff
   1.259 -	};
   1.260 -
   1.261 -
   1.262 -/**
   1.263 -@publishedAll
   1.264 -@released
   1.265 -
   1.266 -Indicates whether a callback function can be called once, or more than once.
   1.267 -
   1.268 -The appropriate enum value is passed as an argument to the
   1.269 -RegisterEventCallbackL() functions of RRtpSession, RRtpSendSource,
   1.270 -and RRtpReceiveSource, or to the equivalent static functions.
   1.271 -
   1.272 -@see RRtpSession
   1.273 -@see RRtpSendSource
   1.274 -@see RRtpReceiveSource
   1.275 -*/
   1.276 -enum TRtpOneShotness 
   1.277 -	{
   1.278 -	/**
   1.279 -	Indicates that the call back function can be called more than once.
   1.280 -	*/
   1.281 -	ERtpNotOneShot = 0,
   1.282 -
   1.283 -	
   1.284 -	/**
   1.285 -	Indicates that the call back function is only called once.
   1.286 -	*/
   1.287 -	ERtpOneShot = 0x40000000
   1.288 -	};
   1.289 -
   1.290 -
   1.291 -
   1.292 -
   1.293 -/**
   1.294 -@publishedAll
   1.295 -*/
   1.296 -typedef void (*TRtpCallbackFunction)(TAny* aPtr, const TRtpEvent& aEvent);
   1.297 -
   1.298 -
   1.299 -
   1.300 -/**
   1.301 -@internalComponent
   1.302 -*/
   1.303 -const TInt KRtpNoParameter = KRequestPending;
   1.304 -
   1.305 -
   1.306 -//Needed for recv-only option for RTP or RTCP
   1.307 -//This must map to TRtpType
   1.308 -enum TPacketType
   1.309 -	{	
   1.310 -	EPacketRtp,	
   1.311 -	EPacketRtcp
   1.312 -	};
   1.313 -
   1.314 -
   1.315 -
   1.316 -
   1.317 -/**
   1.318 -@publishedAll
   1.319 -@released
   1.320 -
   1.321 -A value that can be passed as the second parameter in a call to either
   1.322 -RRtpSendSource::NewSendPacketL() or RRtpSendSource::NewSendPacketLC()
   1.323 -to indicate that no exension is required for the RTP send packet.
   1.324 -*/
   1.325 -const TInt KRtpNoExtension = -1;
   1.326 -
   1.327 -
   1.328 -
   1.329 -/**
   1.330 -@publishedAll
   1.331 -@released
   1.332 -
   1.333 -A handle to an RTP session.
   1.334 -
   1.335 -This is the interface to the socket-level RTP service, and provides additional
   1.336 -facilities such as header parsing, re-ordering out-of-order packets,
   1.337 -demultiplexing multiple sources etc.
   1.338 -
   1.339 -The class abstracts all RTP information going to/from a RTP socket, and its
   1.340 -corresponding RTCP data.
   1.341 -
   1.342 -Each RTP endpoint on a device needs its own RTP session.
   1.343 -
   1.344 -Multiple hosts streaming to a port on this device correspond
   1.345 -to different RRtpReceiveSource objects associated with the session.
   1.346 -
   1.347 -The class behaviour assumes that an active scheduler has already been created
   1.348 -and started; the class does not function correctly if not.
   1.349 -*/
   1.350 -class RRtpSession
   1.351 -	{
   1.352 - public:
   1.353 -    /**
   1.354 -    A set of bit values passed as a parameter to RRtpSession::SendRTCPPacketL()
   1.355 -    to specify the SDES (Source Description) items that are to be sent with
   1.356 -    the packet. One or more of these may be set.
   1.357 -    
   1.358 -    @see RRtpSession::SendRTCPPacketL()
   1.359 -	*/
   1.360 -	enum TRtpSendPacketType
   1.361 -		{
   1.362 -        /**
   1.363 -        Canonical End-Point Identifier SDES Item.
   1.364 -        */
   1.365 -		ERtcpPacketCNAME = 1, 
   1.366 -		
   1.367 -		/**
   1.368 -        User Name SDES Item.
   1.369 -	    */
   1.370 -		ERtcpPacketNAME  = 2, 
   1.371 -		
   1.372 -	    /**
   1.373 -        Electronic Mail Address SDES Item.
   1.374 -	    */
   1.375 -		ERtcpPacketEMAIL = 4, 
   1.376 -		
   1.377 -        /**
   1.378 -	    Phone Number SDES Item.
   1.379 -	    */		
   1.380 -		ERtcpPacketPHONE = 8, 
   1.381 -		
   1.382 -		/**
   1.383 -	    Geographic User Location SDES Item.
   1.384 -	    */
   1.385 -		ERtcpPacketLOC   = 16,
   1.386 -		
   1.387 -		/**
   1.388 -        Application or Tool Name SDES Item 
   1.389 -	    */
   1.390 -		ERtcpPacketTOOL  = 32,
   1.391 -		
   1.392 -		/**
   1.393 -	    Notice/Status SDES Item 
   1.394 -	    */
   1.395 -		ERtcpPacketNOTE  = 64,
   1.396 -		
   1.397 -		/**
   1.398 -	    Private Extensions SDES Item 
   1.399 -	    */
   1.400 -		ERtcpPacketPRIV  = 128
   1.401 -		};
   1.402 -
   1.403 -	inline RRtpSession();
   1.404 -	inline TBool IsOpen() const;
   1.405 -
   1.406 -	IMPORT_C void OpenL(RSocketServ& aServer, TSockAddr& aLocalAddr,
   1.407 -						TSockAddr& aRemoteAddr,
   1.408 -						TInt aMaxRXSize, RConnection& aConnection, TInt aPriority = EPriorityNormal, 
   1.409 -						const TDesC8& aCNAME = KNullDesC8);
   1.410 -
   1.411 -	
   1.412 -	IMPORT_C void OpenL(RSocketServ& aServer, TSockAddr& aLocalAddr,
   1.413 -						TSockAddr& aRemoteAddr,
   1.414 -						TInt aMaxRXSize, TInt aPriority = EPriorityNormal, 
   1.415 -						const TDesC8& aCNAME = KNullDesC8);
   1.416 -
   1.417 -    /**
   1.418 -	@publishedPartner
   1.419 -	@released
   1.420 -   	
   1.421 -    Opens the session and initialises it.
   1.422 -
   1.423 -    No events will be generated until after control returns to the
   1.424 -    active scheduler. The client has this time to initialise the
   1.425 -    object by adding event callbacks.
   1.426 -
   1.427 -    @param aSocket     The connected socket.
   1.428 -    @param aMaxRXSize  The maximum size of a received packet.
   1.429 -    @param aRtcpSocket The RTCP socket.
   1.430 -    @param aPriority   The priority to be used for internal active objects
   1.431 -    @param aCNAME      The CNAME. A sensible default is supplied if none is
   1.432 -                       provided.
   1.433 -    */
   1.434 -	IMPORT_C void OpenL(RSocket& aSocket, TInt aMaxRXSize, 
   1.435 -						RSocket& aRtcpSocket,
   1.436 -						TInt aPriority = EPriorityNormal, 
   1.437 -						const TDesC8& aCNAME = KNullDesC8);
   1.438 -
   1.439 -	IMPORT_C void OpenL(RSocket& aSocket, TInt aMaxRXSize,
   1.440 -						TInt aPriority = EPriorityNormal);
   1.441 -
   1.442 -	IMPORT_C void Close();
   1.443 -
   1.444 -	IMPORT_C void SetMaxRXSize(TInt aMaxRXSize);
   1.445 -
   1.446 -	IMPORT_C TInt MaxRXSize();
   1.447 -    
   1.448 -    
   1.449 -    /** 
   1.450 -	@publishedPartner
   1.451 -	@released
   1.452 -	
   1.453 -    Sets the estimated bandwidth used by the session.
   1.454 -    
   1.455 -    This is used to decide when to send RTCP status packets.
   1.456 -    The default	value is read from a resource file and should be a reasonably
   1.457 -	sensible default based on the maximum bandwidth of the handset.
   1.458 -	
   1.459 -	@param aBandwidth The bandwidth in bps.
   1.460 -    */
   1.461 -	IMPORT_C void SetBandwidth(TUint aBandwidth);
   1.462 -
   1.463 -
   1.464 -    /**
   1.465 -	@publishedPartner
   1.466 -	@released
   1.467 -   	
   1.468 -   	Supplies information about the profile-specific RTP
   1.469 -    timestamps. 
   1.470 -    
   1.471 -    This is used to generate the RTP timestamps in RTCP packets.
   1.472 -    It is not used to generate timestamps in RTP packets as they must
   1.473 -    accurately relate to the time of the sample.
   1.474 -   	
   1.475 -   	@param aNow        The time now in RTP format
   1.476 -	@param aConversion The number of nanoseconds per RTP timer tick.
   1.477 -    */
   1.478 -	IMPORT_C void SetRTPTimeConversion(TUint aNow, TUint aConversion);
   1.479 -	IMPORT_C RRtpReceiveSource NewReceiveSourceL();
   1.480 -	IMPORT_C RRtpReceiveSource NewReceiveSourceLC();
   1.481 -
   1.482 -    /**
   1.483 -    Registers a callback for the specified event.
   1.484 -
   1.485 -	Some compilers may not support templated member functions. A static version
   1.486 -	of this function is available that offers the same behaviour:
   1.487 -    RegisterEventCallbackL(RRtpSession,TRtpEventType,void (*aCallback)(T*, const TRtpEvent&),T*,TRtpOneShotness,TInt)
   1.488 -
   1.489 -    @param aType      The type of event.
   1.490 -    @param aCallback  The callback function. The function is templated, and is
   1.491 -                      prototyped to take a pointer to an object of the template
   1.492 -                      type and a const reference to a TRtpEvent. The function
   1.493 -                      returns void.
   1.494 -	@param aPtr       A pointer that is passed to the callback function when
   1.495 -	                  that function is called.
   1.496 -	@param aOneShot   Indicates whether the callback function is only
   1.497 -	                  called once, or can be called more than once.
   1.498 -	@param aParameter A parameter to be passed to the registration function.
   1.499 -	                  The meaning of this depends entirely on the event type.
   1.500 -	                  The parameter is optional - the other overload of this
   1.501 -	                  function is available for registrations that don't need
   1.502 -                      to pass a parameter.                      
   1.503 -	*/
   1.504 -	template <class T> inline void 
   1.505 -		RegisterEventCallbackL(TRtpEventType aType, 
   1.506 -							   void (*aCallback)(T*, const TRtpEvent&), 
   1.507 -							   T* aPtr, 
   1.508 -							   TRtpOneShotness aOneShot,
   1.509 -							   TInt aParameter)
   1.510 -			{
   1.511 -			PrivRegisterEventCallbackL(
   1.512 -				aType|aOneShot, 
   1.513 -				reinterpret_cast<TRtpCallbackFunction>(aCallback),
   1.514 -				static_cast<TAny*>(aPtr), aParameter);
   1.515 -			}
   1.516 -
   1.517 -    /**
   1.518 -    Registers a callback for the specified event.
   1.519 -
   1.520 -	Some compilers may not support templated member functions. A static version
   1.521 -	of this function is available that offers the same behaviour:
   1.522 -	RegisterEventCallbackL(RRtpSession,TRtpEventType,void (*aCallback)(T*, const TRtpEvent&),T*,TRtpOneShotness)
   1.523 -
   1.524 -    @param aType      The type of event.
   1.525 -    @param aCallback  The callback function. The function is templated, and is
   1.526 -                      prototyped to take a pointer to an object of the template
   1.527 -                      type and a const reference to a TRtpEvent. The function
   1.528 -                      returns void.
   1.529 -	@param aPtr       A pointer that is passed to the callback function when
   1.530 -	                  that function is called.
   1.531 -	@param aOneShot   Indicates whether the callback function is only
   1.532 -	                  called once, or can be called more than once. If not
   1.533 -	                  specified, the default is to allow the callback function
   1.534 -	                  to be called more than once.
   1.535 -	*/
   1.536 -	template <class T> inline void 
   1.537 -		RegisterEventCallbackL(TRtpEventType aType, 
   1.538 -							   void (*aCallback)(T*, const TRtpEvent&), 
   1.539 -							   T* aPtr, 
   1.540 -							   TRtpOneShotness aOneShot = ERtpNotOneShot)
   1.541 -			{
   1.542 -			PrivRegisterEventCallbackL(
   1.543 -				aType|aOneShot, 
   1.544 -				reinterpret_cast<TRtpCallbackFunction>(aCallback),
   1.545 -				static_cast<TAny*>(aPtr));
   1.546 -			}
   1.547 -
   1.548 -
   1.549 -	/**
   1.550 -	@publishedPartner
   1.551 -	@released
   1.552 -	
   1.553 -	Gets an array contining the most recent RR (Receiver Report) from
   1.554 -	all hosts who are reporting on our send stream.
   1.555 -	
   1.556 -	@return The array of RRs.
   1.557 -	*/
   1.558 -	IMPORT_C RRtcpRRPart GetRRs();
   1.559 -
   1.560 -
   1.561 -	/**
   1.562 -	@publishedPartner
   1.563 -	@released
   1.564 -	
   1.565 -	Gets the data associated with the specified RTCP SDES (Source Description)
   1.566 -	item.
   1.567 -
   1.568 -	Note a that the PRIV (Private Extensions) SDES item is not supported
   1.569 -	by this mechanism.
   1.570 -	
   1.571 -	@param aType  The value identifying the RTCP SDES item.
   1.572 -	
   1.573 -	@param aValue A descriptor reference to the SDES item data. 
   1.574 -	
   1.575 -	@return KErrNotFound if the item type was not found in the most recent RTCP packet
   1.576 -			KErrNone if the operation is successful
   1.577 -	*/
   1.578 -	IMPORT_C TInt GetSDES(const TInt aType, TDes8& aValue);
   1.579 -
   1.580 -	
   1.581 -	/**
   1.582 -	@publishedPartner
   1.583 -	@released
   1.584 -	
   1.585 -	Sets the data associated with the specified RTCP SDES (Source Description)
   1.586 -	item for sending in the next SDES packet only.
   1.587 -
   1.588 -	The function Leaves if duplicate values are set for the same CNAME.
   1.589 -	
   1.590 -	Note a that the PRIV (Private Extensions) SDES item is not supported
   1.591 -	by this mechanism.
   1.592 -	
   1.593 -	NOTE - This call cannot be used to set a different CNAME for this session.
   1.594 -	The default CNAME is send with every SDES packets.
   1.595 -	
   1.596 -	@param aType  The value identfying the RTCP SDES item.
   1.597 -	@param aValue The SDES item data.
   1.598 -
   1.599 -	@return KErrTooBig if the length of the aValue is more than KMaxSdesItemLength(=255)
   1.600 -			KErrNone if the operation is successful
   1.601 -	*/
   1.602 -	IMPORT_C TInt SetSDESL(TInt aType, const TDesC8& aValue);
   1.603 -
   1.604 -	/**
   1.605 -	@publishedPartner
   1.606 -	@released
   1.607 -	
   1.608 -	Sets the data associated with the PRIV (Private Extensions) SDES item.
   1.609 -	
   1.610 -	@param aPrefix The value identfying the RTCP SDES item.
   1.611 -	@param aValue The SDES item data.
   1.612 -
   1.613 -  	@return KErrTooBig if the length of the aValue and aPrefix combined is more 
   1.614 -	                   than KMaxSdesItemLength(=255)
   1.615 -			KErrNone if the operation is successful
   1.616 -	*/
   1.617 -	IMPORT_C TInt SetPRIVL(const TDesC8& aPrefix, const TDesC8& aValue);
   1.618 -
   1.619 -    
   1.620 -	/**
   1.621 -	@publishedPartner
   1.622 -	@released
   1.623 -	Sends an APP (Application Defined) RTCP Packet.
   1.624 -	
   1.625 -	The packet is sent immediately.
   1.626 -	
   1.627 -	If used with RTCP auto-send, the function disrupts the auto-send
   1.628 -	intervals. Note however that Symbian reserves the right to fix this.
   1.629 -	
   1.630 -	@param aApp A handle to a RTCP APP (Application Defined) packet,
   1.631 -	            for experimental extensions to RTCP.
   1.632 -	*/
   1.633 -	IMPORT_C void SendAPPL(const TDesC8& aName, const TDesC8& aAppData = KNullDesC8, TUint8 aSubType = 0);
   1.634 -
   1.635 -
   1.636 -	/**
   1.637 -	@publishedPartner
   1.638 -	@released
   1.639 -	
   1.640 -	Enables or disables the automatic sending of RTCP SR (Sender Report),
   1.641 -	RR (Receiver Report), and SDES (Source Description) packets.
   1.642 -	
   1.643 -	Note that if automatic sending is not enabled and RTCP sending is required,
   1.644 -	then explicit calls to SendRTCPPacketL() will be required.
   1.645 -	
   1.646 -	@param aAutoSend ETrue, if RTCP packets need to be send automatically
   1.647 -	                 EFalse otherwise.
   1.648 -	
   1.649 -	@see RRtpSession::SendRTCPPacketL()
   1.650 -	*/
   1.651 -	IMPORT_C void SetRTCPAutoSend(TBool aAutoSend);
   1.652 -
   1.653 -
   1.654 -	/** 
   1.655 -	@publishedPartner
   1.656 -	@released
   1.657 -	
   1.658 -	Gets the RTCP Auto Send status. 
   1.659 -
   1.660 -	@return True, if RTCP SR, RR and SDES packets are automatically sent,
   1.661 -	        false otherwise
   1.662 -	
   1.663 -	@see RRtpSession::SetRTCPAutoSend()
   1.664 -	*/
   1.665 -	IMPORT_C TBool RTCPAutoSend() const;
   1.666 -
   1.667 -	/** 
   1.668 -	@publishedPartner
   1.669 -	@released
   1.670 -	
   1.671 -	Sets the RTCP Auto Send interval.
   1.672 -	This disables the RFC based calculation of RTCP intervals.
   1.673 -	To re-enable auto calculation, set the interval to zero.
   1.674 -
   1.675 -  	@param aInterval Time interval after which an RTCP auto-send will take place
   1.676 -	*/
   1.677 -	IMPORT_C void SetRtcpInterval(TTimeIntervalMicroSeconds32& aInterval);
   1.678 -	
   1.679 -	/** 
   1.680 -	@publishedPartner
   1.681 -	@released	
   1.682 -	Enables Receive only option for rtp or rtcp
   1.683 -
   1.684 -	@param aRtpOrRtcp Takes the values from the enum TPacketType
   1.685 -
   1.686 -	@see RRtpSession::DontReceive()
   1.687 -	*/
   1.688 -	IMPORT_C void DontReceive(TInt aRtpOrRtcp);
   1.689 -	
   1.690 -	/** 
   1.691 -	@publishedPartner
   1.692 -	@released
   1.693 -    Sends an RTCP packet now. 
   1.694 -
   1.695 -	Calling this function doesn't make much sense if auto-send is
   1.696 -	on, as it will result in packets being sent at rather
   1.697 -	incoherent intervals.
   1.698 -
   1.699 -	@param aPacketType  Zero or more of the bit values defined by
   1.700 -	                    the TRtpSendPacketType enum. The packet sent will
   1.701 -	                    contain a SR (Sender Report) or RR (Receiver Report),
   1.702 -	                    depending on whether any packets have actually been
   1.703 -	                    sent, together with all SDES (Source Description) items
   1.704 -	                    specified by this parameter.
   1.705 -
   1.706 -    @see TRtpSendPacketType
   1.707 -	*/
   1.708 -	IMPORT_C void SendRTCPPacketL(TDesC8& aPacket);
   1.709 -
   1.710 -	
   1.711 -	/**
   1.712 -	@publishedPartner
   1.713 -	@released
   1.714 -	Creates a new send stream, and returns the send stream handle.
   1.715 -
   1.716 -	Only one send stream per session is permitted, which means that you must not
   1.717 -	call this function if the send stream has already been created.
   1.718 -
   1.719 -	As the send stream is an active object, it cannot handle request
   1.720 -	completion events until control returns to the active scheduler.
   1.721 -	Typically, clients will want to add event registrations before that.
   1.722 -
   1.723 -	The Code panics if the SendSource has alredy been opened.
   1.724 -
   1.725 -	@return The send stream handle.
   1.726 -
   1.727 -	This function may leave if memory is not enough.
   1.728 -	*/
   1.729 -	IMPORT_C RRtpSendSource NewSendSourceL(); 
   1.730 -
   1.731 -
   1.732 -	/**
   1.733 -	@publishedPartner
   1.734 -	@released
   1.735 -	
   1.736 -	Gets the handle to the send stream object associated with this session.
   1.737 -
   1.738 -	The send stream object is the one created in a previous call
   1.739 -	to NewSendSourceL(). If the send stream object has not been created, then
   1.740 -	the returned handle will refer to a closed send stream.
   1.741 -
   1.742 -    @return The handle to the send stream object.
   1.743 -    
   1.744 -    @see RRtpSendSource NewSendSourceL()
   1.745 -    */
   1.746 -	IMPORT_C RRtpSendSource SendSource(); 
   1.747 -
   1.748 -
   1.749 -    /**
   1.750 -	@publishedPartner
   1.751 -	@released
   1.752 -    
   1.753 -    Sets the number of sequential packets that must be received
   1.754 -	before a stream is considered good.
   1.755 -	
   1.756 -	Sets the maximum number of dropped packets to be considered a
   1.757 -	dropout, as opposed to an ended and restarted stream.
   1.758 -	
   1.759 -	Sets the maximum number of packets by which a packet can be delayed 
   1.760 -	before it is considered dropped.
   1.761 -			
   1.762 -	@param aMaxMisorder The maximum number of packets.
   1.763 -		
   1.764 -	@param aMaxDropout The number of sequential packets.
   1.765 -		
   1.766 -	@param aMinSequential The number of sequential packets.
   1.767 -	@post The session will be 'restarted', 
   1.768 -			i.e. it resets the sequence number sequence and resets all RTCP statistics.
   1.769 -	*/
   1.770 -	IMPORT_C void SetRtpStreamParameters(TInt aMinSequential, TInt aMaxMisorder, TInt aMaxDropout);
   1.771 -
   1.772 -	inline TBool operator == (RRtpSession aThat) const;
   1.773 -	inline TBool operator != (RRtpSession aThat) const;
   1.774 -
   1.775 -	/**
   1.776 -	@publishedPartner
   1.777 -	@released
   1.778 -
   1.779 -    The event manager contains a number of callback registrations, each of which 
   1.780 -	binds a function and pointer (normally an object) to a particular kind of
   1.781 -    event. Registrations can be bound to all events on a stream.
   1.782 -
   1.783 -	If a function is registered for a particular event, it will be called when 
   1.784 -	that event occurs. One callback function can be associated with more than 1
   1.785 -	callback registration. Callback functions take a pointer argument
   1.786 -	which was supplied as part of the registration
   1.787 -
   1.788 -    @param aType Event type
   1.789 -		
   1.790 -	@param aCallback Callback object
   1.791 -		
   1.792 -	@param aPtr Pointer to data that needs to be passed to the callback function
   1.793 -
   1.794 -  	@param aParameter Parameter to be passed to internal callback subsystem
   1.795 -	*/
   1.796 -	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
   1.797 -										  TRtpCallbackFunction aCallback, 
   1.798 -										  TAny* aPtr, 
   1.799 -										  TInt aParameter);
   1.800 -
   1.801 -	/**
   1.802 -	@publishedPartner
   1.803 -	@released
   1.804 -
   1.805 -    The event manager contains a number of callback registrations, each of which 
   1.806 -	binds a function and pointer (normally an object) to a particular kind of
   1.807 -    event. Registrations can be bound to all events on a stream.
   1.808 -
   1.809 -	If a function is registered for a particular event, it will be called when 
   1.810 -	that event occurs. One callback function can be associated with more than 1
   1.811 -	callback registration. Callback functions take a pointer argument
   1.812 -	which was supplied as part of the registration
   1.813 -
   1.814 -    @param aType Event type
   1.815 -		
   1.816 -	@param aCallback Callback object
   1.817 -		
   1.818 -	@param aPtr Pointer to data that needs to be passed to the callback function
   1.819 -	*/
   1.820 -	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
   1.821 -										  TRtpCallbackFunction aCallback, 
   1.822 -										  TAny* aPtr);
   1.823 -
   1.824 - private:
   1.825 -	friend class TRtpEvent;
   1.826 -	CRtpSession* iPtr;
   1.827 -	// Note: Comments that start with //\ are pseudo-variables used to get
   1.828 -	// Doxygen collaboration diagrams to look right. Ignore them.
   1.829 -	//\ RRtpSendSource sndSource_1_01;
   1.830 -	//\ RRtpReceiveSource rcvSource_1_n;
   1.831 -	//\ TRtpCallback callbacks_1_n;
   1.832 -	//\ TRtpEvent events_1_n;
   1.833 -	};
   1.834 -
   1.835 -
   1.836 -
   1.837 -
   1.838 -/**
   1.839 -@publishedAll
   1.840 -@released
   1.841 -
   1.842 -A handle to a send stream.
   1.843 -
   1.844 -Use this class to manage the creation and sending of packets. 
   1.845 -A session can have only one send stream.
   1.846 -
   1.847 -Only one packet can be sent at any one time.
   1.848 -Once a packet has been sent, the packet cannot be closed and no further packets
   1.849 -can be sent until an event signalling the completion of the send operation has
   1.850 -occurred. This will be one of the events defined by the enum values:
   1.851 -ERtpSendSucceeded and ERtpSendFail.
   1.852 -
   1.853 -A client must monitor these events so that it can schedule the sending of
   1.854 -subsequent packets.
   1.855 -It does this by implementing and registering callback functions that 
   1.856 -handle these events.
   1.857 -
   1.858 -@see TRtpEventType
   1.859 -*/
   1.860 -class RRtpSendSource
   1.861 -	{
   1.862 - public:
   1.863 -	inline RRtpSendSource();
   1.864 -	inline TBool IsOpen() const;
   1.865 -	IMPORT_C void Close();
   1.866 -
   1.867 -	IMPORT_C void Cancel();
   1.868 -    
   1.869 -	template <class T> inline void 
   1.870 -		RegisterEventCallbackL(TRtpEventType aType, 
   1.871 -							   void (*aCallback)(T*, const TRtpEvent&), 
   1.872 -							   T* aPtr, 
   1.873 -							   TRtpOneShotness aOneShot,
   1.874 -							   TInt aParameter)
   1.875 -	{
   1.876 -	PrivRegisterEventCallbackL(aType|aOneShot,
   1.877 -				reinterpret_cast<TRtpCallbackFunction>(aCallback),
   1.878 -				static_cast<TAny*>(aPtr), aParameter);
   1.879 -	}
   1.880 -
   1.881 -
   1.882 -	template <class T> inline void 
   1.883 -		RegisterEventCallbackL(TRtpEventType aType, 
   1.884 -							   void (*aCallback)(T*, const TRtpEvent&), 
   1.885 -							   T* aPtr, 
   1.886 -							   TRtpOneShotness aOneShot = ERtpNotOneShot)
   1.887 -	{
   1.888 -	PrivRegisterEventCallbackL(aType|aOneShot,
   1.889 -				reinterpret_cast<TRtpCallbackFunction>(aCallback),
   1.890 -				static_cast<TAny*>(aPtr));
   1.891 -	}
   1.892 -
   1.893 -
   1.894 -	
   1.895 -	IMPORT_C RRtpSendPacket NewSendPacketL(TInt aPayloadSize = 0, 
   1.896 -										   TInt aHeaderExtensionSize = 
   1.897 -										   KRtpNoExtension);
   1.898 -	
   1.899 -	IMPORT_C RRtpSendPacket NewSendPacketLC(TInt aPayloadSize = 0, 
   1.900 -											TInt aHeaderExtensionSize = 
   1.901 -											KRtpNoExtension);
   1.902 -
   1.903 -	IMPORT_C TBool IsSending();
   1.904 -	IMPORT_C void SetPayloadType(TUint aPayloadType);
   1.905 -	IMPORT_C void SetDefaultPayloadSize(TInt aPayloadSize);
   1.906 -	/**
   1.907 -	@publishedPartner
   1.908 -	@released
   1.909 -	
   1.910 -	Sends a Bye RTCP packet.
   1.911 -	
   1.912 -	@param aReason The reason for sending the Bye RTCP packet.
   1.913 -	*/
   1.914 -	IMPORT_C void ByeL(TDesC8& aReason);
   1.915 -	IMPORT_C TUint32 GetLocalSSRC();
   1.916 -
   1.917 -	IMPORT_C void SetAlignment(TInt aAlignment);
   1.918 -	IMPORT_C TInt Alignment() const;
   1.919 -
   1.920 -	inline TBool operator == (RRtpSendSource aThat) const;
   1.921 -	inline TBool operator != (RRtpSendSource aThat) const;
   1.922 -	
   1.923 -	/**
   1.924 -	@publishedPartner
   1.925 -	@released
   1.926 -
   1.927 -    The event manager contains a number of callback registrations, each of which 
   1.928 -	binds a function and pointer (normally an object) to a particular kind of
   1.929 -    event. Registrations can be bound to all events on a stream.
   1.930 -
   1.931 -	If a function is registered for a particular event, it will be called when 
   1.932 -	that event occurs. One callback function can be associated with more than 1
   1.933 -	callback registration. Callback functions take a pointer argument
   1.934 -	which was supplied as part of the registration
   1.935 -
   1.936 -    @param aType Event type
   1.937 -		
   1.938 -	@param aCallback Callback object
   1.939 -		
   1.940 -	@param aPtr Pointer to data that needs to be passed to the callback function
   1.941 -
   1.942 -  	@param aParameter Parameter to be passed to internal callback subsystem
   1.943 -	*/
   1.944 -	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
   1.945 -										  TRtpCallbackFunction aCallback, 
   1.946 -										  TAny* aPtr, 
   1.947 -										  TInt aParameter);
   1.948 -
   1.949 -	/**
   1.950 -	@publishedPartner
   1.951 -	@released
   1.952 -
   1.953 -    The event manager contains a number of callback registrations, each of which 
   1.954 -	binds a function and pointer (normally an object) to a particular kind of
   1.955 -    event. Registrations can be bound to all events on a stream.
   1.956 -
   1.957 -	If a function is registered for a particular event, it will be called when 
   1.958 -	that event occurs. One callback function can be associated with more than 1
   1.959 -	callback registration. Callback functions take a pointer argument
   1.960 -	which was supplied as part of the registration
   1.961 -
   1.962 -    @param aType Event type
   1.963 -		
   1.964 -	@param aCallback Callback object
   1.965 -		
   1.966 -	@param aPtr Pointer to data that needs to be passed to the callback function
   1.967 -	*/
   1.968 -	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
   1.969 -										  TRtpCallbackFunction aCallback, 
   1.970 -										  TAny* aPtr);
   1.971 - private:
   1.972 -	friend class RRtpSession;
   1.973 -	friend class TRtpEvent;
   1.974 -	CRtpSendSource* iPtr;
   1.975 -	// Note: Comments that start with //\ are pseudo-variables used to get
   1.976 -	// Doxygen collaboration diagrams to look right. Ignore them.
   1.977 -	//\ TRtpCallback callbacks_1_n;
   1.978 -	//\ TRtpEvent events_1_n;
   1.979 -	//\ TRtpSendPacket packets_1_n;
   1.980 -	};
   1.981 -
   1.982 -
   1.983 -
   1.984 -
   1.985 -/**
   1.986 -@publishedAll
   1.987 -@released
   1.988 -
   1.989 -A handle to a receive stream.
   1.990 -
   1.991 -An object of this type represents the stream of data on a single SSRC and
   1.992 -delivers the RTP packets and RTCP information in the order they
   1.993 -arrive.
   1.994 -
   1.995 -Note that RTP does not guarantee the order of delivery, which means that the 
   1.996 -client may want to buffer the data.
   1.997 -*/
   1.998 -class RRtpReceiveSource 
   1.999 -	{
  1.1000 - public:
  1.1001 -	RRtpReceiveSource();
  1.1002 -	inline TBool IsOpen() const;
  1.1003 -
  1.1004 -	IMPORT_C void Close();
  1.1005 -
  1.1006 -	
  1.1007 -	template <class T> inline void 
  1.1008 -		RegisterEventCallbackL(TRtpEventType aType, 
  1.1009 -							   void (*aCallback)(T*, const TRtpEvent&), 
  1.1010 -							   T* aPtr, 
  1.1011 -							   TRtpOneShotness aOneShot,
  1.1012 -							   TInt aParameter)
  1.1013 -	{
  1.1014 -	PrivRegisterEventCallbackL(aType|aOneShot, 
  1.1015 -			reinterpret_cast<TRtpCallbackFunction>(aCallback),
  1.1016 -			static_cast<TAny*>(aPtr), aParameter);
  1.1017 -	}
  1.1018 -
  1.1019 -
  1.1020 -	template <class T> inline void 
  1.1021 -		RegisterEventCallbackL(TRtpEventType aType, 
  1.1022 -							   void (*aCallback)(T*, const TRtpEvent&), 
  1.1023 -							   T* aPtr, 
  1.1024 -							   TRtpOneShotness aOneShot = ERtpNotOneShot)	
  1.1025 -	{
  1.1026 -	PrivRegisterEventCallbackL(aType|aOneShot, 
  1.1027 -				reinterpret_cast<TRtpCallbackFunction>(aCallback),
  1.1028 -				static_cast<TAny*>(aPtr));
  1.1029 -	}
  1.1030 -
  1.1031 -	/**
  1.1032 -	@publishedPartner
  1.1033 -	@released
  1.1034 -	
  1.1035 -	Gets the data associated with the specified RTCP SDES (Source Description)
  1.1036 -	item.
  1.1037 -
  1.1038 -	Note a that the PRIV (Private Extensions) SDES item is not supported
  1.1039 -	by this mechanism.
  1.1040 -
  1.1041 -	@param aType  The value identifying the RTCP SDES item.
  1.1042 -	
  1.1043 -	@return A descriptor reference to the SDES item data. 
  1.1044 -	*/
  1.1045 -	IMPORT_C TInt GetSDES(const TInt aType, TDes8& aValue);
  1.1046 -
  1.1047 -
  1.1048 -	/**
  1.1049 -	@publishedPartner
  1.1050 -	@released
  1.1051 -	
  1.1052 -	Gets the most recent SR ((Sender Report) from this SSRC.
  1.1053 - 
  1.1054 -    @return A handle to the SR.
  1.1055 -    */
  1.1056 -	IMPORT_C RRtcpSRPart GetSR();
  1.1057 -
  1.1058 -
  1.1059 -	/**
  1.1060 -	@publishedPartner
  1.1061 -	@released
  1.1062 -	
  1.1063 -	Gets the reason for a BYE packet.
  1.1064 -	
  1.1065 -	@return A descriptor contaning the BYE message. This is
  1.1066 -	        KNullDesC if the source has not sent a BYE packet.
  1.1067 -    */
  1.1068 -	IMPORT_C TDesC8& GetByeReason();
  1.1069 -
  1.1070 -
  1.1071 -	/**
  1.1072 -	@publishedPartner
  1.1073 -	@released
  1.1074 -	
  1.1075 -	Parameters from the last APP (Application Defined) packet.
  1.1076 -
  1.1077 -  	@param aName  Four-bytes application name
  1.1078 -	@param aAppData  Applciation specific data
  1.1079 -	@param aSubType  Application defined sub-type of the APP packet
  1.1080 -	*/
  1.1081 -	IMPORT_C void GetLastApp(TPtrC8& aName, TPtrC8& aAppData, TUint& aSubType);
  1.1082 -
  1.1083 -	IMPORT_C RRtpReceivePacket Packet();
  1.1084 -
  1.1085 -	/**
  1.1086 -	@publishedPartner
  1.1087 -	@released
  1.1088 -	
  1.1089 -	Gets the SSRC of the remote end
  1.1090 -
  1.1091 -	@return The SSRC of the remote end
  1.1092 -	*/
  1.1093 -	IMPORT_C TUint SSRC() const;
  1.1094 -
  1.1095 -	inline TBool operator == (RRtpReceiveSource aThat) const;
  1.1096 -	inline TBool operator != (RRtpReceiveSource aThat) const;
  1.1097 -
  1.1098 -	/**
  1.1099 -	@publishedPartner
  1.1100 -	@released
  1.1101 -
  1.1102 -    The event manager contains a number of callback registrations, each of which 
  1.1103 -	binds a function and pointer (normally an object) to a particular kind of
  1.1104 -    event. Registrations can be bound to all events on a stream.
  1.1105 -
  1.1106 -	If a function is registered for a particular event, it will be called when 
  1.1107 -	that event occurs. One callback function can be associated with more than 1
  1.1108 -	callback registration. Callback functions take a pointer argument
  1.1109 -	which was supplied as part of the registration
  1.1110 -
  1.1111 -    @param aType Event type
  1.1112 -		
  1.1113 -	@param aCallback Callback object
  1.1114 -		
  1.1115 -	@param aPtr Pointer to data that needs to be passed to the callback function
  1.1116 -
  1.1117 -  	@param aParameter Parameter to be passed to internal callback subsystem
  1.1118 -	*/
  1.1119 -	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
  1.1120 -										  TRtpCallbackFunction aCallback, 
  1.1121 -										  TAny* aPtr, TInt aParameter);
  1.1122 -
  1.1123 -	/**
  1.1124 -	@publishedPartner
  1.1125 -	@released
  1.1126 -
  1.1127 -    The event manager contains a number of callback registrations, each of which 
  1.1128 -	binds a function and pointer (normally an object) to a particular kind of
  1.1129 -    event. Registrations can be bound to all events on a stream.
  1.1130 -
  1.1131 -	If a function is registered for a particular event, it will be called when 
  1.1132 -	that event occurs. One callback function can be associated with more than 1
  1.1133 -	callback registration. Callback functions take a pointer argument
  1.1134 -	which was supplied as part of the registration
  1.1135 -
  1.1136 -    @param aType Event type
  1.1137 -		
  1.1138 -	@param aCallback Callback object
  1.1139 -		
  1.1140 -	@param aPtr Pointer to data that needs to be passed to the callback function
  1.1141 -	*/
  1.1142 -
  1.1143 -	IMPORT_C void PrivRegisterEventCallbackL(TUint aType, 
  1.1144 -										  TRtpCallbackFunction aCallback, 
  1.1145 -										  TAny* aPtr);
  1.1146 - private:
  1.1147 -	friend class RRtpSession;
  1.1148 -	friend class TRtpEvent;
  1.1149 -	CRtpReceiveSource* iPtr;
  1.1150 -	// Note: Comments that start with //\ are pseudo-variables used to get
  1.1151 -	// Doxygen collaboration diagrams to look right. Ignore them.
  1.1152 -	//\ TRtpCallback callbacks_1_n;
  1.1153 -	//\ TRtpEvent events_1_n;
  1.1154 -	//\ TRtpReceivePacket packets_1_n;
  1.1155 -	};
  1.1156 -
  1.1157 -
  1.1158 -
  1.1159 -
  1.1160 -/**
  1.1161 -@publishedAll
  1.1162 -@released
  1.1163 -
  1.1164 -A handle to an RTP packet.
  1.1165 -
  1.1166 -The packet is accessed through the interface provided by this handle.
  1.1167 -*/
  1.1168 -class RRtpPacket
  1.1169 -	{
  1.1170 - public:
  1.1171 -	inline RRtpPacket();
  1.1172 -	inline TBool IsOpen() const;
  1.1173 -
  1.1174 -	IMPORT_C void Close();
  1.1175 -	IMPORT_C TPtrC8 Payload() const;
  1.1176 -	IMPORT_C TUint SequenceNumber() const;
  1.1177 -	IMPORT_C TUint Timestamp() const;
  1.1178 -	IMPORT_C TUint SSRC() const;
  1.1179 -	IMPORT_C RRtpCSRCs CSRCs() const;
  1.1180 -	IMPORT_C TBool ExtensionPresent() const;
  1.1181 -	IMPORT_C RRtpHeaderExtension Extension() const; 
  1.1182 -	IMPORT_C TBool Marker() const;
  1.1183 -	IMPORT_C TUint PayloadType() const;
  1.1184 -	IMPORT_C TUint Flags() const;
  1.1185 -
  1.1186 -	inline TBool operator == (RRtpPacket aThat) const;
  1.1187 -	inline TBool operator != (RRtpPacket aThat) const;
  1.1188 -
  1.1189 - protected:
  1.1190 -	TRtpPacket* iPtr;
  1.1191 -	// Note: Comments that start with //\ are pseudo-variables used to get
  1.1192 -	// Doxygen collaboration diagrams to look right. Ignore them.
  1.1193 -	//\ RRtpHeaderExtension extension_1_01;
  1.1194 -	//\ RRtpCSRCs csrcs_1_01;
  1.1195 -	};
  1.1196 -
  1.1197 -
  1.1198 -
  1.1199 -
  1.1200 -/**
  1.1201 -@publishedAll
  1.1202 -@released
  1.1203 -
  1.1204 -A handle to an RTP packet to be sent (an RTP send packet).
  1.1205 -
  1.1206 -@see RRtpSendSource
  1.1207 -*/
  1.1208 -class RRtpSendPacket : public RRtpPacket
  1.1209 -	{
  1.1210 - public:
  1.1211 -	IMPORT_C void Send();
  1.1212 -	IMPORT_C TDes8& WritePayload();
  1.1213 -	IMPORT_C void SetTimestamp(TUint aTimestamp);
  1.1214 -	IMPORT_C void SetMarker(TBool aMark);
  1.1215 -	IMPORT_C void SetPayloadType(TUint aPayloadType);
  1.1216 -	IMPORT_C void SetFlags(TUint aFlags);
  1.1217 -
  1.1218 -	friend class RRtpSendSource;
  1.1219 -	};
  1.1220 -
  1.1221 -
  1.1222 -
  1.1223 -
  1.1224 -/**
  1.1225 -@publishedAll
  1.1226 -@released
  1.1227 -
  1.1228 -A handle to an RTP packet received from another source.
  1.1229 -*/
  1.1230 -class RRtpReceivePacket : public RRtpPacket
  1.1231 -	{
  1.1232 -	friend class RRtpReceiveSource;
  1.1233 -	friend class TRtpReceivePacket;
  1.1234 -	};
  1.1235 -
  1.1236 -
  1.1237 -
  1.1238 -
  1.1239 -/**
  1.1240 -@publishedAll
  1.1241 -@released
  1.1242 -
  1.1243 -An RTP event.
  1.1244 -
  1.1245 -An event is generated when anything happens that a client might want
  1.1246 -to know about. The class encapulates two pieces of information:
  1.1247 -1. An event type as defined by a TRtpEventType value.
  1.1248 -2. Additional information whose meaning is dependent on the event type.
  1.1249 -
  1.1250 -Additional information may be implicitly associated with the event, but still
  1.1251 -needs to be fetched from another object, for example, when processing
  1.1252 -an ERtpPacketReceived event, the packet (represented by a RRtpReceivePacket
  1.1253 -handle) must be obtained from the receive stream (represented by a
  1.1254 -RRtpReceiveStream handle).
  1.1255 -
  1.1256 -Events are always associated with either an RTP session, a send stream or
  1.1257 -a receive stream, and this class has functions for getting the corresponding
  1.1258 -handle.
  1.1259 -
  1.1260 -@see RRtpSession
  1.1261 -@see RRtpSendSource
  1.1262 -@see RRtpReceiveSource
  1.1263 -*/
  1.1264 -class TRtpEvent
  1.1265 -	{
  1.1266 - public:
  1.1267 -	IMPORT_C TRtpEvent(TRtpEventType aType, TInt aStatus, TAny* aData);
  1.1268 -	IMPORT_C RRtpSession Session() const;
  1.1269 -	IMPORT_C RRtpSendSource SendSource() const;
  1.1270 -	IMPORT_C RRtpReceiveSource ReceiveSource() const;
  1.1271 -	IMPORT_C TBool IsSessionEvent() const;
  1.1272 -	IMPORT_C TBool IsSendSourceEvent() const;
  1.1273 -	IMPORT_C TBool IsReceiveSourceEvent() const;
  1.1274 -        
  1.1275 -	inline TRtpEventType Type() const;
  1.1276 -	inline TInt Status() const;
  1.1277 - private:
  1.1278 -	TRtpEventType iType;
  1.1279 -	TInt iStatus;
  1.1280 -	TAny* iData;
  1.1281 -	};
  1.1282 -
  1.1283 -
  1.1284 -
  1.1285 -
  1.1286 -/**
  1.1287 -@publishedAll
  1.1288 -@released
  1.1289 -
  1.1290 -Reresents an RTP packet's header extension.
  1.1291 -
  1.1292 -The format of a header extension is profile-defined.
  1.1293 -*/
  1.1294 -class RRtpHeaderExtension
  1.1295 -	{
  1.1296 - public:
  1.1297 -	IMPORT_C TUint16 Type() const;
  1.1298 -	IMPORT_C void SetType(TUint16 aType);
  1.1299 -	IMPORT_C TPtrC8 Data();
  1.1300 - private:
  1.1301 -	friend class RRtpPacket;
  1.1302 -	TRtpPacket* iPtr;
  1.1303 -	};
  1.1304 -
  1.1305 -
  1.1306 -
  1.1307 -
  1.1308 -/**
  1.1309 -@publishedAll
  1.1310 -@released
  1.1311 -
  1.1312 -A handle representing the list of CSRCs in an RTP packet.
  1.1313 -*/
  1.1314 -class RRtpCSRCs
  1.1315 -	{
  1.1316 - public:
  1.1317 -	IMPORT_C TInt Count() const;
  1.1318 -	IMPORT_C TUint operator [](TUint aIndex) const;
  1.1319 - private:
  1.1320 -	friend class RRtpPacket;
  1.1321 -	
  1.1322 -	TRtpPacket* iPtr;
  1.1323 -	};
  1.1324 -
  1.1325 -
  1.1326 -/**
  1.1327 -@publishedPartner
  1.1328 -
  1.1329 -A set of panic codes.
  1.1330 -
  1.1331 -in release mode, different panic codes, such as
  1.1332 -KERN-EXEC 3 may be generated instead.
  1.1333 -*/
  1.1334 -enum TRtpPanicCode
  1.1335 -	{
  1.1336 -	ERtpPacketIsClosed = 1, 
  1.1337 -	ERtpPayloadTypeOutOfRange = 2,
  1.1338 -	ERtpSessionIsClosed = 3,
  1.1339 -	ERtpSourceIsClosed = 4,
  1.1340 -	ERtpNoExtension = 5,
  1.1341 -	ERtpLeaveInResponseToError = 6,
  1.1342 -	ERtpCantSend2PacketsAtOnce = 7,
  1.1343 -	ERtpWrongEventType = 8,
  1.1344 -	ERtpWrongParameter = 9,
  1.1345 -	ERtpSendSourceAlreadyOpen = 10,
  1.1346 -	ERtpSessionAlreadyOpen = 11,
  1.1347 -	//
  1.1348 -	ERtpCoreController = 100,
  1.1349 -	};
  1.1350 -
  1.1351 -GLREF_C void Panic(TRtpPanicCode aPanicCode);
  1.1352 -
  1.1353 -#include "rtp.inl"
  1.1354 -
  1.1355 -#endif // RTP_H