Browse Source

Add timing features

git-svn-id: http://subversion.jackaudio.org/jack/jack2/trunk/jackmp@2585 0c269be4-1314-0410-8aa9-9f06e86f4224
tags/1.90
sletz 17 years ago
parent
commit
d77a7a1352
3 changed files with 22 additions and 5 deletions
  1. +4
    -2
      common/JackCallbackNetIOAdapter.cpp
  2. +10
    -0
      common/JackIOAdapter.h
  3. +8
    -3
      windows/JackPortAudioIOAdapter.cpp

+ 4
- 2
common/JackCallbackNetIOAdapter.cpp View File

@@ -38,6 +38,8 @@ int JackCallbackNetIOAdapter::Process(jack_nframes_t frames, void* arg)
if (!adapter->fIOAdapter->IsRunning())
return 0;
adapter->fIOAdapter->SetCallbackTime(jack_get_time());
for (i = 0; i < adapter->fCaptureChannels; i++) {
@@ -45,7 +47,7 @@ int JackCallbackNetIOAdapter::Process(jack_nframes_t frames, void* arg)
size_t len = jack_ringbuffer_read_space(adapter->fCaptureRingBuffer);
if (len < frames * sizeof(float)) {
jack_error("JackCallbackNetIOAdapter::Process : consumer too slow, skip frames = %d", (frames * sizeof(float)) - len);
jack_error("JackCallbackNetIOAdapter::Process : consumer too slow, skip frames = %d", frames - len / sizeof(float));
jack_ringbuffer_read(adapter->fCaptureRingBuffer, buffer, len);
} else {
jack_ringbuffer_read(adapter->fCaptureRingBuffer, buffer, frames * sizeof(float));
@@ -58,7 +60,7 @@ int JackCallbackNetIOAdapter::Process(jack_nframes_t frames, void* arg)
size_t len = jack_ringbuffer_write_space(adapter->fPlaybackRingBuffer);
if (len < frames * sizeof(float)) {
jack_error("JackCallbackNetIOAdapter::Process : producer too slow, missing frames = %d", (frames * sizeof(float)) - len);
jack_error("JackCallbackNetIOAdapter::Process : producer too slow, missing frames = %d", frames - len / sizeof(float));
jack_ringbuffer_write(adapter->fPlaybackRingBuffer, buffer, len);
} else {
jack_ringbuffer_write(adapter->fPlaybackRingBuffer, buffer, frames * sizeof(float));


+ 10
- 0
common/JackIOAdapter.h View File

@@ -21,6 +21,8 @@ Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#define __JackIOAdapter__

#include "ringbuffer.h"
#include "jack.h"
#include "JackError.h"

namespace Jack
{
@@ -34,6 +36,8 @@ namespace Jack
int fPlaybackChannels;
int fBufferSize;
float fSampleRate;
jack_time_t fCallbackTime;
jack_time_t fFirstCallbackTime;
jack_ringbuffer_t* fCaptureRingBuffer;
jack_ringbuffer_t* fPlaybackRingBuffer;
@@ -46,6 +50,7 @@ namespace Jack
fPlaybackChannels(output),
fBufferSize(buffer_size),
fSampleRate(sample_rate),
fCallbackTime(0),
fRunning(false)
{}
virtual ~JackIOAdapterInterface()
@@ -66,6 +71,11 @@ namespace Jack
{
fBufferSize = buffer_size;
}
virtual void SetCallbackTime(jack_time_t usec)
{
fCallbackTime = usec;
}
};
}


+ 8
- 3
windows/JackPortAudioIOAdapter.cpp View File

@@ -34,7 +34,12 @@ int JackPortAudioIOAdapter::Render(const void* inputBuffer, void* outputBuffer,
float** paBuffer;
char* buffer;
adapter->fRunning = true;
if (!adapter->fRunning) {
adapter->fRunning = true;
adapter->fFirstCallbackTime = jack_get_time();
}
jack_log("Coef %f", double(jack_get_time() - adapter->fFirstCallbackTime) / double( adapter->fCallbackTime - adapter->fFirstCallbackTime));
paBuffer = (float**)inputBuffer;
for (int i = 0; i < adapter->fCaptureChannels; i++) {
@@ -43,7 +48,7 @@ int JackPortAudioIOAdapter::Render(const void* inputBuffer, void* outputBuffer,
size_t len = jack_ringbuffer_write_space(adapter->fCaptureRingBuffer);
if (len < framesPerBuffer * sizeof(float)) {
jack_error("JackPortAudioIOAdapter::Process : producer too slow, missing frames = %d", (framesPerBuffer * sizeof(float)) - len);
jack_error("JackPortAudioIOAdapter::Process : producer too slow, missing frames = %d", framesPerBuffer - len / sizeof(float));
jack_ringbuffer_write(adapter->fCaptureRingBuffer, buffer, len);
} else {
jack_ringbuffer_write(adapter->fCaptureRingBuffer, buffer, framesPerBuffer * sizeof(float));
@@ -57,7 +62,7 @@ int JackPortAudioIOAdapter::Render(const void* inputBuffer, void* outputBuffer,
size_t len = jack_ringbuffer_read_space(adapter->fPlaybackRingBuffer);
if (len < framesPerBuffer * sizeof(float)) {
jack_error("JackPortAudioIOAdapter::Process : consumer too slow, skip frames = %d", (framesPerBuffer * sizeof(float)) - len);
jack_error("JackPortAudioIOAdapter::Process : consumer too slow, skip frames = %d", framesPerBuffer - len / sizeof(float));
jack_ringbuffer_read(adapter->fPlaybackRingBuffer, buffer, len);
} else {
jack_ringbuffer_read(adapter->fPlaybackRingBuffer, buffer, framesPerBuffer * sizeof(float));


Loading…
Cancel
Save