diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2012-09-03 23:19:05 +0400 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2012-09-03 23:19:05 +0400 |
commit | f08a6b5ba75689585c39a7fca71e9ed5d42768e8 (patch) | |
tree | 81e1fda9f9588e103508c0d0c7e97fb9ec6a6465 /decoder/LAVAudio | |
parent | 309d0955b175aed091fae3072eaeba4c2fc9acb7 (diff) |
Try to keep the existing buffer, if possible, avoiding one memcpy
Diffstat (limited to 'decoder/LAVAudio')
-rw-r--r-- | decoder/LAVAudio/LAVAudio.cpp | 7 |
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; |