]> git.sesse.net Git - kdenlive/commitdiff
Add field order override in advanced clip properties.
authorDan Dennedy <dan@dennedy.org>
Sun, 14 Nov 2010 05:17:21 +0000 (05:17 +0000)
committerDan Dennedy <dan@dennedy.org>
Sun, 14 Nov 2010 05:17:21 +0000 (05:17 +0000)
svn path=/trunk/kdenlive/; revision=5092

src/clipproperties.cpp
src/docclipbase.cpp
src/projectlist.cpp
src/renderer.cpp
src/widgets/clipproperties_ui.ui

index c66c126e49f86d2b348c4412a97a112a6a888db6..1eed80a7ac6ac5e9c208fb660e43a1ab042ef3c9 100644 (file)
@@ -113,6 +113,16 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg
     connect(m_view.clip_force_progressive, SIGNAL(toggled(bool)), this, SLOT(slotModified()));
     connect(m_view.clip_progressive, SIGNAL(valueChanged(int)), this, SLOT(slotModified()));
 
+    m_view.clip_fieldorder->addItem(i18n("Bottom first"), 0);
+    m_view.clip_fieldorder->addItem(i18n("Top first"), 1);
+    if (props.contains("force_tff")) {
+        m_view.clip_force_fieldorder->setChecked(true);
+        m_view.clip_fieldorder->setEnabled(true);
+        m_view.clip_fieldorder->setCurrentIndex(props.value("force_tff").toInt());
+    }
+    connect(m_view.clip_force_fieldorder, SIGNAL(toggled(bool)), this, SLOT(slotModified()));
+    connect(m_view.clip_fieldorder, SIGNAL(currentIndexChanged(int)), this, SLOT(slotModified()));
+    
     if (props.contains("threads") && props.value("threads").toInt() != 1) {
         m_view.clip_force_threads->setChecked(true);
         m_view.clip_threads->setEnabled(true);
@@ -177,6 +187,7 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg
     connect(m_view.clip_force_ar, SIGNAL(toggled(bool)), m_view.clip_ar_den, SLOT(setEnabled(bool)));
     connect(m_view.clip_force_framerate, SIGNAL(toggled(bool)), m_view.clip_framerate, SLOT(setEnabled(bool)));
     connect(m_view.clip_force_progressive, SIGNAL(toggled(bool)), m_view.clip_progressive, SLOT(setEnabled(bool)));
+    connect(m_view.clip_force_fieldorder, SIGNAL(toggled(bool)), m_view.clip_fieldorder, 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)));
@@ -450,6 +461,12 @@ ClipProperties::ClipProperties(QList <DocClipBase *>cliplist, Timecode tc, QMap
         m_view.clip_progressive->setValue(commonproperties.value("force_progressive").toInt());
     }
 
+    if (commonproperties.contains("force_tff") && !commonproperties.value("force_tff").isEmpty()) {
+        m_view.clip_force_fieldorder->setChecked(true);
+        m_view.clip_fieldorder->setEnabled(true);
+        m_view.clip_fieldorder->setCurrentIndex(commonproperties.value("force_tff").toInt());
+    }
+    
     if (commonproperties.contains("threads") && !commonproperties.value("threads").isEmpty() && commonproperties.value("threads").toInt() != 1) {
         m_view.clip_force_threads->setChecked(true);
         m_view.clip_threads->setEnabled(true);
@@ -677,6 +694,15 @@ QMap <QString, QString> ClipProperties::properties()
         props["force_progressive"].clear();
     }
 
+    int fieldOrder = m_view.clip_fieldorder->currentIndex();
+    if (m_view.clip_force_fieldorder->isChecked()) {
+        if (fieldOrder != m_old_props.value("force_tff").toInt()) {
+            props["force_tff"] = QString::number(fieldOrder);
+        }
+    } else if (m_old_props.contains("force_tff")) {
+        props["force_tff"].clear();
+    }
+
     int threads = m_view.clip_threads->value();
     if (m_view.clip_force_threads->isChecked()) {
         if (threads != m_old_props.value("threads").toInt()) {
index 7274898af2c7f3b37e6b2e7447c0542ecb3460b8..4dcf2cd5722b734d2f9b76a918a985ab6992a036 100644 (file)
@@ -528,6 +528,7 @@ Mlt::Producer *DocClipBase::audioProducer(int track)
             m_audioTrackProducers.at(track)->set("force_aspect_ratio", getPixelAspect(m_properties));
         if (m_properties.contains("force_fps")) m_audioTrackProducers.at(track)->set("force_fps", m_properties.value("force_fps").toDouble());
         if (m_properties.contains("force_progressive")) m_audioTrackProducers.at(track)->set("force_progressive", m_properties.value("force_progressive").toInt());
+        if (m_properties.contains("force_tff")) m_audioTrackProducers.at(track)->set("force_tff", m_properties.value("force_tff").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());
@@ -550,6 +551,7 @@ Mlt::Producer *DocClipBase::videoProducer()
             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());
@@ -595,6 +597,7 @@ Mlt::Producer *DocClipBase::producer(int track)
             m_baseTrackProducers[track]->set("force_aspect_raio", getPixelAspect(m_properties));
         if (m_properties.contains("force_fps")) m_baseTrackProducers[track]->set("force_fps", m_properties.value("force_fps").toDouble());
         if (m_properties.contains("force_progressive")) m_baseTrackProducers[track]->set("force_progressive", m_properties.value("force_progressive").toInt());
+        if (m_properties.contains("force_tff")) m_baseTrackProducers[track]->set("force_tff", m_properties.value("force_tff").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());
@@ -934,6 +937,11 @@ void DocClipBase::setProperty(const QString &key, const QString &value)
             m_properties.remove("force_progressive");
             resetProducerProperty("force_progressive");
         } else setProducerProperty("force_progressive", value.toInt());
+    } else if (key == "force_tff") {
+        if (value.isEmpty()) {
+            m_properties.remove("force_tff");
+            resetProducerProperty("force_tff");
+        } else setProducerProperty("force_tff", value.toInt());
     } else if (key == "threads") {
         if (value.isEmpty()) {
             m_properties.remove("threads");
index d976d1ced8c3493dfae8ba1cae09caf6970e4d00..b674b1f9f5d8d1ca5e862d81394cb8b8b1a08681 100644 (file)
@@ -253,6 +253,7 @@ void ProjectList::editClipSelection(QList<QTreeWidgetItem *> list)
     commonproperties.insert("force_aspect_den", "-");
     commonproperties.insert("force_fps", "-");
     commonproperties.insert("force_progressive", "-");
+    commonproperties.insert("force_tff", "-");
     commonproperties.insert("threads", "-");
     commonproperties.insert("video_index", "-");
     commonproperties.insert("audio_index", "-");
index 239a8e06a8b1646189a8707609e2488f923a47c6..8cae1952565f79b6724d2ce1b4715dc1c470f4cf 100644 (file)
@@ -549,6 +549,11 @@ void Render::getFileProperties(const QDomElement xml, const QString &clipId, int
         int progressive = xml.attribute("force_progressive").toInt(&ok);
         if (ok) producer->set("force_progressive", progressive);
     }
+    if (xml.hasAttribute("force_tff")) {
+        bool ok;
+        int fieldOrder = xml.attribute("force_tff").toInt(&ok);
+        if (ok) producer->set("force_tff", fieldOrder);
+    }
     if (xml.hasAttribute("threads")) {
         int threads = xml.attribute("threads").toInt();
         if (threads != 1) producer->set("threads", threads);
@@ -2082,6 +2087,8 @@ int Render::mltChangeClipSpeed(ItemInfo info, ItemInfo speedIndependantInfo, dou
             if (threads != 0) slowprod->set("threads", threads);
             if (original->parent().get("force_progressive"))
                 slowprod->set("force_progressive", original->parent().get_int("force_progressive"));
+            if (original->parent().get("force_tff"))
+                slowprod->set("force_tff", original->parent().get_int("force_tff"));
             int ix = original->parent().get_int("video_index");
             if (ix != 0) slowprod->set("video_index", ix);
             int colorspace = original->parent().get_int("force_colorspace");
@@ -2157,6 +2164,8 @@ int Render::mltChangeClipSpeed(ItemInfo info, ItemInfo speedIndependantInfo, dou
             if (fps != 0.0) slowprod->set("force_fps", fps);
             if (original->parent().get("force_progressive"))
                 slowprod->set("force_progressive", original->parent().get_int("force_progressive"));
+            if (original->parent().get("force_tff"))
+                slowprod->set("force_tff", original->parent().get_int("force_tff"));
             int threads = original->parent().get_int("threads");
             if (threads != 0) slowprod->set("threads", threads);
             int ix = original->parent().get_int("video_index");
index 6f57c3ae5ece063d72644ce2f8481de4cd7a75bf..602fe8ece5566b32fee47a78a2b9094fdc282123 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>306</width>
-    <height>478</height>
+    <width>308</width>
+    <height>507</height>
    </rect>
   </property>
   <property name="windowTitle">
          </item>
         </layout>
        </item>
+       <item row="4" column="1">
+        <widget class="QCheckBox" name="clip_force_fieldorder">
+         <property name="text">
+          <string>Force field order</string>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="2">
+        <widget class="KComboBox" name="clip_fieldorder">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+        </widget>
+       </item>
       </layout>
      </widget>
     </widget>