+Mlt::Producer *DocClipBase::audioProducer(int track)
+{
+ if (m_audioTrackProducers.count() <= track) {
+ while (m_audioTrackProducers.count() - 1 < track) {
+ m_audioTrackProducers.append(NULL);
+ }
+ }
+ if (m_audioTrackProducers.at(track) == NULL) {
+ Mlt::Producer *base = producer();
+ m_audioTrackProducers[track] = new Mlt::Producer(*(base->profile()), base->get("resource"));
+ if (m_properties.contains("force_aspect_ratio")) m_audioTrackProducers.at(track)->set("force_aspect_ratio", m_properties.value("force_aspect_ratio").toDouble());
+ if (m_properties.contains("threads")) m_audioTrackProducers.at(track)->set("threads", m_properties.value("threads").toInt());
+ m_audioTrackProducers.at(track)->set("video_index", -1);
+ if (m_properties.contains("audio_index")) m_audioTrackProducers.at(track)->set("audio_index", m_properties.value("audio_index").toInt());
+ char *tmp = (char *) qstrdup(QString(getId() + '_' + QString::number(track) + "_audio").toUtf8().data());
+ m_audioTrackProducers.at(track)->set("id", tmp);
+ delete[] tmp;
+ }
+ return m_audioTrackProducers.at(track);
+}
+
+Mlt::Producer *DocClipBase::videoProducer()
+{
+ if (m_videoOnlyProducer == NULL) {
+ int i;
+ for (i = 0; i < m_baseTrackProducers.count(); i++)
+ if (m_baseTrackProducers.at(i) != NULL) break;
+ if (i >= m_baseTrackProducers.count()) return NULL;
+ m_videoOnlyProducer = new Mlt::Producer(*m_baseTrackProducers.at(i)->profile(), m_baseTrackProducers.at(i)->get("resource"));
+ if (m_properties.contains("force_aspect_ratio")) m_videoOnlyProducer->set("force_aspect_ratio", m_properties.value("force_aspect_ratio").toDouble());
+ 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());
+ char *tmp = (char *) qstrdup(QString(getId() + "_video").toUtf8().data());
+ m_videoOnlyProducer->set("id", tmp);
+ delete[] tmp;
+ }
+ return m_videoOnlyProducer;
+}
+
+Mlt::Producer *DocClipBase::producer(int track)
+{