minor fixes and some better .h files

unstable
Tom Early 4 years ago
parent 60bc3ab68f
commit 2407b20798

@ -136,6 +136,13 @@ void CCodecStream::Task(void)
// todo: check the PID // todo: check the PID
// update content with transcoded data // update content with transcoded data
Frame->SetCodecData(&pack); Frame->SetCodecData(&pack);
// mark the DStar sync frames if the source isn't dstar
if (ECodecType::dstar!=Frame->GetCodecIn() && 0==Frame->GetPacketId()%21)
{
const uint8_t DStarSync[] = { 0x55,0x2D,0x16 };
Frame->SetDvData(DStarSync);
}
// and push it back to client // and push it back to client
m_PacketStream->Lock(); m_PacketStream->Lock();
m_PacketStream->push(Packet); m_PacketStream->push(Packet);

@ -145,7 +145,7 @@ const uint8_t *CDvFramePacket::GetCodecData(ECodecType type) const
//////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////
// set // set
void CDvFramePacket::SetDvData(uint8_t *DvData) void CDvFramePacket::SetDvData(const uint8_t *DvData)
{ {
memcpy(m_uiDvData, DvData, 3); memcpy(m_uiDvData, DvData, 3);
} }

@ -40,10 +40,14 @@ class CDvFramePacket : public CPacket
public: public:
// constructor // constructor
CDvFramePacket(); CDvFramePacket();
CDvFramePacket(const SDStarFrame *, uint16_t, uint8_t); // DStar frame
CDvFramePacket(const uint8_t *, const uint8_t *, uint16_t, uint8_t, uint8_t); CDvFramePacket(const SDStarFrame *dstarframe, uint16_t streamid, uint8_t counter);
CDvFramePacket(const uint8_t *, uint16_t, uint8_t, uint8_t, uint8_t); // DMR Frame
CDvFramePacket(uint16_t, uint8_t, const uint8_t *, const uint8_t *, uint8_t, uint8_t, const uint8_t *, const uint8_t *, ECodecType, const uint8_t *, const uint8_t *); CDvFramePacket(const uint8_t *ambe, const uint8_t *sync, uint16_t streamid, uint8_t counter1, uint8_t counter2);
// YSF Frame
CDvFramePacket(const uint8_t *ambe, uint16_t streamid, uint8_t counter1, uint8_t counter2, uint8_t counter3);
// URF Frame
CDvFramePacket(uint16_t streamid, uint8_t dstarcounter, const uint8_t *dstarambe, const uint8_t *dvdata, uint8_t dmrcounter1, uint8_t dmrcounter2, const uint8_t *dmrambe, const uint8_t *dmrsync, ECodecType type, const uint8_t *m17codec, const uint8_t *nonce);
CDvFramePacket(const CM17Packet &m17); CDvFramePacket(const CM17Packet &m17);
// virtual duplication // virtual duplication
@ -61,7 +65,7 @@ public:
const uint8_t *GetNonce(void) const { return m_Nonce; } const uint8_t *GetNonce(void) const { return m_Nonce; }
// set // set
void SetDvData(uint8_t *); void SetDvData(const uint8_t *);
void SetCodecData(ECodecType, const uint8_t *); void SetCodecData(ECodecType, const uint8_t *);
void SetCodecData(const STCPacket *pack); void SetCodecData(const STCPacket *pack);

@ -19,59 +19,50 @@
#include "Main.h" #include "Main.h"
#include "DVLastFramePacket.h" #include "DVLastFramePacket.h"
////////////////////////////////////////////////////////////////////////////////////////
// constructor // constructor
CDvLastFramePacket::CDvLastFramePacket() CDvLastFramePacket::CDvLastFramePacket()
{ {
} }
// dstar constructor // dstar constructor
CDvLastFramePacket::CDvLastFramePacket(const SDStarFrame *DvFrame, uint16_t sid, uint8_t pid)
CDvLastFramePacket::CDvLastFramePacket(const SDstarFrame *DvFrame, uint16_t sid, uint8_t pid)
: CDvFramePacket(DvFrame, sid, pid) : CDvFramePacket(DvFrame, sid, pid)
{ {
} }
// dmr constructor // dmr constructor
CDvLastFramePacket::CDvLastFramePacket(const uint8_t *ambe, const uint8_t *sync, uint16_t sid, uint8_t pid, uint8_t spid) CDvLastFramePacket::CDvLastFramePacket(const uint8_t *ambe, const uint8_t *sync, uint16_t sid, uint8_t pid, uint8_t spid)
: CDvFramePacket(ambe, sync, sid, pid, spid) : CDvFramePacket(ambe, sync, sid, pid, spid)
{ {
} }
// ysf constructor // ysf constructor
CDvLastFramePacket::CDvLastFramePacket(const uint8_t *ambe, uint16_t sid, uint8_t pid, uint8_t spid, uint8_t fid) CDvLastFramePacket::CDvLastFramePacket(const uint8_t *ambe, uint16_t sid, uint8_t pid, uint8_t spid, uint8_t fid)
: CDvFramePacket(ambe, sid, pid, spid, fid) : CDvFramePacket(ambe, sid, pid, spid, fid)
{ {
} }
// urf constructor // urf constructor
CDvLastFramePacket::CDvLastFramePacket CDvLastFramePacket::CDvLastFramePacket
(uint16_t sid, (uint16_t sid,
uint8_t dstarpid, const uint8_t *dstarambe, const uint8_t *dstardvdata, uint8_t dstarpid, const uint8_t *dstarambe, const uint8_t *dstardvdata,
uint8_t dmrpid, uint8_t dprspid, const uint8_t *dmrambe, const uint8_t *dmrsync, ECodecType type, const uint8_t *codec2) uint8_t dmrpid, uint8_t dprspid, const uint8_t *dmrambe, const uint8_t *dmrsync, ECodecType type, const uint8_t *codec2, const uint8_t *nonce)
: CDvFramePacket(sid, dstarpid, dstarambe, dstardvdata, dmrpid, dprspid, dmrambe, dmrsync, type, codec2) : CDvFramePacket(sid, dstarpid, dstarambe, dstardvdata, dmrpid, dprspid, dmrambe, dmrsync, type, codec2, nonce)
{ {
} }
// m17 constructor
CDvLastFramePacket::CDvLastFramePacket(const CM17Packet &m17) : CDvFramePacket(m17) CDvLastFramePacket::CDvLastFramePacket(const CM17Packet &m17) : CDvFramePacket(m17)
{ {
} }
// copy constructor // copy constructor
CDvLastFramePacket::CDvLastFramePacket(const CDvLastFramePacket &DvFrame) CDvLastFramePacket::CDvLastFramePacket(const CDvLastFramePacket &DvFrame)
: CDvFramePacket(DvFrame) : CDvFramePacket(DvFrame)
{ {
} }
////////////////////////////////////////////////////////////////////////////////////////
// virtual duplication // virtual duplication
std::unique_ptr<CPacket> CDvLastFramePacket::Duplicate(void) const std::unique_ptr<CPacket> CDvLastFramePacket::Duplicate(void) const
{ {
return std::unique_ptr<CPacket>(new CDvLastFramePacket(*this)); return std::unique_ptr<CPacket>(new CDvLastFramePacket(*this));

@ -30,19 +30,25 @@
class CDvLastFramePacket : public CDvFramePacket class CDvLastFramePacket : public CDvFramePacket
{ {
public: public:
// constructor // empty constructor
CDvLastFramePacket(); CDvLastFramePacket();
CDvLastFramePacket(const SDstarFrame *, uint16_t, uint8_t); // DStar constructor
CDvLastFramePacket(const uint8_t *, const uint8_t *, uint16_t, uint8_t, uint8_t); CDvLastFramePacket(const SDStarFrame *dvframe, uint16_t streamid, uint8_t counter);
CDvLastFramePacket(const uint8_t *, uint16_t, uint8_t, uint8_t, uint8_t); // DRM constructor
CDvLastFramePacket(uint16_t, uint8_t, const uint8_t *, const uint8_t *, uint8_t, uint8_t, const uint8_t *, const uint8_t *, ECodecType, const uint8_t *); CDvLastFramePacket(const uint8_t *ambe, const uint8_t *sync, uint16_t streamid, uint8_t counter1, uint8_t counter2);
// YSF constructor
CDvLastFramePacket(const uint8_t *ambe, uint16_t streamid, uint8_t counter1, uint8_t counter2, uint8_t counter3);
// URF constructor
CDvLastFramePacket(uint16_t streamid, uint8_t dstarcounter, const uint8_t *dstarambe, const uint8_t *dvdata, uint8_t dmrcounter1, uint8_t dmrcounter2, const uint8_t *dmrambe, const uint8_t *dmrsync, ECodecType type, const uint8_t *codec2, const uint8_t *nonce);
// M17 constructor
CDvLastFramePacket(const CM17Packet &); CDvLastFramePacket(const CM17Packet &);
// copy constructor
CDvLastFramePacket(const CDvLastFramePacket &); CDvLastFramePacket(const CDvLastFramePacket &);
// virtual duplication // virtual duplication
std::unique_ptr<CPacket> Duplicate(void) const; std::unique_ptr<CPacket> Duplicate(void) const;
// identity // identity
bool IsLastPacket(void) const { return true; } bool IsLastPacket(void) const { return true; }
bool HasTranscodableAmbe(void) const { return false; } bool HasTranscodableAmbe(void) const { return false; }
}; };

@ -125,7 +125,7 @@ CPacket::CPacket(const CM17Packet &m17) : CPacket()
//////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////
// pid conversion // pid conversion
void CPacket::UpdatePids(uint32_t pid) void CPacket::UpdatePids(const uint32_t pid)
{ {
// called while pushing this packet in a stream queue // called while pushing this packet in a stream queue
// so now packet sequence number is known and undefined pids can be updated // so now packet sequence number is known and undefined pids can be updated
@ -153,6 +153,7 @@ void CPacket::UpdatePids(uint32_t pid)
// m17 needs update? // m17 needs update?
if (m_uiM17FrameNumber == 0x8000U) if (m_uiM17FrameNumber == 0x8000U)
{ {
m_uiM17FrameNumber = pid % 0x7FFFU; // frames are every 20 milliseconds, so the m17 data will come every 40 milliseconds
m_uiM17FrameNumber = (pid % 2) % 0x7FFFU;
} }
} }

@ -65,7 +65,7 @@ public:
ECodecType GetCodecIn(void) const { return m_eCodecIn; } ECodecType GetCodecIn(void) const { return m_eCodecIn; }
// set // set
void UpdatePids(uint32_t); void UpdatePids(const uint32_t);
void SetModule(char cMod) { m_cModule = cMod; } void SetModule(char cMod) { m_cModule = cMod; }
void SetLocalOrigin(void) { m_uiOriginId = ORIGIN_LOCAL; } void SetLocalOrigin(void) { m_uiOriginId = ORIGIN_LOCAL; }
void SetRemotePeerOrigin(void) { m_uiOriginId = ORIGIN_PEER; } void SetRemotePeerOrigin(void) { m_uiOriginId = ORIGIN_PEER; }

Loading…
Cancel
Save

Powered by TurnKey Linux.