Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/LAVFilters.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2012-09-03 23:19:05 +0400
committerHendrik Leppkes <h.leppkes@gmail.com>2012-09-03 23:19:05 +0400
commitf08a6b5ba75689585c39a7fca71e9ed5d42768e8 (patch)
tree81e1fda9f9588e103508c0d0c7e97fb9ec6a6465 /decoder/LAVAudio
parent309d0955b175aed091fae3072eaeba4c2fc9acb7 (diff)
Try to keep the existing buffer, if possible, avoiding one memcpy
Diffstat (limited to 'decoder/LAVAudio')
-rw-r--r--decoder/LAVAudio/LAVAudio.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/decoder/LAVAudio/LAVAudio.cpp b/decoder/LAVAudio/LAVAudio.cpp
index ead4853d..fea7bf7a 100644
--- a/decoder/LAVAudio/LAVAudio.cpp
+++ b/decoder/LAVAudio/LAVAudio.cpp
@@ -2013,8 +2013,13 @@ HRESULT CLAVAudio::QueueOutput(BufferDetails &buffer)
else if (m_OutputQueue.rtStart == AV_NOPTS_VALUE && buffer.rtStart != AV_NOPTS_VALUE)
m_OutputQueue.rtStart = buffer.rtStart - (REFERENCE_TIME)((double)m_OutputQueue.nSamples / m_OutputQueue.dwSamplesPerSec * 10000000.0);
+ // Try to retain the buffer, if possible
+ if (m_OutputQueue.nSamples == 0) {
+ FFSWAP(GrowableArray<BYTE>*, m_OutputQueue.bBuffer, buffer.bBuffer);
+ } else {
+ m_OutputQueue.bBuffer->Append(buffer.bBuffer);
+ }
m_OutputQueue.nSamples += buffer.nSamples;
- m_OutputQueue.bBuffer->Append(buffer.bBuffer);
buffer.bBuffer->SetSize(0);
buffer.nSamples = 0;