Example #1
0
void Port::acquireInputBuffer (BufferProvider &provider, nframes_t len)
{
  int numConnections = dependencies().count();
  switch (numConnections) {
    case 0:
      if (type() == AudioPort) {
        // Use silence
        m_buffer = provider.zeroAudioBuffer();
        return;
      }
      break;
    case 1:
    {
      // Use the other port's buffer
      // type should match due to validation on connect
      Port *other = static_cast<Port *>( *(dependencies().begin()) );
      m_buffer = other->buffer();
      break;
    }
    default:
      qFatal("Internal mixing is not yet supported");
      return;
  }

  if (!m_buffer) {
    // Return internal port
    m_buffer = provider.acquire(type(), len);
    updateBufferValue();
  }
}
Example #2
0
void Port::acquireOutputBuffer (BufferProvider &provider, nframes_t len)
{
  int numConnections = dependents().count();
  if (numConnections == 1) {
    // Use the other port's buffer
    Port *other = static_cast<Port *>( *(dependents().begin()) );
    m_buffer = other->buffer();
  }
  else if (numConnections == 2) {
    qFatal("Internal mixing is not yet supported");
  }

  if (!m_buffer) {
    m_buffer = provider.acquire(type(), len);
  }
}