1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/epoc32/include/mw/rtp.h Wed Mar 31 12:27:01 2010 +0100
1.3 @@ -0,0 +1,1352 @@
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