m_view.clip_ar->setValue(props.value("force_aspect_ratio").toDouble());
}
+ if (props.contains("force_progressive")) {
+ m_view.clip_force_progressive->setChecked(true);
+ m_view.clip_progressive->setEnabled(true);
+ m_view.clip_progressive->setValue(props.value("force_progressive").toInt());
+ }
+
if (props.contains("threads") && props.value("threads").toInt() != 1) {
m_view.clip_force_threads->setChecked(true);
m_view.clip_threads->setEnabled(true);
}
connect(m_view.clip_force_ar, SIGNAL(toggled(bool)), m_view.clip_ar, SLOT(setEnabled(bool)));
+ connect(m_view.clip_force_progressive, SIGNAL(toggled(bool)), m_view.clip_progressive, SLOT(setEnabled(bool)));
connect(m_view.clip_force_threads, SIGNAL(toggled(bool)), m_view.clip_threads, SLOT(setEnabled(bool)));
connect(m_view.clip_force_vindex, SIGNAL(toggled(bool)), m_view.clip_vindex, SLOT(setEnabled(bool)));
connect(m_view.clip_force_aindex, SIGNAL(toggled(bool)), m_view.clip_aindex, SLOT(setEnabled(bool)));
m_clipNeedsRefresh = true;
}
+ int progressive = m_view.clip_progressive->value();
+ if (m_view.clip_force_progressive->isChecked()) {
+ if (progressive != old_props.value("force_progressive").toInt()) {
+ props["force_progressive"] = QString::number(progressive);
+ }
+ } else if (old_props.contains("force_progressive")) {
+ props["force_progressive"].clear();
+ }
+
int threads = m_view.clip_threads->value();
if (m_view.clip_force_threads->isChecked()) {
if (threads != old_props.value("threads").toInt()) {
void DocClipBase::updateAudioThumbnail(QMap<int, QMap<int, QByteArray> > data)
{
- //kDebug() << "CLIPBASE RECIEDVED AUDIO DATA*********************************************";
+ //kDebug() << "CLIPBASE RECIEDVED AUDIO DATA*********************************************";
m_audioFrameCache = data;
m_audioThumbCreated = true;
emit gotAudioData();
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("force_progressive")) m_audioTrackProducers.at(track)->set("force_progressive", m_properties.value("force_progressive").toInt());
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());
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("force_progressive")) m_videoOnlyProducer->set("force_progressive", m_properties.value("force_progressive").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());
}
if (m_properties.contains("force_aspect_ratio")) m_baseTrackProducers[track]->set("force_aspect_ratio", m_properties.value("force_aspect_ratio").toDouble());
+ if (m_properties.contains("force_progressive")) m_baseTrackProducers[track]->set("force_progressive", m_properties.value("force_progressive").toInt());
if (m_properties.contains("threads")) m_baseTrackProducers[track]->set("threads", m_properties.value("threads").toInt());
if (m_properties.contains("video_index")) m_baseTrackProducers[track]->set("video_index", m_properties.value("video_index").toInt());
if (m_properties.contains("audio_index")) m_baseTrackProducers[track]->set("audio_index", m_properties.value("audio_index").toInt());
} else if (key == "force_aspect_ratio") {
if (value.isEmpty()) {
m_properties.remove("force_aspect_ratio");
- //TODO: find a was to remove the "force_aspect_ratio" property from producer, currently does not work
- setProducerProperty("force_aspect_ratio", 0);
+ setProducerProperty("force_aspect_ratio", NULL);
} else setProducerProperty("force_aspect_ratio", value.toDouble());
+ } else if (key == "force_progressive") {
+ if (value.isEmpty()) {
+ m_properties.remove("force_progressive");
+ setProducerProperty("force_progressive", NULL);
+ } else setProducerProperty("force_progressive", value.toInt());
} else if (key == "threads") {
if (value.isEmpty()) {
m_properties.remove("threads");
double aspect = xml.attribute("force_aspect_ratio").toDouble();
if (aspect > 0) producer->set("force_aspect_ratio", aspect);
}
+ if (xml.hasAttribute("force_progressive")) {
+ bool ok;
+ int progressive = xml.attribute("force_progressive").toInt(&ok);
+ if (ok) producer->set("force_progressive", progressive);
+ }
if (xml.hasAttribute("threads")) {
int threads = xml.attribute("threads").toInt();
if (threads != 1) producer->set("threads", threads);
if (ar != 0.0) slowprod->set("force_aspect_ratio", ar);
int threads = original->parent().get_int("threads");
if (threads != 0) slowprod->set("threads", threads);
+ if (original->parent().get("force_progressive"))
+ slowprod->set("force_progressive", original->parent().get_int("force_progressive"));
int ix = original->parent().get_int("video_index");
if (ix != 0) slowprod->set("video_index", ix);
m_slowmotionProducers.insert(url, slowprod);
// copy producer props
double ar = original->parent().get_double("force_aspect_ratio");
if (ar != 0.0) slowprod->set("force_aspect_ratio", ar);
+ if (original->parent().get("force_progressive"))
+ slowprod->set("force_progressive", original->parent().get_int("force_progressive"));
int threads = original->parent().get_int("threads");
if (threads != 0) slowprod->set("threads", threads);
int ix = original->parent().get_int("video_index");
<rect>
<x>0</x>
<y>0</y>
- <width>286</width>
- <height>436</height>
+ <width>304</width>
+ <height>451</height>
</rect>
</property>
<property name="windowTitle">
<string>Advanced</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
- <item row="4" column="2">
+ <item row="6" column="2">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
</widget>
</item>
- <item row="2" column="2">
+ <item row="3" column="2">
<widget class="QSpinBox" name="clip_vindex">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="3" column="2">
+ <item row="4" column="2">
<widget class="QSpinBox" name="clip_aindex">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
- <item row="1" column="1">
+ <item row="2" column="1">
<widget class="QCheckBox" name="clip_force_threads">
<property name="text">
<string>Decoding threads</string>
</property>
</widget>
</item>
- <item row="2" column="1">
+ <item row="3" column="1">
<widget class="QCheckBox" name="clip_force_vindex">
<property name="text">
<string>Video index</string>
</property>
</widget>
</item>
- <item row="3" column="1">
+ <item row="4" column="1">
<widget class="QCheckBox" name="clip_force_aindex">
<property name="text">
<string>Audio index</string>
</property>
</widget>
</item>
- <item row="1" column="2">
+ <item row="2" column="2">
<widget class="QSpinBox" name="clip_threads">
<property name="enabled">
<bool>false</bool>
</property>
</widget>
</item>
+ <item row="1" column="1">
+ <widget class="QCheckBox" name="clip_force_progressive">
+ <property name="text">
+ <string>Force progressive</string>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="2">
+ <widget class="QSpinBox" name="clip_progressive">
+ <property name="enabled">
+ <bool>false</bool>
+ </property>
+ <property name="maximum">
+ <number>1</number>
+ </property>
+ <property name="value">
+ <number>1</number>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</widget>