Merge pull request #4812 from FernetMenta/aefixes
authorjmarshallnz <jcmarsha@gmail.com>
Sat, 31 May 2014 21:30:53 +0000 (09:30 +1200)
committerTrent Nelson <trent.nelson@pivosgroup.com>
Sat, 7 Jun 2014 05:28:10 +0000 (13:28 +0800)
ActiveAE: do not feed free buffers to stream if cache is full

xbmc/cores/AudioEngine/Engines/ActiveAE/ActiveAE.cpp

index 537e527..f8d7852 100644 (file)
@@ -1646,13 +1646,15 @@ bool CActiveAE::RunStages()
     CSampleBuffer *buffer;
     if (!(*it)->m_drain)
     {
+      float buftime = (float)(*it)->m_inputBuffers->m_format.m_frames / (*it)->m_inputBuffers->m_format.m_sampleRate;
+      time += buftime * (*it)->m_processingSamples.size();
       while (time < MAX_CACHE_LEVEL && !(*it)->m_inputBuffers->m_freeSamples.empty())
       {
         buffer = (*it)->m_inputBuffers->GetFreeBuffer();
         (*it)->m_processingSamples.push_back(buffer);
         (*it)->m_streamPort->SendInMessage(CActiveAEDataProtocol::STREAMBUFFER, &buffer, sizeof(CSampleBuffer*));
         (*it)->IncFreeBuffers();
-        time += (float)buffer->pkt->max_nb_samples / buffer->pkt->config.sample_rate;
+        time += buftime;
       }
     }
     else