- m_videoOnlyProducer->set("force_aspect_ratio", getPixelAspect(m_properties));
- if (m_properties.contains("force_fps")) m_videoOnlyProducer->set("force_fps", m_properties.value("force_fps").toDouble());
- if (m_properties.contains("force_progressive")) m_videoOnlyProducer->set("force_progressive", m_properties.value("force_progressive").toInt());
- if (m_properties.contains("force_tff")) m_videoOnlyProducer->set("force_tff", m_properties.value("force_tff").toInt());
- if (m_properties.contains("threads")) m_videoOnlyProducer->set("threads", m_properties.value("threads").toInt());
- m_videoOnlyProducer->set("audio_index", -1);
- if (m_properties.contains("video_index")) m_videoOnlyProducer->set("video_index", m_properties.value("video_index").toInt());
- m_videoOnlyProducer->set("id", QString(getId() + "_video").toUtf8().data());
- if (m_properties.contains("force_colorspace")) m_videoOnlyProducer->set("force_colorspace", m_properties.value("force_colorspace").toInt());
- if (m_properties.contains("full_luma")) m_videoOnlyProducer->set("set.force_full_luma", m_properties.value("full_luma").toInt());
+ prod->set("force_aspect_ratio", getPixelAspect(m_properties));
+ if (m_properties.contains("force_fps")) prod->set("force_fps", m_properties.value("force_fps").toDouble());
+ if (m_properties.contains("force_progressive")) prod->set("force_progressive", m_properties.value("force_progressive").toInt());
+ if (m_properties.contains("force_tff")) prod->set("force_tff", m_properties.value("force_tff").toInt());
+ if (m_properties.contains("threads")) prod->set("threads", m_properties.value("threads").toInt());
+ if (mute) prod->set("audio_index", -1);
+ else if (m_properties.contains("audio_index")) prod->set("audio_index", m_properties.value("audio_index").toInt());
+ if (blind) prod->set("video_index", -1);
+ else if (m_properties.contains("video_index")) prod->set("video_index", m_properties.value("video_index").toInt());
+ prod->set("id", id.toUtf8().constData());
+ if (m_properties.contains("force_colorspace")) prod->set("force_colorspace", m_properties.value("force_colorspace").toInt());
+ if (m_properties.contains("full_luma")) prod->set("set.force_full_luma", m_properties.value("full_luma").toInt());
+ if (m_properties.contains("proxy_out")) {
+ // We have a proxy clip, make sure the proxy has same duration as original
+ prod->set("length", m_properties.value("duration").toInt());
+ prod->set("out", m_properties.value("proxy_out").toInt());
+ }
+
+}
+
+Mlt::Producer *DocClipBase::videoProducer(int track)
+{
+ QMutexLocker locker(&m_producerMutex);
+ if (m_videoTrackProducers.count() <= track) {
+ while (m_videoTrackProducers.count() - 1 < track) {
+ m_videoTrackProducers.append(NULL);
+ }
+ }
+ if (m_videoTrackProducers.at(track) == NULL) {
+ int i;
+ 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);