10 namespace swift::sound::sample_provider
12 CMixingSampleProvider::CMixingSampleProvider(QObject *parent) :
ISampleProvider(parent)
15 this->setObjectName(on);
21 m_sources.append(provider);
23 const QString on = QStringLiteral(
"%1 sources: %2").arg(
classNameShort(
this)).arg(m_sources.size());
24 this->setObjectName(on);
30 samples.fill(0,
static_cast<int>(count));
33 QVector<ISampleProvider *> finishedProviders;
34 for (
int i = 0; i < m_sources.size(); i++)
37 QVector<float> sourceBuffer;
39 const int len = sampleProvider->
readSamples(sourceBuffer, count);
40 for (
int n = 0; n < len; n++) { samples[n] += sourceBuffer[n]; }
42 outputLen = qMax(len, outputLen);
43 if (sampleProvider->
isFinished()) { finishedProviders.push_back(sampleProvider); }
48 sampleProvider->deleteLater();
49 m_sources.removeAll(sampleProvider);
virtual int readSamples(QVector< float > &samples, qint64 count)
Read samples.
void addMixerInput(ISampleProvider *provider)
Add a provider.
Sample provider interface.
virtual bool isFinished() const
Finished?
virtual int readSamples(QVector< float > &samples, qint64 count)=0
Read samples.
Free functions in swift::misc.
QString classNameShort(const QObject *object)
Class name as from QMetaObject::className without namespace.