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

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

Loading…
Cancel
Save

Powered by TurnKey Linux.