1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-06-03 14:34:57 -04:00

qrtplib: fixed urandom calls

This commit is contained in:
f4exb
2018-03-29 19:55:03 +02:00
parent 75201ad303
commit b244222667
7 changed files with 128 additions and 50 deletions
+32 -9
View File
@@ -41,9 +41,27 @@ namespace qrtplib
{
RTPPacketBuilder::RTPPacketBuilder(RTPRandom &r) :
rtprnd(r), lastwallclocktime(0, 0)
rtprnd(r),
maxpacksize(0),
buffer(0),
packetlength(0),
lastwallclocktime(0, 0)
{
init = false;
deftsset = false;
defptset = false;
defmarkset = false;
defaultmark = false;
defaulttimestampinc = 0;
ssrc = 0;
timestamp = 0;
seqnr = 0;
prevrtptimestamp = 0;
lastrtptimestamp = 0;
defaultpayloadtype = 0;
numcsrcs = 0;
numpayloadbytes = 0;
numpackets = 0;
timeinit.Dummy();
//std::cout << (void *)(&rtprnd) << std::endl;
@@ -54,7 +72,7 @@ RTPPacketBuilder::~RTPPacketBuilder()
Destroy();
}
int RTPPacketBuilder::Init(std::size_t max)
int RTPPacketBuilder::Init(unsigned int max)
{
if (init)
return ERR_RTP_PACKBUILD_ALREADYINIT;
@@ -66,6 +84,7 @@ int RTPPacketBuilder::Init(std::size_t max)
if (buffer == 0)
return ERR_RTP_OUTOFMEM;
packetlength = 0;
numpackets = 0;
CreateNewSSRC();
@@ -87,7 +106,7 @@ void RTPPacketBuilder::Destroy()
init = false;
}
int RTPPacketBuilder::SetMaximumPacketSize(std::size_t max)
int RTPPacketBuilder::SetMaximumPacketSize(unsigned int max)
{
uint8_t *newbuf;
@@ -161,6 +180,8 @@ uint32_t RTPPacketBuilder::CreateNewSSRC()
timestamp = rtprnd.GetRandom32();
seqnr = rtprnd.GetRandom16();
qDebug("RTPPacketBuilder::CreateNewSSRC: timestamp: %u", timestamp);
// p 38: the count SHOULD be reset if the sender changes its SSRC identifier
numpayloadbytes = 0;
numpackets = 0;
@@ -186,7 +207,7 @@ uint32_t RTPPacketBuilder::CreateNewSSRC(RTPSources &sources)
return ssrc;
}
int RTPPacketBuilder::BuildPacket(const void *data, std::size_t len)
int RTPPacketBuilder::BuildPacket(const void *data, unsigned int len)
{
if (!init)
return ERR_RTP_PACKBUILD_NOTINIT;
@@ -199,14 +220,14 @@ int RTPPacketBuilder::BuildPacket(const void *data, std::size_t len)
return PrivateBuildPacket(data, len, defaultpayloadtype, defaultmark, defaulttimestampinc, false);
}
int RTPPacketBuilder::BuildPacket(const void *data, std::size_t len, uint8_t pt, bool mark, uint32_t timestampinc)
int RTPPacketBuilder::BuildPacket(const void *data, unsigned int len, uint8_t pt, bool mark, uint32_t timestampinc)
{
if (!init)
return ERR_RTP_PACKBUILD_NOTINIT;
return PrivateBuildPacket(data, len, pt, mark, timestampinc, false);
}
int RTPPacketBuilder::BuildPacketEx(const void *data, std::size_t len, uint16_t hdrextID, const void *hdrextdata, std::size_t numhdrextwords)
int RTPPacketBuilder::BuildPacketEx(const void *data, unsigned int len, uint16_t hdrextID, const void *hdrextdata, unsigned int numhdrextwords)
{
if (!init)
return ERR_RTP_PACKBUILD_NOTINIT;
@@ -219,7 +240,7 @@ int RTPPacketBuilder::BuildPacketEx(const void *data, std::size_t len, uint16_t
return PrivateBuildPacket(data, len, defaultpayloadtype, defaultmark, defaulttimestampinc, true, hdrextID, hdrextdata, numhdrextwords);
}
int RTPPacketBuilder::BuildPacketEx(const void *data, std::size_t len, uint8_t pt, bool mark, uint32_t timestampinc, uint16_t hdrextID, const void *hdrextdata, std::size_t numhdrextwords)
int RTPPacketBuilder::BuildPacketEx(const void *data, unsigned int len, uint8_t pt, bool mark, uint32_t timestampinc, uint16_t hdrextID, const void *hdrextdata, unsigned int numhdrextwords)
{
if (!init)
return ERR_RTP_PACKBUILD_NOTINIT;
@@ -227,8 +248,8 @@ int RTPPacketBuilder::BuildPacketEx(const void *data, std::size_t len, uint8_t p
}
int RTPPacketBuilder::PrivateBuildPacket(const void *data, std::size_t len, uint8_t pt, bool mark, uint32_t timestampinc, bool gotextension, uint16_t hdrextID, const void *hdrextdata,
std::size_t numhdrextwords)
int RTPPacketBuilder::PrivateBuildPacket(const void *data, unsigned int len, uint8_t pt, bool mark, uint32_t timestampinc, bool gotextension, uint16_t hdrextID, const void *hdrextdata,
unsigned int numhdrextwords)
{
RTPPacket p(pt, data, len, seqnr, timestamp, ssrc, mark, numcsrcs, csrcs, gotextension, hdrextID, (uint16_t) numhdrextwords, hdrextdata, buffer, maxpacksize);
int status = p.GetCreationError();
@@ -255,6 +276,8 @@ int RTPPacketBuilder::PrivateBuildPacket(const void *data, std::size_t len, uint
timestamp += timestampinc;
seqnr++;
//qDebug("RTPPacketBuilder::PrivateBuildPacket: numpackets: %u timestamp: %u timestampinc: %u seqnr: %u", numpackets, timestamp, timestampinc, seqnr);
return 0;
}