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:
paulc 2006-09-13 22:31:01 +00:00
parent 18ef27f883
commit 8cd82ec311
2 changed files with 11 additions and 7 deletions

View File

@ -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);

View File

@ -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;