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(); } }
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); } }