aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfuzzard <fuzzard@users.noreply.github.com>2023-02-27 13:41:11 +1000
committerGitHub <noreply@github.com>2023-02-27 13:41:11 +1000
commit7a12e5fea7ffc51c3f09778f1591d7d4985d9f3d (patch)
tree6ee51a7d27e141f2d541c8d4419bc98510bab7a1
parent1807d48c3d91f76254a53d7fc18c666cd3d70321 (diff)
parentfbb6b09c3b9b19009003fdff1ea4baa82a1850ff (diff)
Merge pull request #22699 from lrusak/ae-smartptr
AudioEngine smart pointers
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp13
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp7
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.h4
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp13
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h4
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp16
-rw-r--r--xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.h9
7 files changed, 25 insertions, 41 deletions
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
index 497591962d..bf668c57ca 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp
@@ -1368,12 +1368,12 @@ void CActiveAE::Configure(AEAudioFormat *desiredFmt)
(*it)->m_processingBuffers->Flush();
m_discardBufferPools.push_back((*it)->m_processingBuffers->GetResampleBuffers());
m_discardBufferPools.push_back((*it)->m_processingBuffers->GetAtempoBuffers());
- delete (*it)->m_processingBuffers;
- (*it)->m_processingBuffers = nullptr;
+ (*it)->m_processingBuffers.reset();
}
if (!(*it)->m_processingBuffers)
{
- (*it)->m_processingBuffers = new CActiveAEStreamBuffers((*it)->m_inputBuffers->m_format, outputFormat, m_settings.resampleQuality);
+ (*it)->m_processingBuffers = std::make_unique<CActiveAEStreamBuffers>(
+ (*it)->m_inputBuffers->m_format, outputFormat, m_settings.resampleQuality);
(*it)->m_processingBuffers->ForceResampler((*it)->m_forceResampler);
(*it)->m_processingBuffers->Create(MAX_CACHE_LEVEL*1000, false, m_settings.stereoupmix, m_settings.normalizelevels);
@@ -1481,12 +1481,11 @@ CActiveAEStream* CActiveAE::CreateStream(MsgStreamNew *streamMsg)
// create the stream
CActiveAEStream *stream;
stream = new CActiveAEStream(&streamMsg->format, m_streamIdGen++, this);
- stream->m_streamPort = new CActiveAEDataProtocol("stream",
- &stream->m_inMsgEvent, &m_outMsgEvent);
+ stream->m_streamPort =
+ std::make_unique<CActiveAEDataProtocol>("stream", &stream->m_inMsgEvent, &m_outMsgEvent);
// create buffer pool
stream->m_inputBuffers = NULL; // create in Configure when we know the sink format
- stream->m_processingBuffers = NULL; // create in Configure when we know the sink format
stream->m_fadingSamples = 0;
stream->m_started = false;
stream->m_resampleMode = 0;
@@ -1529,10 +1528,8 @@ void CActiveAE::DiscardStream(CActiveAEStream *stream)
m_discardBufferPools.push_back((*it)->m_processingBuffers->GetResampleBuffers());
m_discardBufferPools.push_back((*it)->m_processingBuffers->GetAtempoBuffers());
}
- delete (*it)->m_processingBuffers;
CLog::Log(LOGDEBUG, "CActiveAE::DiscardStream - audio stream deleted");
m_stats.RemoveStream((*it)->m_id);
- delete (*it)->m_streamPort;
delete (*it);
it = m_streams.erase(it);
}
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp
index 7539a7d597..3ef7c5d52d 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.cpp
@@ -29,11 +29,6 @@ CSoundPacket::~CSoundPacket()
CActiveAE::FreeSoundSample(data);
}
-CSampleBuffer::~CSampleBuffer()
-{
- delete pkt;
-}
-
CSampleBuffer* CSampleBuffer::Acquire()
{
refCount++;
@@ -112,7 +107,7 @@ bool CActiveAEBufferPool::Create(unsigned int totaltime)
{
buffer = new CSampleBuffer();
buffer->pool = this;
- buffer->pkt = new CSoundPacket(config, m_format.m_frames);
+ buffer->pkt = std::make_unique<CSoundPacket>(config, m_format.m_frames);
m_allSamples.push_back(buffer);
m_freeSamples.push_back(buffer);
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.h
index b8f041abf0..70e51bbd6f 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.h
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEBuffer.h
@@ -46,10 +46,10 @@ class CSampleBuffer
{
public:
CSampleBuffer() = default;
- ~CSampleBuffer();
+ ~CSampleBuffer() = default;
CSampleBuffer *Acquire();
void Return();
- CSoundPacket *pkt = nullptr;
+ std::unique_ptr<CSoundPacket> pkt;
CActiveAEBufferPool *pool = nullptr;
int64_t timestamp;
int pkt_start_offset = 0;
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp
index 9c3d4ae65d..923655d222 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.cpp
@@ -38,6 +38,8 @@ CActiveAESink::CActiveAESink(CEvent *inMsgEvent) :
m_streamNoise = true;
}
+CActiveAESink::~CActiveAESink() = default;
+
void CActiveAESink::Start()
{
if (!IsRunning())
@@ -62,11 +64,9 @@ void CActiveAESink::Dispose()
m_sink.reset();
}
- delete m_sampleOfSilence.pkt;
- m_sampleOfSilence.pkt = nullptr;
+ m_sampleOfSilence.pkt.reset();
- delete m_packer;
- m_packer = nullptr;
+ m_packer.reset();
CAESinkFactory::Cleanup();
}
@@ -809,7 +809,7 @@ void CActiveAESink::OpenSink()
m_needIecPack = NeedIECPacking();
if (m_needIecPack)
{
- m_packer = new CAEBitstreamPacker();
+ m_packer = std::make_unique<CAEBitstreamPacker>();
m_requestedFormat.m_sampleRate = CAEBitstreamPacker::GetOutputRate(m_requestedFormat.m_streamInfo);
m_requestedFormat.m_channelLayout = CAEBitstreamPacker::GetOutputChannelMap(m_requestedFormat.m_streamInfo);
}
@@ -889,8 +889,7 @@ void CActiveAESink::OpenSink()
config.sample_rate = m_sinkFormat.m_sampleRate;
// init sample of silence/noise
- delete m_sampleOfSilence.pkt;
- m_sampleOfSilence.pkt = new CSoundPacket(config, m_sinkFormat.m_frames);
+ m_sampleOfSilence.pkt = std::make_unique<CSoundPacket>(config, m_sinkFormat.m_frames);
m_sampleOfSilence.pkt->nb_samples = m_sampleOfSilence.pkt->max_nb_samples;
if (!passthrough)
GenerateNoise();
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h
index c95c7fabb9..aab1c315dd 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAESink.h
@@ -93,6 +93,8 @@ class CActiveAESink : private CThread
{
public:
explicit CActiveAESink(CEvent *inMsgEvent);
+ ~CActiveAESink();
+
void EnumerateSinkList(bool force, std::string driver);
void EnumerateOutputDevices(AEDeviceList &devices, bool passthrough);
void Start();
@@ -151,7 +153,7 @@ protected:
CEngineStats *m_stats;
float m_volume;
int m_sinkLatency;
- CAEBitstreamPacker *m_packer;
+ std::unique_ptr<CAEBitstreamPacker> m_packer;
bool m_needIecPack{false};
bool m_streamNoise;
};
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp
index 1b2d7f5854..bdf65d60ae 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.cpp
@@ -39,10 +39,8 @@ CActiveAEStream::CActiveAEStream(AEAudioFormat* format, unsigned int streamid, C
m_streamIsBuffering = false;
m_streamIsFlushed = false;
m_streamSlave = NULL;
- m_leftoverBuffer = new uint8_t[m_format.m_frameSize];
m_leftoverBytes = 0;
m_forceResampler = false;
- m_remapBuffer = NULL;
m_streamResampleRatio = 1.0;
m_streamResampleMode = 0;
m_profile = 0;
@@ -54,12 +52,6 @@ CActiveAEStream::CActiveAEStream(AEAudioFormat* format, unsigned int streamid, C
m_clockSpeed = 1.0;
}
-CActiveAEStream::~CActiveAEStream()
-{
- delete [] m_leftoverBuffer;
- delete m_remapBuffer;
-}
-
void CActiveAEStream::IncFreeBuffers()
{
std::unique_lock<CCriticalSection> lock(m_streamLock);
@@ -160,7 +152,9 @@ void CActiveAEStream::InitRemapper()
false);
// extra sound packet, we can't resample to the same buffer
- m_remapBuffer = new CSoundPacket(m_inputBuffers->m_allSamples[0]->pkt->config, m_inputBuffers->m_allSamples[0]->pkt->max_nb_samples);
+ m_remapBuffer =
+ std::make_unique<CSoundPacket>(m_inputBuffers->m_allSamples[0]->pkt->config,
+ m_inputBuffers->m_allSamples[0]->pkt->max_nb_samples);
}
}
@@ -178,9 +172,7 @@ void CActiveAEStream::RemapBuffer()
}
// swap sound packets
- CSoundPacket *tmp = m_currentBuffer->pkt;
- m_currentBuffer->pkt = m_remapBuffer;
- m_remapBuffer = tmp;
+ std::swap(m_currentBuffer->pkt, m_remapBuffer);
}
}
diff --git a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.h b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.h
index a33a12b7fe..56b9e51f36 100644
--- a/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.h
+++ b/xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAEStream.h
@@ -133,7 +133,7 @@ protected:
friend class CActiveAE;
friend class CEngineStats;
CActiveAEStream(AEAudioFormat *format, unsigned int streamid, CActiveAE *ae);
- ~CActiveAEStream() override;
+ ~CActiveAEStream() override = default;
void FadingFinished();
void IncFreeBuffers();
void DecFreeBuffers();
@@ -203,10 +203,9 @@ protected:
IAEStream *m_streamSlave;
CCriticalSection m_streamLock;
CCriticalSection m_statsLock;
- uint8_t *m_leftoverBuffer;
int m_leftoverBytes;
CSampleBuffer *m_currentBuffer;
- CSoundPacket *m_remapBuffer;
+ std::unique_ptr<CSoundPacket> m_remapBuffer;
std::unique_ptr<IAEResample> m_remapper;
double m_lastPts;
double m_lastPtsJump;
@@ -214,9 +213,9 @@ protected:
// only accessed by engine
std::unique_ptr<CActiveAEBufferPool> m_inputBuffers;
- CActiveAEStreamBuffers *m_processingBuffers;
+ std::unique_ptr<CActiveAEStreamBuffers> m_processingBuffers;
std::deque<CSampleBuffer*> m_processingSamples;
- CActiveAEDataProtocol *m_streamPort;
+ std::unique_ptr<CActiveAEDataProtocol> m_streamPort;
CEvent m_inMsgEvent;
bool m_drain;
bool m_paused;