#include <ioqueue.h>
Inheritance diagram for RTPDataQueue:
Public Types | |
enum | Tos { tosBestEffort, tosEnhanced } |
rtp.h cc++/rtp.h Type of network service the application uses. More... | |
Public Member Functions | |
void | setTypeOfService (Tos tos) |
Specify the kind of service the application expects to use. | |
void | enableStack () |
Enable packet queue processing in the stack. | |
void | disableStack () |
Disable packet queue processing in the stack. | |
bool | isActive () const |
Get active connection state flag. | |
uint32 | getCurrentTimestamp () const |
Get the timestamp that should be given for a packet whose payload sampling instant corresponds to the current system time. | |
void | setSessionBandwidth (uint32 bw) |
Specify the bandwidth of the current session. | |
uint32 | getDefaultSessionBandwidth () const |
uint32 | getSessionBandwidth () const |
void | setTimeclock () |
Set the packet timeclock for synchronizing timestamps. | |
timeout_t | getTimeclock () const |
Get the packet timeclock for synchronizing timestamps. | |
Protected Member Functions | |
RTPDataQueue (uint32 size=defaultMembersHashSize) | |
Constructor. | |
RTPDataQueue (uint32 *ssrc, uint32 size=defaultMembersHashSize) | |
Using this constructor you can start a session with the given ssrc, instead of the usual randomly generated one. | |
virtual | ~RTPDataQueue () |
The queue destructor flushes the queue and stops all services. | |
virtual void | timerTick () |
A plugin point for timer tick driven events. | |
void | renewLocalSSRC () |
void | endQueue () |
This method ends the queue. | |
virtual bool | isPendingData (microtimeout_t timeout)=0 |
This function is used to check for and schedule against arriving packets based on the derived connection type. |
The queue manages both incoming and outgoing RTP packets, as well as synchronization and transmission/reception timers. By making the queue handler a seperate base class it becomes possible to define RTP classes for RTP profiles and sessions of different types.
Outgoing packets are sent via the OutgoingDataQueue::putData method.
Incoming packets can be retrieved via IncomingDataQueue::getData method.
|
rtp.h cc++/rtp.h Type of network service the application uses. If the application uses enhanced network service, for instance Integrated Services or Differentiated Services, it has not to ensure fair competition with TCP, provided that the requested service is actually being delivered. Whenever the application uses best-effort service or the requested enhanced service is not actually being delivered, it has to ensure fair competition with TCP. By default, best-effot is assumed.
|
|
Constructor. This will generate a random application SSRC identifier.
|
|
Using this constructor you can start a session with the given ssrc, instead of the usual randomly generated one. This is necessary when you need to initiate several sessions having the same SSRC identifier, for instance, to implement layered encoding, in which case each layer is managed through a different session but all sessions share the same SSRC identifier.
|
|
The queue destructor flushes the queue and stops all services.
|
|
Disable packet queue processing in the stack.
|
|
Enable packet queue processing in the stack. This method will not any thread of execution. |
|
This method ends the queue.
|
|
Get the timestamp that should be given for a packet whose payload sampling instant corresponds to the current system time. The timestamp applications should provide for each packet represents the sampling instant of its payload and should not be a reading of the system clock. Nevertheless, the internal operation of the RTP stack relies on the accuracy of the provided timestamp, since several computations assume that there is a certain degree of correspondence between the timestamp and the system clock. It is recommended that applications use this method in order to periodically adjust the RTP timestamp. In particular, it is advisable getting the timestamp corresponding to the first sampling instant or any instant after a period of inactivity through a call to this method. Applications should use the nominal sampling or any other value provided by the coder in order to compute the next timestamps with minimum computational requirement. For instance, an application using an RTP profile that specifies a fixed sampling rate of 8 Khz with eight bits per sample, continuously transmitting audio blocks 80 octets long, would transmit 100 packets every second. Every packet would carry a timestamp 80 units greater than the previous one. So, the first timestamp would be obtained from this method, whereas the following ones would be computed adding 80 every time. Also the timestamp should be increased for every block whether it is put in the queue or dropped. The aforementioned increment can be obtained from the RTPDataQueue::getTimestampIncrement() method rather than computing it by hand in the application.
|
|
|
|
|
|
Get the packet timeclock for synchronizing timestamps.
|
|
Get active connection state flag.
|
|
This function is used to check for and schedule against arriving packets based on the derived connection type.
Implemented in RTPDuplex. |
|
Reimplemented from IncomingDataQueue. |
|
Specify the bandwidth of the current session.
|
|
Set the packet timeclock for synchronizing timestamps.
|
|
Specify the kind of service the application expects to use.
|
|
A plugin point for timer tick driven events.
|