CCodecStream init fixes

unstable
Tom Early 4 years ago
parent 6f528df70c
commit e876bebc10

@ -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;
}
////////////////////////////////////////////////////////////////////////////////////////

@ -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;

@ -39,8 +39,6 @@ CPacketStream::CPacketStream(std::shared_ptr<CUnixDgramReader> reader)
bool CPacketStream::OpenPacketStream(const CDvHeaderPacket &DvHeader, std::shared_ptr<CClient>client)
{
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<CCodecStream>(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<CCodecStream>(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)

@ -66,6 +66,6 @@ protected:
std::shared_ptr<CClient> m_OwnerClient;
#ifdef TRANSCODED_MODULES
std::shared_ptr<CUnixDgramReader> m_TCReader;
std::shared_ptr<CCodecStream> m_CodecStream;
std::unique_ptr<CCodecStream> m_CodecStream;
#endif
};

@ -204,13 +204,15 @@ std::shared_ptr<CPacketStream> CReflector::OpenStream(std::unique_ptr<CDvHeaderP
client->Heard();
// 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();

Loading…
Cancel
Save

Powered by TurnKey Linux.