diff --git a/reflector/CodecStream.cpp b/reflector/CodecStream.cpp index b2bd912..82f24f0 100644 --- a/reflector/CodecStream.cpp +++ b/reflector/CodecStream.cpp @@ -39,6 +39,7 @@ CCodecStream::CCodecStream(CPacketStream *PacketStream, uint16_t streamid, ECode m_uiTimeoutPackets = 0; m_PacketStream = PacketStream; m_TCReader = reader; + InitCodecStream(); } //////////////////////////////////////////////////////////////////////////////////////// @@ -76,13 +77,11 @@ CCodecStream::~CCodecStream() //////////////////////////////////////////////////////////////////////////////////////// // initialization -bool CCodecStream::Init() +void CCodecStream::InitCodecStream(void) { m_TCWriter.SetUp(REF2TC); keep_running = true; m_Future = std::async(std::launch::async, &CCodecStream::Thread, this); - - return true; } //////////////////////////////////////////////////////////////////////////////////////// diff --git a/reflector/CodecStream.h b/reflector/CodecStream.h index 700be86..70caa67 100644 --- a/reflector/CodecStream.h +++ b/reflector/CodecStream.h @@ -35,9 +35,6 @@ public: // destructor virtual ~CCodecStream(); - // initialization - bool Init(); - // get uint16_t GetStreamId(void) const { return m_uiStreamId; } bool IsEmpty(void) const; @@ -47,6 +44,8 @@ public: void Task(void); protected: + // initialization + void InitCodecStream(void); // data uint16_t m_uiStreamId; uint16_t m_uiPort; diff --git a/reflector/PacketStream.cpp b/reflector/PacketStream.cpp index 4479f99..a97d6e5 100644 --- a/reflector/PacketStream.cpp +++ b/reflector/PacketStream.cpp @@ -39,8 +39,6 @@ CPacketStream::CPacketStream(std::shared_ptr reader) bool CPacketStream::OpenPacketStream(const CDvHeaderPacket &DvHeader, std::shared_ptrclient) { - bool ok = false; - // not already open? if ( !m_bOpen ) { @@ -52,12 +50,23 @@ bool CPacketStream::OpenPacketStream(const CDvHeaderPacket &DvHeader, std::share m_OwnerClient = client; m_LastPacketTime.start(); #ifdef TRANSCODED_MODULES - if (std::string::npos != std::string(TRANSCODED_MODULES).find(DvHeader.GetRpt2Module())) - m_CodecStream = std::make_shared(this, m_uiStreamId, DvHeader.GetCodecIn(), m_TCReader); + auto mod = DvHeader.GetRpt2Module(); + if (std::string::npos != std::string(TRANSCODED_MODULES).find(mod)) + { + m_CodecStream = std::unique_ptr(new CCodecStream(this, m_uiStreamId, DvHeader.GetCodecIn(), m_TCReader)); + return true; + } + else + { + std::cerr << "Could not find module '" << mod << " in the transcoded list, '" << TRANSCODED_MODULES << "'" << std::endl; + return false; + } +#else + return true; #endif - ok = true; } - return ok; + + return false; } void CPacketStream::ClosePacketStream(void) diff --git a/reflector/PacketStream.h b/reflector/PacketStream.h index 167dd7d..e53676e 100644 --- a/reflector/PacketStream.h +++ b/reflector/PacketStream.h @@ -66,6 +66,6 @@ protected: std::shared_ptr m_OwnerClient; #ifdef TRANSCODED_MODULES std::shared_ptr m_TCReader; - std::shared_ptr m_CodecStream; + std::unique_ptr m_CodecStream; #endif }; diff --git a/reflector/Reflector.cpp b/reflector/Reflector.cpp index fda829d..3f8ce00 100644 --- a/reflector/Reflector.cpp +++ b/reflector/Reflector.cpp @@ -204,13 +204,15 @@ std::shared_ptr CReflector::OpenStream(std::unique_ptrHeard(); // report - std::cout << "Opening stream on module " << module << " for client " << client->GetCallsign() << " with sid " << DvHeader->GetStreamId() << " by user " << DvHeader->GetMyCallsign() << std::endl; + std::cout << std::showbase << std::hex; + std::cout << "Opening stream on module " << module << " for client " << client->GetCallsign() << " with sid " << ntohs(DvHeader->GetStreamId()) << " by user " << DvHeader->GetMyCallsign() << std::endl; + std::cout << std::noshowbase << std::dec; // and push header packet stream->Push(std::move(DvHeader)); // notify - g_Reflector.OnStreamOpen(stream->GetUserCallsign()); + OnStreamOpen(stream->GetUserCallsign()); } stream->Unlock();