fixed: jack buffer usage

This commit is contained in:
Bob van Loosen 2012-12-27 18:29:06 +01:00
parent 3d365f0ea9
commit c5e356c49e
2 changed files with 8 additions and 4 deletions

View file

@ -235,8 +235,9 @@ int CJackClient::SJackProcessCallback(jack_nframes_t nframes, void *arg)
void CJackClient::PJackProcessCallback(jack_nframes_t nframes)
{
unsigned int neededsize = m_outsamples + nframes;
if (neededsize > (unsigned int)m_samplerate / 10 + nframes * 2)
int outsamples = Round32((double)nframes / m_samplerate * m_outsamplerate + 2.0);
int neededsize = m_outsamples + outsamples;
if (neededsize > m_outsamplerate)
{
return;
}
@ -257,7 +258,7 @@ void CJackClient::PJackProcessCallback(jack_nframes_t nframes)
srcdata.data_in = jackptr;
srcdata.data_out = m_buf + m_outsamples;
srcdata.input_frames = nframes;
srcdata.output_frames = nframes;
srcdata.output_frames = outsamples;
srcdata.src_ratio = (double)m_outsamplerate / m_samplerate;
src_process(m_srcstate, &srcdata);
@ -265,6 +266,9 @@ void CJackClient::PJackProcessCallback(jack_nframes_t nframes)
lock.Leave();
m_condition.Signal();
if (srcdata.input_frames_used < (int)nframes)
Log("WARNING: %i out of %i frames used", (int)srcdata.input_frames_used, (int)nframes);
}
int CJackClient::GetAudio(float*& buf, int& bufsize, int& samplerate, int64_t& audiotime)

View file

@ -61,7 +61,7 @@ class CJackClient
int m_pipe[2];
CCondition m_condition;
float* m_buf;
unsigned int m_bufsize;
int m_bufsize;
SRC_STATE* m_srcstate;
int m_outsamples;
int64_t m_audiotime;