CTranscoder:m_Streams is list

pull/1/head
Tom Early 6 years ago
parent 4bc72ce09e
commit 71a9f785ea

@ -48,7 +48,6 @@ CTranscoder::CTranscoder()
{ {
m_bStopThread = false; m_bStopThread = false;
m_pThread = NULL; m_pThread = NULL;
m_Streams.reserve(12);
m_bConnected = false; m_bConnected = false;
m_LastKeepaliveTime.Now(); m_LastKeepaliveTime.Now();
m_LastActivityTime.Now(); m_LastActivityTime.Now();
@ -62,25 +61,7 @@ CTranscoder::CTranscoder()
CTranscoder::~CTranscoder() CTranscoder::~CTranscoder()
{ {
// close all streams Close();
m_Mutex.lock();
{
for ( int i = 0; i < m_Streams.size(); i++ )
{
delete m_Streams[i];
}
m_Streams.clear();
}
m_Mutex.unlock();
// kill threads
m_bStopThread = true;
if ( m_pThread != NULL )
{
m_pThread->join();
delete m_pThread;
}
} }
//////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////
@ -120,9 +101,9 @@ void CTranscoder::Close(void)
// close all streams // close all streams
m_Mutex.lock(); m_Mutex.lock();
{ {
for ( int i = 0; i < m_Streams.size(); i++ ) for ( auto it=m_Streams.begin(); it!=m_Streams.end(); it++ )
{ {
delete m_Streams[i]; delete *it;
} }
m_Streams.clear(); m_Streams.clear();
@ -271,39 +252,39 @@ void CTranscoder::ReleaseStream(CCodecStream *stream)
bool found = false; bool found = false;
Lock(); Lock();
{ {
for ( int i = 0; (i < m_Streams.size()) && !found; i++ ) for ( auto it=m_Streams.begin(); it!=m_Streams.end(); it++ )
{ {
// compare object pointers // compare object pointers
if ( (m_Streams[i]) == stream ) if ( (*it) == stream )
{ {
// send close packet // send close packet
EncodeClosestreamPacket(&Buffer, m_Streams[i]->GetStreamId()); EncodeClosestreamPacket(&Buffer, (*it)->GetStreamId());
m_Socket.Send(Buffer, m_Ip, TRANSCODER_PORT); m_Socket.Send(Buffer, m_Ip, TRANSCODER_PORT);
// display stats // display stats
if ( m_Streams[i]->GetPingMin() >= 0.0 ) if ( (*it)->GetPingMin() >= 0.0 )
{ {
char sz[256]; char sz[256];
sprintf(sz, "ambed stats (ms) : %.1f/%.1f/%.1f", sprintf(sz, "ambed stats (ms) : %.1f/%.1f/%.1f",
m_Streams[i]->GetPingMin() * 1000.0, (*it)->GetPingMin() * 1000.0,
m_Streams[i]->GetPingAve() * 1000.0, (*it)->GetPingAve() * 1000.0,
m_Streams[i]->GetPingMax() * 1000.0); (*it)->GetPingMax() * 1000.0);
std::cout << sz << std::endl; std::cout << sz << std::endl;
} }
if ( m_Streams[i]->GetTimeoutPackets() > 0 ) if ( (*it)->GetTimeoutPackets() > 0 )
{ {
char sz[256]; char sz[256];
sprintf(sz, "ambed %d of %d packets timed out", sprintf(sz, "ambed %d of %d packets timed out",
m_Streams[i]->GetTimeoutPackets(), (*it)->GetTimeoutPackets(),
m_Streams[i]->GetTotalPackets()); (*it)->GetTotalPackets());
std::cout << sz << std::endl; std::cout << sz << std::endl;
} }
// and close it // and close it
m_Streams[i]->Close(); (*it)->Close();
delete m_Streams[i]; delete (*it);
m_Streams.erase(m_Streams.begin()+i); m_Streams.erase(it);
found = true; break;
} }
} }
} }
@ -398,4 +379,3 @@ void CTranscoder::EncodeClosestreamPacket(CBuffer *Buffer, uint16 uiStreamId)
Buffer->Set(tag, sizeof(tag)); Buffer->Set(tag, sizeof(tag));
Buffer->Append((uint16)uiStreamId); Buffer->Append((uint16)uiStreamId);
} }

@ -4,6 +4,7 @@
// //
// Created by Jean-Luc Deltombe (LX3JL) on 13/04/2017. // Created by Jean-Luc Deltombe (LX3JL) on 13/04/2017.
// Copyright © 2015 Jean-Luc Deltombe (LX3JL). All rights reserved. // Copyright © 2015 Jean-Luc Deltombe (LX3JL). All rights reserved.
// Copyright © 2020 Thomas A. Early N7TAE
// //
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// This file is part of xlxd. // This file is part of xlxd.
@ -82,8 +83,8 @@ protected:
protected: protected:
// streams // streams
std::mutex m_Mutex; std::mutex m_Mutex;
std::vector<CCodecStream *> m_Streams; std::list<CCodecStream *> m_Streams;
// sync objects for Openstream // sync objects for Openstream
CSemaphore m_SemaphoreOpenStream; CSemaphore m_SemaphoreOpenStream;

Loading…
Cancel
Save

Powered by TurnKey Linux.