diff --git a/solaris/oss/JackBoomerDriver.cpp b/solaris/oss/JackBoomerDriver.cpp index b77e7747..9c1f9b32 100644 --- a/solaris/oss/JackBoomerDriver.cpp +++ b/solaris/oss/JackBoomerDriver.cpp @@ -395,11 +395,12 @@ int JackBoomerDriver::Open(jack_nframes_t nframes, return -1; } else { +/* if (fEngineControl->fSyncMode) { jack_error("Cannot run in synchronous mode, remove the -S parameter for jackd"); return -1; } - +*/ fRWMode |= ((capturing) ? kRead : 0); fRWMode |= ((playing) ? kWrite : 0); fBits = bits; @@ -491,7 +492,7 @@ int JackBoomerDriver::OpenAux() if (fPlaybackChannels > 0) { fRingBuffer = new jack_ringbuffer_t*[fPlaybackChannels]; for (int i = 0; i < fPlaybackChannels; i++) { - fRingBuffer[i] = jack_ringbuffer_create(fOutputBufferSize * 2); + fRingBuffer[i] = jack_ringbuffer_create(fOutputBufferSize * 8); jack_ringbuffer_read_advance(fRingBuffer[i], fOutputBufferSize); } } @@ -530,6 +531,7 @@ void JackBoomerDriver::CloseAux() fRingBuffer = NULL; } + int JackBoomerDriver::Start() { jack_log("JackBoomerDriver::Start"); @@ -620,7 +622,7 @@ int JackBoomerDriver::Write() for (int i = 0; i < fPlaybackChannels; i++) { if (fGraphManager->GetConnectionsNum(fPlaybackPortList[i]) > 0) { if (jack_ringbuffer_write(fRingBuffer[i], (char*)GetOutputBuffer(i), fOutputBufferSize) < fOutputBufferSize) { - jack_log("JackBoomerDriver::Write ringbuffer full"); + jack_error("JackBoomerDriver::Write ringbuffer full"); } } } @@ -666,7 +668,7 @@ bool JackBoomerDriver::Init() bool JackBoomerDriver::Execute() { memset(fOutputBuffer, 0, fOutputBufferSize); - + for (int i = 0; i < fPlaybackChannels; i++) { if (fGraphManager->GetConnectionsNum(fPlaybackPortList[i]) > 0) { @@ -678,7 +680,7 @@ bool JackBoomerDriver::Execute() unsigned int needed_bytes = fOutputBufferSize; float* output = (float*)fOutputBuffer; - + for (int j = 0; j < 2; j++) { unsigned int consumed_bytes = std::min(needed_bytes, ring_buffer_data[j].len); CopyAndConvertOut(output, (float*)ring_buffer_data[j].buf, consumed_bytes / sizeof(float), i, fPlaybackChannels, fBits); @@ -687,7 +689,7 @@ bool JackBoomerDriver::Execute() } if (needed_bytes > 0) { - jack_error("JackBoomerDriver::Execute missing frames = %ld", needed_bytes / sizeof(float)); + jack_error("JackBoomerDriver::Execute missing bytes = %ld", needed_bytes); } jack_ringbuffer_read_advance(fRingBuffer[i], fOutputBufferSize - needed_bytes); @@ -700,7 +702,7 @@ bool JackBoomerDriver::Execute() // Keep end cycle time JackDriver::CycleTakeEndTime(); - ssize_t count = ::write(fOutFD, fOutputBuffer, fOutputBufferSize); + ssize_t count = ::write(fOutFD, fOutputBuffer, fOutputBufferSize); #ifdef JACK_MONITOR if (count > 0 && count != (int)fOutputBufferSize) @@ -987,7 +989,7 @@ EXPORT Jack::JackDriverClientInterface* driver_initialize(Jack::JackLockedEngine Jack::JackBoomerDriver* boomer_driver = new Jack::JackBoomerDriver("system", "boomer", engine, table); Jack::JackDriverClientInterface* threaded_driver = new Jack::JackThreadedDriver(boomer_driver); - // Special open for OSS driver... + // Special open for Boomer driver... if (boomer_driver->Open(frames_per_interrupt, nperiods, srate, capture, playback, chan_in, chan_out, excl, monitor, capture_pcm_name, playback_pcm_name, systemic_input_latency, systemic_output_latency, bits, ignorehwbuf) == 0) { return threaded_driver;