- for (i = 0; i < m_baseTrackProducers.count(); i++)
- if (m_baseTrackProducers.at(i) != NULL) break;
- if (i >= m_baseTrackProducers.count()) return NULL;
- m_videoOnlyProducer = cloneProducer(m_baseTrackProducers.at(i));
- adjustProducerProperties(m_videoOnlyProducer, QString(getId() + "_video"), true, false);
+ for (i = 0; i < m_videoTrackProducers.count(); i++)
+ if (m_videoTrackProducers.at(i) != NULL) break;
+ Mlt::Producer *base;
+ if (i >= m_videoTrackProducers.count()) {
+ // Could not find a valid producer for that clip
+ locker.unlock();
+ base = getProducer();
+ if (base == NULL) {
+ return NULL;
+ }
+ locker.relock();
+ }
+ else base = m_videoTrackProducers.at(i);
+ m_videoTrackProducers[track] = cloneProducer(base);
+ adjustProducerProperties(m_videoTrackProducers.at(track), QString(getId() + '_' + QString::number(track) + "_video"), true, false);