Added explicit SSRC init flag so a value of zero becomes valid.
git-svn-id: http://voip.null.ro/svn/yate@1033 acf43c95-373e-0410-b603-e72c3f656dc1
This commit is contained in:
parent
18ef27f883
commit
8cd82ec311
|
@ -104,7 +104,8 @@ void RTPReceiver::rtpData(const void* data, int len)
|
|||
((u_int32_t)pc[10] << 8) | pc[11];
|
||||
|
||||
// grab some data at the first packet received or resync
|
||||
if (!m_ssrc) {
|
||||
if (m_ssrcInit) {
|
||||
m_ssrcInit = false;
|
||||
m_ssrc = ss;
|
||||
m_ts = ts - m_tsLast;
|
||||
m_seq = seq-1;
|
||||
|
@ -276,8 +277,10 @@ bool RTPSender::rtpSend(bool marker, int payload, unsigned int timestamp, const
|
|||
payload |= 0x80;
|
||||
m_tsLast = timestamp;
|
||||
timestamp += m_ts;
|
||||
if (!m_ssrc)
|
||||
if (m_ssrcInit) {
|
||||
m_ssrcInit = false;
|
||||
m_ssrc = ::random();
|
||||
}
|
||||
m_seq++;
|
||||
|
||||
DataBlock buf(0,len+12);
|
||||
|
|
|
@ -334,7 +334,7 @@ public:
|
|||
* Default constructor.
|
||||
*/
|
||||
inline RTPBaseIO(RTPSession* session = 0)
|
||||
: m_session(session), m_ssrc(0), m_ts(0), m_seq(0),
|
||||
: m_session(session), m_ssrcInit(true), m_ssrc(0), m_ts(0), m_seq(0),
|
||||
m_evTs(0), m_evNum(-1), m_evVol(-1),
|
||||
m_dataType(-1), m_eventType(-1), m_silenceType(-1)
|
||||
{ }
|
||||
|
@ -389,22 +389,22 @@ public:
|
|||
bool silencePayload(int type);
|
||||
|
||||
/**
|
||||
* Reset the SSRC requesting generation/grabbing of a new one
|
||||
* Requesting generation/grabbing of a new SSRC
|
||||
*/
|
||||
inline void reset()
|
||||
{ m_ssrc = 0; }
|
||||
{ m_ssrcInit = true; }
|
||||
|
||||
/**
|
||||
* Get the value of the current SSRC, zero if not initialized yet
|
||||
*/
|
||||
inline unsigned int ssrc() const
|
||||
{ return m_ssrc; }
|
||||
{ return m_ssrcInit ? 0 : m_ssrc; }
|
||||
|
||||
/**
|
||||
* Force a new known SSRC for all further packets
|
||||
*/
|
||||
inline void ssrc(unsigned int src)
|
||||
{ m_ssrc = src; }
|
||||
{ m_ssrc = src; m_ssrcInit = false; }
|
||||
|
||||
protected:
|
||||
/**
|
||||
|
@ -414,6 +414,7 @@ protected:
|
|||
virtual void timerTick(const Time& when) = 0;
|
||||
|
||||
RTPSession* m_session;
|
||||
bool m_ssrcInit;
|
||||
u_int32_t m_ssrc;
|
||||
u_int32_t m_ts;
|
||||
u_int16_t m_seq;
|
||||
|
|
Loading…
Reference in New Issue