diff --git a/reflector/DVFramePacket.h b/reflector/DVFramePacket.h index 8a7cc6c..11c10bb 100644 --- a/reflector/DVFramePacket.h +++ b/reflector/DVFramePacket.h @@ -56,7 +56,6 @@ public: // identity bool IsDvFrame(void) const { return true; } - bool HasTranscodableData(void) const { return true; } // get const STCPacket *GetCodecPacket() const { return &m_TCPack; } diff --git a/reflector/Packet.cpp b/reflector/Packet.cpp index 71e03a6..fa8bbfa 100644 --- a/reflector/Packet.cpp +++ b/reflector/Packet.cpp @@ -46,7 +46,7 @@ CPacket::CPacket(uint16_t sid, uint8_t dstarpid) m_uiYsfPacketId = 0xFF; m_uiYsfPacketSubId = 0xFF; m_uiYsfPacketFrameId = 0xFF; - m_uiM17FrameNumber = 0x8000U; + m_uiM17FrameNumber = 0xFFFFFFFFU; m_cModule = ' '; m_eOrigin = EOrigin::local; m_eCodecIn = ECodecType::dstar; @@ -63,7 +63,7 @@ CPacket::CPacket(uint16_t sid, uint8_t dmrpid, uint8_t dmrspid, bool lastpacket) m_uiYsfPacketId = 0xFF; m_uiYsfPacketSubId = 0xFF; m_uiYsfPacketFrameId = 0xFF; - m_uiM17FrameNumber = 0x8000U; + m_uiM17FrameNumber = 0xFFFFFFFFU; m_cModule = ' '; m_eOrigin = EOrigin::local; m_eCodecIn = ECodecType::dmr; @@ -80,7 +80,7 @@ CPacket::CPacket(uint16_t sid, uint8_t ysfpid, uint8_t ysfsubpid, uint8_t ysffri m_uiDstarPacketId = 0xFF; m_uiDmrPacketId = 0xFF; m_uiDmrPacketSubid = 0xFF; - m_uiM17FrameNumber = 0x8000U; + m_uiM17FrameNumber = 0xFFFFFFFFU; m_cModule = ' '; m_eOrigin = EOrigin::local; m_eCodecIn = ECodecType::dmr; @@ -97,7 +97,7 @@ CPacket::CPacket(uint16_t sid, uint8_t dstarpid, uint8_t dmrpid, uint8_t dmrsubp m_uiYsfPacketId = ysfpid; m_uiYsfPacketSubId = ysfsubpid; m_uiYsfPacketFrameId = ysffrid; - m_uiM17FrameNumber = 0x8000U; + m_uiM17FrameNumber = 0xFFFFFFFFU; m_cModule = ' '; m_eOrigin = EOrigin::local; m_eCodecIn = codecIn; @@ -115,7 +115,7 @@ CPacket::CPacket(const CM17Packet &m17) : CPacket() m_uiYsfPacketSubId = 0xFF; m_uiYsfPacketFrameId = 0xFF; m_eCodecIn = (0x6U == (0x6U & m17.GetFrameType())) ? ECodecType::c2_1600 : ECodecType::c2_3200; - m_uiM17FrameNumber = 0x7FFFU & m17.GetFrameNumber(); + m_uiM17FrameNumber = 0xFFFFU & m17.GetFrameNumber(); m_bLastPacket = m17.IsLastPacket(); } @@ -148,10 +148,10 @@ void CPacket::UpdatePids(const uint32_t pid) m_uiYsfPacketFrameId = ((pid / 5) & 0x7FU) << 1; } // m17 needs update? - if (m_uiM17FrameNumber == 0x8000U) + if (m_uiM17FrameNumber == 0xFFFFFFFFU) { // frames are every 20 milliseconds, so the m17 data will come every 40 milliseconds - m_uiM17FrameNumber = (pid % 2) % 0x7FFFU; + m_uiM17FrameNumber = (pid / 2) % 0x8000U; } // set the Is Second member used for M17 clients diff --git a/reflector/Packet.h b/reflector/Packet.h index 1fdc801..ac2a469 100644 --- a/reflector/Packet.h +++ b/reflector/Packet.h @@ -45,7 +45,6 @@ public: // identity virtual bool IsDvHeader(void) const { return false; } virtual bool IsDvFrame(void) const { return false; } - virtual bool HasTranscodableData(void) const { return false; } bool IsLastPacket(void) const { return m_bLastPacket; } // get @@ -79,7 +78,7 @@ protected: bool m_bIsSecond; char m_cModule; uint16_t m_uiStreamId; - uint16_t m_uiM17FrameNumber; + uint32_t m_uiM17FrameNumber; uint8_t m_uiDstarPacketId; uint8_t m_uiDmrPacketId; uint8_t m_uiDmrPacketSubid; diff --git a/reflector/PacketStream.cpp b/reflector/PacketStream.cpp index 4a52020..4571f34 100644 --- a/reflector/PacketStream.cpp +++ b/reflector/PacketStream.cpp @@ -87,9 +87,10 @@ void CPacketStream::Push(std::unique_ptr Packet) { // update stream dependent packet data m_LastPacketTime.start(); - Packet->UpdatePids(m_uiPacketCntr); if (Packet->IsDvFrame()) - m_uiPacketCntr++; + { + Packet->UpdatePids(m_uiPacketCntr++); + } // transcoder avaliable ? #ifdef TRANSCODED_MODULES if ( m_CodecStream != nullptr ) @@ -98,7 +99,7 @@ void CPacketStream::Push(std::unique_ptr Packet) m_CodecStream->Lock(); { // transcoder ready & frame need transcoding ? - if (Packet->HasTranscodableData()) + if (Packet->IsDvFrame()) { // yes, push packet to trancoder queue // trancoder will push it after transcoding @@ -107,7 +108,7 @@ void CPacketStream::Push(std::unique_ptr Packet) } else { - // no, just bypass tarnscoder + // no, just bypass transcoder push(Packet); } }