Ejemplo n.º 1
0
void
RemotePluginClient::setSampleRate(int s)
{
    writeOpcode(&m_shmControl->ringBuffer, RemotePluginSetSampleRate);
    writeInt(&m_shmControl->ringBuffer, s);
    commitWrite(&m_shmControl->ringBuffer);
    waitForServer();
}
Ejemplo n.º 2
0
void
RemotePluginClient::setCurrentProgram(int n)
{
    writeOpcode(&m_shmControl->ringBuffer, RemotePluginSetCurrentProgram);
    writeInt(&m_shmControl->ringBuffer, n);
    commitWrite(&m_shmControl->ringBuffer);
    waitForServer();
}
Ejemplo n.º 3
0
void
RemotePluginClient::setBufferSize(int s)
{
    if (s == m_bufferSize) return;
    m_bufferSize = s;
    sizeShm();
    writeOpcode(&m_shmControl->ringBuffer, RemotePluginSetBufferSize);
    writeInt(&m_shmControl->ringBuffer, s);
    commitWrite(&m_shmControl->ringBuffer);
    waitForServer();
}
Ejemplo n.º 4
0
void
RemotePluginClient::process(float **inputs, float **outputs)
{
    //struct timeval start, finish;
    //gettimeofday(&start, 0);

    if (m_bufferSize < 0) {
	std::cerr << "ERROR: RemotePluginClient::setBufferSize must be called before RemotePluginClient::process" << std::endl;
	return;
    }
    if (m_numInputs < 0) {
	std::cerr << "ERROR: RemotePluginClient::getInputCount must be called before RemotePluginClient::process" << std::endl;
	return;
    }
    if (m_numOutputs < 0) {
	std::cerr << "ERROR: RemotePluginClient::getOutputCount must be called before RemotePluginClient::process" << std::endl;
	return;
    }
    if (!m_shm) {
	std::cerr << "ERROR: RemotePluginClient::process: no shared memory region available" << std::endl;
	return;
    }

    size_t blocksz = m_bufferSize * sizeof(float);

    //!!! put counter in shm to indicate number of blocks processed?
    // (so we know if we've screwed up)

    for (int i = 0; i < m_numInputs; ++i) {
	memcpy(m_shm + i * blocksz, inputs[i], blocksz);
    }

    writeOpcode(&m_shmControl->ringBuffer, RemotePluginProcess);
    commitWrite(&m_shmControl->ringBuffer);

    waitForServer();

    for (int i = 0; i < m_numOutputs; ++i) {
        memcpy(outputs[i], m_shm + (i + m_numInputs) * blocksz, blocksz);
    }


//    std::cout << "process: wrote opcode " << RemotePluginProcess << std::endl;

    //gettimeofday(&finish, 0);
//	std::cout << "process: time " << finish.tv_sec - start.tv_sec
//		  << " sec, " << finish.tv_usec - start.tv_usec << " usec"
//		  << std::endl;
    return;
}
Ejemplo n.º 5
0
 virtual void
 SetUp()
 {
     pid_ = fork();
     ASSERT_LE(0, pid_) << "failed to fork off server process";
     if (pid_ == 0)
     {
         runServer();
         exit(0);
     }
     else
     {
         waitForServer();
     }
 }