fixed: jack buffer usage
This commit is contained in:
parent
3d365f0ea9
commit
c5e356c49e
2 changed files with 8 additions and 4 deletions
|
@ -235,8 +235,9 @@ int CJackClient::SJackProcessCallback(jack_nframes_t nframes, void *arg)
|
||||||
|
|
||||||
void CJackClient::PJackProcessCallback(jack_nframes_t nframes)
|
void CJackClient::PJackProcessCallback(jack_nframes_t nframes)
|
||||||
{
|
{
|
||||||
unsigned int neededsize = m_outsamples + nframes;
|
int outsamples = Round32((double)nframes / m_samplerate * m_outsamplerate + 2.0);
|
||||||
if (neededsize > (unsigned int)m_samplerate / 10 + nframes * 2)
|
int neededsize = m_outsamples + outsamples;
|
||||||
|
if (neededsize > m_outsamplerate)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -257,7 +258,7 @@ void CJackClient::PJackProcessCallback(jack_nframes_t nframes)
|
||||||
srcdata.data_in = jackptr;
|
srcdata.data_in = jackptr;
|
||||||
srcdata.data_out = m_buf + m_outsamples;
|
srcdata.data_out = m_buf + m_outsamples;
|
||||||
srcdata.input_frames = nframes;
|
srcdata.input_frames = nframes;
|
||||||
srcdata.output_frames = nframes;
|
srcdata.output_frames = outsamples;
|
||||||
srcdata.src_ratio = (double)m_outsamplerate / m_samplerate;
|
srcdata.src_ratio = (double)m_outsamplerate / m_samplerate;
|
||||||
|
|
||||||
src_process(m_srcstate, &srcdata);
|
src_process(m_srcstate, &srcdata);
|
||||||
|
@ -265,6 +266,9 @@ void CJackClient::PJackProcessCallback(jack_nframes_t nframes)
|
||||||
|
|
||||||
lock.Leave();
|
lock.Leave();
|
||||||
m_condition.Signal();
|
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)
|
int CJackClient::GetAudio(float*& buf, int& bufsize, int& samplerate, int64_t& audiotime)
|
||||||
|
|
|
@ -61,7 +61,7 @@ class CJackClient
|
||||||
int m_pipe[2];
|
int m_pipe[2];
|
||||||
CCondition m_condition;
|
CCondition m_condition;
|
||||||
float* m_buf;
|
float* m_buf;
|
||||||
unsigned int m_bufsize;
|
int m_bufsize;
|
||||||
SRC_STATE* m_srcstate;
|
SRC_STATE* m_srcstate;
|
||||||
int m_outsamples;
|
int m_outsamples;
|
||||||
int64_t m_audiotime;
|
int64_t m_audiotime;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue