1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2025-02-03 09:44:01 -05:00

qrtplib: removed mutex macros

This commit is contained in:
f4exb 2018-02-28 00:19:19 +01:00
parent 83cf128dc0
commit 493b37c37c
4 changed files with 2626 additions and 2913 deletions

View File

@ -42,11 +42,6 @@
#include <iostream> #include <iostream>
#define MAINMUTEX_LOCK
#define MAINMUTEX_UNLOCK
#define WAITMUTEX_LOCK
#define WAITMUTEX_UNLOCK
namespace qrtplib namespace qrtplib
{ {
@ -82,11 +77,8 @@ int RTPExternalTransmitter::Create(size_t maximumpacketsize, const RTPTransmissi
if (!init) if (!init)
return ERR_RTP_EXTERNALTRANS_NOTINIT; return ERR_RTP_EXTERNALTRANS_NOTINIT;
MAINMUTEX_LOCK
if (created) if (created)
{ {
MAINMUTEX_UNLOCK
return ERR_RTP_EXTERNALTRANS_ALREADYCREATED; return ERR_RTP_EXTERNALTRANS_ALREADYCREATED;
} }
@ -94,12 +86,10 @@ int RTPExternalTransmitter::Create(size_t maximumpacketsize, const RTPTransmissi
if (transparams == 0) if (transparams == 0)
{ {
MAINMUTEX_UNLOCK
return ERR_RTP_EXTERNALTRANS_ILLEGALPARAMETERS; return ERR_RTP_EXTERNALTRANS_ILLEGALPARAMETERS;
} }
if (transparams->GetTransmissionProtocol() != RTPTransmitter::ExternalProto) if (transparams->GetTransmissionProtocol() != RTPTransmitter::ExternalProto)
{ {
MAINMUTEX_UNLOCK
return ERR_RTP_EXTERNALTRANS_ILLEGALPARAMETERS; return ERR_RTP_EXTERNALTRANS_ILLEGALPARAMETERS;
} }
@ -107,7 +97,6 @@ int RTPExternalTransmitter::Create(size_t maximumpacketsize, const RTPTransmissi
if ((status = m_abortDesc.Init()) < 0) if ((status = m_abortDesc.Init()) < 0)
{ {
MAINMUTEX_UNLOCK
return status; return status;
} }
m_abortCount = 0; m_abortCount = 0;
@ -121,7 +110,6 @@ int RTPExternalTransmitter::Create(size_t maximumpacketsize, const RTPTransmissi
waitingfordata = false; waitingfordata = false;
created = true; created = true;
MAINMUTEX_UNLOCK
return 0; return 0;
} }
@ -130,10 +118,8 @@ void RTPExternalTransmitter::Destroy()
if (!init) if (!init)
return; return;
MAINMUTEX_LOCK
if (!created) if (!created)
{ {
MAINMUTEX_UNLOCK;
return; return;
} }
@ -152,262 +138,223 @@ void RTPExternalTransmitter::Destroy()
m_abortDesc.SendAbortSignal(); m_abortDesc.SendAbortSignal();
m_abortCount++; m_abortCount++;
m_abortDesc.Destroy(); m_abortDesc.Destroy();
MAINMUTEX_UNLOCK // to make sure that the WaitForIncomingData function ended
WAITMUTEX_LOCK // to make sure that the WaitForIncomingData function ended
WAITMUTEX_UNLOCK }
} else
else m_abortDesc.Destroy();
m_abortDesc.Destroy();
MAINMUTEX_UNLOCK
} }
RTPTransmissionInfo *RTPExternalTransmitter::GetTransmissionInfo() RTPTransmissionInfo *RTPExternalTransmitter::GetTransmissionInfo()
{ {
if (!init) if (!init)
return 0; return 0;
MAINMUTEX_LOCK RTPTransmissionInfo *tinf = new RTPExternalTransmissionInfo(&packetinjector);
RTPTransmissionInfo *tinf = new RTPExternalTransmissionInfo(&packetinjector); return tinf;
MAINMUTEX_UNLOCK
return tinf;
} }
void RTPExternalTransmitter::DeleteTransmissionInfo(RTPTransmissionInfo *i) void RTPExternalTransmitter::DeleteTransmissionInfo(RTPTransmissionInfo *i)
{ {
if (!init) if (!init)
return; return;
delete i; delete i;
} }
int RTPExternalTransmitter::GetLocalHostName(uint8_t *buffer, size_t *bufferlength) int RTPExternalTransmitter::GetLocalHostName(uint8_t *buffer, size_t *bufferlength)
{ {
if (!init) if (!init)
return ERR_RTP_EXTERNALTRANS_NOTINIT; return ERR_RTP_EXTERNALTRANS_NOTINIT;
MAINMUTEX_LOCK if (!created)
if (!created) {
{ return ERR_RTP_EXTERNALTRANS_NOTCREATED;
MAINMUTEX_UNLOCK }
return ERR_RTP_EXTERNALTRANS_NOTCREATED;
}
if (localhostname == 0) if (localhostname == 0)
{ {
// We'll just use 'gethostname' for simplicity // We'll just use 'gethostname' for simplicity
char name[1024]; char name[1024];
if (gethostname(name, 1023) != 0) if (gethostname(name, 1023) != 0)
strcpy(name, "localhost"); // failsafe strcpy(name, "localhost"); // failsafe
else else
name[1023] = 0; // ensure null-termination name[1023] = 0; // ensure null-termination
localhostnamelength = strlen(name); localhostnamelength = strlen(name);
localhostname = new uint8_t[localhostnamelength + 1]; localhostname = new uint8_t[localhostnamelength + 1];
memcpy(localhostname, name, localhostnamelength); memcpy(localhostname, name, localhostnamelength);
localhostname[localhostnamelength] = 0; localhostname[localhostnamelength] = 0;
} }
if ((*bufferlength) < localhostnamelength) if ((*bufferlength) < localhostnamelength)
{ {
*bufferlength = localhostnamelength; // tell the application the required size of the buffer *bufferlength = localhostnamelength; // tell the application the required size of the buffer
MAINMUTEX_UNLOCK return ERR_RTP_TRANS_BUFFERLENGTHTOOSMALL;
return ERR_RTP_TRANS_BUFFERLENGTHTOOSMALL; }
}
memcpy(buffer, localhostname, localhostnamelength); memcpy(buffer, localhostname, localhostnamelength);
*bufferlength = localhostnamelength; *bufferlength = localhostnamelength;
MAINMUTEX_UNLOCK return 0;
return 0;
} }
bool RTPExternalTransmitter::ComesFromThisTransmitter(const RTPAddress *addr) bool RTPExternalTransmitter::ComesFromThisTransmitter(const RTPAddress *addr)
{ {
MAINMUTEX_LOCK
bool value = false; bool value = false;
if (sender) if (sender)
value = sender->ComesFromThisSender(addr); value = sender->ComesFromThisSender(addr);
MAINMUTEX_UNLOCK return value;
return value;
} }
int RTPExternalTransmitter::Poll() int RTPExternalTransmitter::Poll()
{ {
return 0; return 0;
} }
int RTPExternalTransmitter::WaitForIncomingData(const RTPTime &delay, bool *dataavailable) int RTPExternalTransmitter::WaitForIncomingData(const RTPTime &delay, bool *dataavailable)
{ {
if (!init) if (!init)
return ERR_RTP_EXTERNALTRANS_NOTINIT; return ERR_RTP_EXTERNALTRANS_NOTINIT;
MAINMUTEX_LOCK if (!created)
{
return ERR_RTP_EXTERNALTRANS_NOTCREATED;
}
if (waitingfordata)
{
return ERR_RTP_EXTERNALTRANS_ALREADYWAITING;
}
if (!created) waitingfordata = true;
{
MAINMUTEX_UNLOCK
return ERR_RTP_EXTERNALTRANS_NOTCREATED;
}
if (waitingfordata)
{
MAINMUTEX_UNLOCK
return ERR_RTP_EXTERNALTRANS_ALREADYWAITING;
}
waitingfordata = true; if (!rawpacketlist.empty())
{
if (dataavailable != 0)
*dataavailable = true;
waitingfordata = false;
return 0;
}
if (!rawpacketlist.empty()) int8_t isset = 0;
{ SocketType abortSock = m_abortDesc.GetAbortSocket();
if (dataavailable != 0) int status = RTPSelect(&abortSock, &isset, 1, delay);
*dataavailable = true; if (status < 0)
waitingfordata = false; {
MAINMUTEX_UNLOCK
return 0;
}
WAITMUTEX_LOCK waitingfordata = false;
MAINMUTEX_UNLOCK
int8_t isset = 0; return status;
SocketType abortSock = m_abortDesc.GetAbortSocket(); }
int status = RTPSelect(&abortSock, &isset, 1, delay);
if (status < 0)
{
MAINMUTEX_LOCK
waitingfordata = false;
MAINMUTEX_UNLOCK
WAITMUTEX_UNLOCK
return status;
}
MAINMUTEX_LOCK waitingfordata = false;
waitingfordata = false; if (!created) // destroy called
if (!created) // destroy called {
{
MAINMUTEX_UNLOCK;
WAITMUTEX_UNLOCK
return 0;
}
// if aborted, read from abort buffer return 0;
if (isset) }
{
m_abortDesc.ClearAbortSignal();
m_abortCount = 0;
}
if (dataavailable != 0) // if aborted, read from abort buffer
{ if (isset)
if (rawpacketlist.empty()) {
*dataavailable = false; m_abortDesc.ClearAbortSignal();
else m_abortCount = 0;
*dataavailable = true; }
}
MAINMUTEX_UNLOCK if (dataavailable != 0)
WAITMUTEX_UNLOCK {
return 0; if (rawpacketlist.empty())
*dataavailable = false;
else
*dataavailable = true;
}
return 0;
} }
int RTPExternalTransmitter::AbortWait() int RTPExternalTransmitter::AbortWait()
{ {
if (!init) if (!init)
return ERR_RTP_EXTERNALTRANS_NOTINIT; return ERR_RTP_EXTERNALTRANS_NOTINIT;
MAINMUTEX_LOCK if (!created)
if (!created) {
{ return ERR_RTP_EXTERNALTRANS_NOTCREATED;
MAINMUTEX_UNLOCK }
return ERR_RTP_EXTERNALTRANS_NOTCREATED; if (!waitingfordata)
} {
if (!waitingfordata) return ERR_RTP_EXTERNALTRANS_NOTWAITING;
{ }
MAINMUTEX_UNLOCK
return ERR_RTP_EXTERNALTRANS_NOTWAITING;
}
m_abortDesc.SendAbortSignal(); m_abortDesc.SendAbortSignal();
m_abortCount++; m_abortCount++;
MAINMUTEX_UNLOCK return 0;
return 0;
} }
int RTPExternalTransmitter::SendRTPData(const void *data, size_t len) int RTPExternalTransmitter::SendRTPData(const void *data, size_t len)
{ {
if (!init) if (!init)
return ERR_RTP_EXTERNALTRANS_NOTINIT; return ERR_RTP_EXTERNALTRANS_NOTINIT;
MAINMUTEX_LOCK if (!created)
{
return ERR_RTP_EXTERNALTRANS_NOTCREATED;
}
if (len > maxpacksize)
{
return ERR_RTP_EXTERNALTRANS_SPECIFIEDSIZETOOBIG;
}
if (!created) if (!sender)
{ {
MAINMUTEX_UNLOCK return ERR_RTP_EXTERNALTRANS_NOSENDER;
return ERR_RTP_EXTERNALTRANS_NOTCREATED; }
}
if (len > maxpacksize)
{
MAINMUTEX_UNLOCK
return ERR_RTP_EXTERNALTRANS_SPECIFIEDSIZETOOBIG;
}
if (!sender) if (!sender->SendRTP(data, len))
{ return ERR_RTP_EXTERNALTRANS_SENDERROR;
MAINMUTEX_UNLOCK
return ERR_RTP_EXTERNALTRANS_NOSENDER;
}
MAINMUTEX_UNLOCK return 0;
if (!sender->SendRTP(data, len))
return ERR_RTP_EXTERNALTRANS_SENDERROR;
return 0;
} }
int RTPExternalTransmitter::SendRTCPData(const void *data, size_t len) int RTPExternalTransmitter::SendRTCPData(const void *data, size_t len)
{ {
if (!init) if (!init)
return ERR_RTP_EXTERNALTRANS_NOTINIT; return ERR_RTP_EXTERNALTRANS_NOTINIT;
MAINMUTEX_LOCK if (!created)
{
return ERR_RTP_EXTERNALTRANS_NOTCREATED;
}
if (len > maxpacksize)
{
return ERR_RTP_EXTERNALTRANS_SPECIFIEDSIZETOOBIG;
}
if (!created) if (!sender)
{ {
MAINMUTEX_UNLOCK return ERR_RTP_EXTERNALTRANS_NOSENDER;
return ERR_RTP_EXTERNALTRANS_NOTCREATED; }
}
if (len > maxpacksize)
{
MAINMUTEX_UNLOCK
return ERR_RTP_EXTERNALTRANS_SPECIFIEDSIZETOOBIG;
}
if (!sender) if (!sender->SendRTCP(data, len))
{ return ERR_RTP_EXTERNALTRANS_SENDERROR;
MAINMUTEX_UNLOCK
return ERR_RTP_EXTERNALTRANS_NOSENDER;
}
MAINMUTEX_UNLOCK
if (!sender->SendRTCP(data, len)) return 0;
return ERR_RTP_EXTERNALTRANS_SENDERROR;
return 0;
} }
int RTPExternalTransmitter::AddDestination(const RTPAddress &) int RTPExternalTransmitter::AddDestination(const RTPAddress &)
{ {
return ERR_RTP_EXTERNALTRANS_NODESTINATIONSSUPPORTED; return ERR_RTP_EXTERNALTRANS_NODESTINATIONSSUPPORTED;
} }
int RTPExternalTransmitter::DeleteDestination(const RTPAddress &) int RTPExternalTransmitter::DeleteDestination(const RTPAddress &)
{ {
return ERR_RTP_EXTERNALTRANS_NODESTINATIONSSUPPORTED; return ERR_RTP_EXTERNALTRANS_NODESTINATIONSSUPPORTED;
} }
void RTPExternalTransmitter::ClearDestinations() void RTPExternalTransmitter::ClearDestinations()
@ -416,17 +363,17 @@ void RTPExternalTransmitter::ClearDestinations()
bool RTPExternalTransmitter::SupportsMulticasting() bool RTPExternalTransmitter::SupportsMulticasting()
{ {
return false; return false;
} }
int RTPExternalTransmitter::JoinMulticastGroup(const RTPAddress &) int RTPExternalTransmitter::JoinMulticastGroup(const RTPAddress &)
{ {
return ERR_RTP_EXTERNALTRANS_NOMULTICASTSUPPORT; return ERR_RTP_EXTERNALTRANS_NOMULTICASTSUPPORT;
} }
int RTPExternalTransmitter::LeaveMulticastGroup(const RTPAddress &) int RTPExternalTransmitter::LeaveMulticastGroup(const RTPAddress &)
{ {
return ERR_RTP_EXTERNALTRANS_NOMULTICASTSUPPORT; return ERR_RTP_EXTERNALTRANS_NOMULTICASTSUPPORT;
} }
void RTPExternalTransmitter::LeaveAllMulticastGroups() void RTPExternalTransmitter::LeaveAllMulticastGroups()
@ -435,32 +382,28 @@ void RTPExternalTransmitter::LeaveAllMulticastGroups()
int RTPExternalTransmitter::SetReceiveMode(RTPTransmitter::ReceiveMode m) int RTPExternalTransmitter::SetReceiveMode(RTPTransmitter::ReceiveMode m)
{ {
if (!init) if (!init)
return ERR_RTP_EXTERNALTRANS_NOTINIT; return ERR_RTP_EXTERNALTRANS_NOTINIT;
MAINMUTEX_LOCK if (!created)
if (!created) {
{ return ERR_RTP_EXTERNALTRANS_NOTCREATED;
MAINMUTEX_UNLOCK }
return ERR_RTP_EXTERNALTRANS_NOTCREATED; if (m != RTPTransmitter::AcceptAll)
} {
if (m != RTPTransmitter::AcceptAll) return ERR_RTP_EXTERNALTRANS_BADRECEIVEMODE;
{ }
MAINMUTEX_UNLOCK return 0;
return ERR_RTP_EXTERNALTRANS_BADRECEIVEMODE;
}
MAINMUTEX_UNLOCK
return 0;
} }
int RTPExternalTransmitter::AddToIgnoreList(const RTPAddress &) int RTPExternalTransmitter::AddToIgnoreList(const RTPAddress &)
{ {
return ERR_RTP_EXTERNALTRANS_NOIGNORELIST; return ERR_RTP_EXTERNALTRANS_NOIGNORELIST;
} }
int RTPExternalTransmitter::DeleteFromIgnoreList(const RTPAddress &) int RTPExternalTransmitter::DeleteFromIgnoreList(const RTPAddress &)
{ {
return ERR_RTP_EXTERNALTRANS_NOIGNORELIST; return ERR_RTP_EXTERNALTRANS_NOIGNORELIST;
} }
void RTPExternalTransmitter::ClearIgnoreList() void RTPExternalTransmitter::ClearIgnoreList()
@ -469,12 +412,12 @@ void RTPExternalTransmitter::ClearIgnoreList()
int RTPExternalTransmitter::AddToAcceptList(const RTPAddress &) int RTPExternalTransmitter::AddToAcceptList(const RTPAddress &)
{ {
return ERR_RTP_EXTERNALTRANS_NOACCEPTLIST; return ERR_RTP_EXTERNALTRANS_NOACCEPTLIST;
} }
int RTPExternalTransmitter::DeleteFromAcceptList(const RTPAddress &) int RTPExternalTransmitter::DeleteFromAcceptList(const RTPAddress &)
{ {
return ERR_RTP_EXTERNALTRANS_NOACCEPTLIST; return ERR_RTP_EXTERNALTRANS_NOACCEPTLIST;
} }
void RTPExternalTransmitter::ClearAcceptList() void RTPExternalTransmitter::ClearAcceptList()
@ -483,228 +426,207 @@ void RTPExternalTransmitter::ClearAcceptList()
int RTPExternalTransmitter::SetMaximumPacketSize(size_t s) int RTPExternalTransmitter::SetMaximumPacketSize(size_t s)
{ {
if (!init) if (!init)
return ERR_RTP_EXTERNALTRANS_NOTINIT; return ERR_RTP_EXTERNALTRANS_NOTINIT;
MAINMUTEX_LOCK if (!created)
if (!created) {
{ return ERR_RTP_EXTERNALTRANS_NOTCREATED;
MAINMUTEX_UNLOCK }
return ERR_RTP_EXTERNALTRANS_NOTCREATED; maxpacksize = s;
} return 0;
maxpacksize = s;
MAINMUTEX_UNLOCK
return 0;
} }
bool RTPExternalTransmitter::NewDataAvailable() bool RTPExternalTransmitter::NewDataAvailable()
{ {
if (!init) if (!init)
return false; return false;
MAINMUTEX_LOCK bool v;
bool v; if (!created)
v = false;
else
{
if (rawpacketlist.empty())
v = false;
else
v = true;
}
if (!created) return v;
v = false;
else
{
if (rawpacketlist.empty())
v = false;
else
v = true;
}
MAINMUTEX_UNLOCK
return v;
} }
RTPRawPacket *RTPExternalTransmitter::GetNextPacket() RTPRawPacket *RTPExternalTransmitter::GetNextPacket()
{ {
if (!init) if (!init)
return 0; return 0;
MAINMUTEX_LOCK RTPRawPacket *p;
RTPRawPacket *p; if (!created)
{
return 0;
}
if (rawpacketlist.empty())
{
return 0;
}
if (!created) p = *(rawpacketlist.begin());
{ rawpacketlist.pop_front();
MAINMUTEX_UNLOCK
return 0;
}
if (rawpacketlist.empty())
{
MAINMUTEX_UNLOCK
return 0;
}
p = *(rawpacketlist.begin()); return p;
rawpacketlist.pop_front();
MAINMUTEX_UNLOCK
return p;
} }
// Here the private functions start... // Here the private functions start...
void RTPExternalTransmitter::FlushPackets() void RTPExternalTransmitter::FlushPackets()
{ {
std::list<RTPRawPacket*>::const_iterator it; std::list<RTPRawPacket*>::const_iterator it;
for (it = rawpacketlist.begin(); it != rawpacketlist.end(); ++it) for (it = rawpacketlist.begin(); it != rawpacketlist.end(); ++it)
delete *it; delete *it;
rawpacketlist.clear(); rawpacketlist.clear();
} }
void RTPExternalTransmitter::InjectRTP(const void *data, size_t len, const RTPAddress &a) void RTPExternalTransmitter::InjectRTP(const void *data, size_t len, const RTPAddress &a)
{ {
if (!init) if (!init)
return; return;
MAINMUTEX_LOCK if (!created)
if (!created) {
{ return;
MAINMUTEX_UNLOCK }
return;
}
RTPAddress *addr = a.CreateCopy(); RTPAddress *addr = a.CreateCopy();
if (addr == 0) if (addr == 0)
return; return;
uint8_t *datacopy; uint8_t *datacopy;
datacopy = new uint8_t[len]; datacopy = new uint8_t[len];
if (datacopy == 0) if (datacopy == 0)
{ {
delete addr; delete addr;
return; return;
} }
memcpy(datacopy, data, len); memcpy(datacopy, data, len);
RTPTime curtime = RTPTime::CurrentTime(); RTPTime curtime = RTPTime::CurrentTime();
RTPRawPacket *pack; RTPRawPacket *pack;
pack = new RTPRawPacket(datacopy, len, addr, curtime, true); pack = new RTPRawPacket(datacopy, len, addr, curtime, true);
if (pack == 0) if (pack == 0)
{ {
delete addr; delete addr;
delete[] localhostname; delete[] localhostname;
return; return;
} }
rawpacketlist.push_back(pack); rawpacketlist.push_back(pack);
if (m_abortCount == 0) if (m_abortCount == 0)
{ {
m_abortDesc.SendAbortSignal(); m_abortDesc.SendAbortSignal();
m_abortCount++; m_abortCount++;
} }
MAINMUTEX_UNLOCK
} }
void RTPExternalTransmitter::InjectRTCP(const void *data, size_t len, const RTPAddress &a) void RTPExternalTransmitter::InjectRTCP(const void *data, size_t len, const RTPAddress &a)
{ {
if (!init) if (!init)
return; return;
MAINMUTEX_LOCK if (!created)
if (!created) {
{ return;
MAINMUTEX_UNLOCK }
return;
}
RTPAddress *addr = a.CreateCopy(); RTPAddress *addr = a.CreateCopy();
if (addr == 0) if (addr == 0)
return; return;
uint8_t *datacopy; uint8_t *datacopy;
datacopy = new uint8_t[len]; datacopy = new uint8_t[len];
if (datacopy == 0) if (datacopy == 0)
{ {
delete addr; delete addr;
return; return;
} }
memcpy(datacopy, data, len); memcpy(datacopy, data, len);
RTPTime curtime = RTPTime::CurrentTime(); RTPTime curtime = RTPTime::CurrentTime();
RTPRawPacket *pack; RTPRawPacket *pack;
pack = new RTPRawPacket(datacopy, len, addr, curtime, false); pack = new RTPRawPacket(datacopy, len, addr, curtime, false);
if (pack == 0) if (pack == 0)
{ {
delete addr; delete addr;
delete[] localhostname; delete[] localhostname;
return; return;
} }
rawpacketlist.push_back(pack); rawpacketlist.push_back(pack);
if (m_abortCount == 0) if (m_abortCount == 0)
{ {
m_abortDesc.SendAbortSignal(); m_abortDesc.SendAbortSignal();
m_abortCount++; m_abortCount++;
} }
MAINMUTEX_UNLOCK
} }
void RTPExternalTransmitter::InjectRTPorRTCP(const void *data, size_t len, const RTPAddress &a) void RTPExternalTransmitter::InjectRTPorRTCP(const void *data, size_t len, const RTPAddress &a)
{ {
if (!init) if (!init)
return; return;
MAINMUTEX_LOCK if (!created)
if (!created) {
{ return;
MAINMUTEX_UNLOCK }
return;
}
RTPAddress *addr = a.CreateCopy(); RTPAddress *addr = a.CreateCopy();
if (addr == 0) if (addr == 0)
return; return;
uint8_t *datacopy; uint8_t *datacopy;
bool rtp = true; bool rtp = true;
if (len >= 2) if (len >= 2)
{ {
const uint8_t *pData = (const uint8_t *) data; const uint8_t *pData = (const uint8_t *) data;
if (pData[1] >= 200 && pData[1] <= 204) if (pData[1] >= 200 && pData[1] <= 204)
rtp = false; rtp = false;
} }
datacopy = new uint8_t[len]; datacopy = new uint8_t[len];
if (datacopy == 0) if (datacopy == 0)
{ {
delete addr; delete addr;
return; return;
} }
memcpy(datacopy, data, len); memcpy(datacopy, data, len);
RTPTime curtime = RTPTime::CurrentTime(); RTPTime curtime = RTPTime::CurrentTime();
RTPRawPacket *pack; RTPRawPacket *pack;
pack = new RTPRawPacket(datacopy, len, addr, curtime, rtp); pack = new RTPRawPacket(datacopy, len, addr, curtime, rtp);
if (pack == 0) if (pack == 0)
{ {
delete addr; delete addr;
delete[] localhostname; delete[] localhostname;
return; return;
} }
rawpacketlist.push_back(pack); rawpacketlist.push_back(pack);
if (m_abortCount == 0) if (m_abortCount == 0)
{ {
m_abortDesc.SendAbortSignal(); m_abortDesc.SendAbortSignal();
m_abortCount++; m_abortCount++;
} }
MAINMUTEX_UNLOCK
} }

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff