]> git.sesse.net Git - kdenlive/commitdiff
Implement advanced clip properties (audio_index, video_index, threads). Not working...
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 24 Oct 2008 22:29:05 +0000 (22:29 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Fri, 24 Oct 2008 22:29:05 +0000 (22:29 +0000)
Should fix http://www.kdenlive.org:80/mantis/view.php?id=276

svn path=/branches/KDE4/; revision=2551

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

index 616ce400f53c091c76c137dbc4e3138a9581a097..c13af83a33339c31918751e68cde2dc060436f0d 100644 (file)
@@ -48,13 +48,36 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg
     m_view.clip_path->setText(url.path());
     m_view.clip_description->setText(m_clip->description());
     QMap <QString, QString> props = m_clip->properties();
-    // disable advanced properties until implemented
-    //m_view.tabWidget->widget(ADVANCEDTAB)->setEnabled(false);
+
     if (props.contains("force_aspect_ratio") && props.value("force_aspect_ratio").toDouble() > 0) {
         m_view.clip_force_ar->setChecked(true);
+        m_view.clip_ar->setEnabled(true);
         m_view.clip_ar->setValue(props.value("force_aspect_ratio").toDouble());
     }
 
+    if (props.contains("threads") && props.value("threads").toInt() != 1) {
+        m_view.clip_force_threads->setChecked(true);
+        m_view.clip_threads->setEnabled(true);
+        m_view.clip_threads->setValue(props.value("threads").toInt());
+    }
+
+    if (props.contains("video_index") && props.value("video_index").toInt() != 0) {
+        m_view.clip_force_vindex->setChecked(true);
+        m_view.clip_vindex->setEnabled(true);
+        m_view.clip_vindex->setValue(props.value("video_index").toInt());
+    }
+
+    if (props.contains("audio_index") && props.value("audio_index").toInt() != 0) {
+        m_view.clip_force_aindex->setChecked(true);
+        m_view.clip_aindex->setEnabled(true);
+        m_view.clip_aindex->setValue(props.value("audio_index").toInt());
+    }
+
+    connect(m_view.clip_force_ar, SIGNAL(toggled(bool)), m_view.clip_ar, 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)));
+
     if (props.contains("audiocodec"))
         m_view.clip_acodec->setText(props.value("audiocodec"));
     if (props.contains("frequency"))
@@ -230,6 +253,34 @@ QMap <QString, QString> ClipProperties::properties() {
         props["force_aspect_ratio"] = QString();
         m_clipNeedsRefresh = true;
     }
+
+    int threads = m_view.clip_threads->value();
+    if (m_view.clip_force_threads->isChecked()) {
+        if (threads != old_props.value("threads").toInt()) {
+            props["threads"] = QString::number(threads);
+        }
+    } else if (old_props.contains("threads")) {
+        props["threads"] = QString();
+    }
+
+    int vindex = m_view.clip_vindex->value();
+    if (m_view.clip_force_vindex->isChecked()) {
+        if (vindex != old_props.value("video_index").toInt()) {
+            props["video_index"] = QString::number(vindex);
+        }
+    } else if (old_props.contains("video_index")) {
+        props["video_index"] = QString();
+    }
+
+    int aindex = m_view.clip_aindex->value();
+    if (m_view.clip_force_aindex->isChecked()) {
+        if (aindex != old_props.value("audio_index").toInt()) {
+            props["audio_index"] = QString::number(aindex);
+        }
+    } else if (old_props.contains("audio_index")) {
+        props["audio_index"] = QString();
+    }
+
     if (t == COLOR) {
         QString new_color = m_view.clip_color->color().name();
         if (new_color != QString("#" + old_props.value("colour").right(8).left(6))) {
index 0cfc7646f2e313b77df5b3f0d6b9ab5041746fec..27d8912ad991e61572e0bfe1b4878113f86ba146 100644 (file)
@@ -451,24 +451,8 @@ void DocClipBase::setProperties(QMap <QString, QString> properties) {
     keys << "luma_duration" << "luma_file" << "fade" << "ttl" << "softness";
     while (i.hasNext()) {
         i.next();
-        m_properties.insert(i.key(), i.value());
-        if (i.key() == "resource") m_thumbProd->updateClipUrl(KUrl(i.value()));
-        else if (i.key() == "out") setDuration(GenTime(i.value().toInt(), KdenliveSettings::project_fps()));
-        else if (m_clipType == SLIDESHOW && keys.contains(i.key())) refreshProducer = true;
-        else if (i.key() == "transparency") m_clipProducer->set("transparency", i.value().toInt());
-        else if (i.key() == "colour") {
-            char *tmp = (char *) qstrdup(i.value().toUtf8().data());
-            m_clipProducer->set("colour", tmp);
-            delete[] tmp;
-        } else if (i.key() == "xmldata") {
-            m_clipProducer->set("force_reload", 1);
-        } else if (i.key() == "force_aspect_ratio") {
-            double val = i.value().toDouble();
-            if (val == 0) {
-                m_properties.remove("force_aspect_ratio");
-                m_clipProducer->set("force_aspect_ratio", 0);
-            } else m_clipProducer->set("force_aspect_ratio", val);
-        }
+        setProperty(i.key(), i.value());
+        if (m_clipType == SLIDESHOW && keys.contains(i.key())) refreshProducer = true;
     }
     if (refreshProducer) slotRefreshProducer();
 }
@@ -489,7 +473,25 @@ void DocClipBase::setProperty(const QString &key, const QString &value) {
     } else if (key == "xmldata") {
         m_clipProducer->set("force_reload", 1);
     } else if (key == "force_aspect_ratio") {
-        m_clipProducer->set("force_aspect_ratio", value.toDouble());
+        if (value.isEmpty()) {
+            m_properties.remove("force_aspect_ratio");
+            m_clipProducer->set("force_aspect_ratio", 0);
+        } else m_clipProducer->set("force_aspect_ratio", value.toDouble());
+    } else if (key == "threads") {
+        if (value.isEmpty()) {
+            m_properties.remove("threads");
+            m_clipProducer->set("threads", 1);
+        } else m_clipProducer->set("threads", value.toInt());
+    } else if (key == "video_index") {
+        if (value.isEmpty()) {
+            m_properties.remove("video_index");
+            m_clipProducer->set("video_index", 0);
+        } else m_clipProducer->set("video_index", value.toInt());
+    } else if (key == "audio_index") {
+        if (value.isEmpty()) {
+            m_properties.remove("audio_index");
+            m_clipProducer->set("audio_index", 0);
+        } else m_clipProducer->set("audio_index", value.toInt());
     }
 }
 
index 896556138bc42d190029498a20c85d651b8097dc..40b1a73a054ae911e6c6a293725e4b3b325bd63f 100644 (file)
@@ -102,9 +102,9 @@ MainWindow::MainWindow(const QString &MltPath, QWidget *parent)
         : KXmlGuiWindow(parent),
         m_activeDocument(NULL), m_activeTimeline(NULL), m_renderWidget(NULL),
 #ifndef NO_JOGSHUTTLE
-       m_jogProcess(NULL),
+        m_jogProcess(NULL),
 #endif /* NO_JOGSHUTTLE */
-       m_findActivated(false), m_initialized(false) {
+        m_findActivated(false), m_initialized(false) {
     setlocale(LC_NUMERIC, "POSIX");
     setFont(KGlobalSettings::toolBarFont());
     parseProfiles(MltPath);
@@ -1711,9 +1711,9 @@ void MainWindow::keyPressEvent(QKeyEvent *ke) {
 void MainWindow::hideEvent(QHideEvent *event) {
     // kDebug() << "I was hidden";
     // issue http://www.kdenlive.org/mantis/view.php?id=231
-    if ( this->isMinimized() ) {
+    if (this->isMinimized()) {
         // kDebug() << "I am minimized";
-        if ( m_monitorManager ) m_monitorManager->stopActiveMonitor();
+        if (m_monitorManager) m_monitorManager->stopActiveMonitor();
     }
 }
 
index 3dbf990fdf7916babfa18c09461b2962d01b5f62..c049bd91a96cc21c047fcb63d58d9c650955fb6d 100644 (file)
@@ -498,11 +498,24 @@ void Render::getFileProperties(const QDomElement &xml, const QString &clipId) {
         else {*/
         char *tmp = decodedString(urlpath);
         producer = new Mlt::Producer(*m_mltProfile, tmp);
+        delete[] tmp;
+
         if (xml.hasAttribute("force_aspect_ratio")) {
             double aspect = xml.attribute("force_aspect_ratio").toDouble();
             if (aspect > 0) producer->set("force_aspect_ratio", aspect);
         }
-        delete[] tmp;
+        if (xml.hasAttribute("threads")) {
+            int threads = xml.attribute("threads").toInt();
+            if (threads != 1) producer->set("threads", threads);
+        }
+        if (xml.hasAttribute("video_index")) {
+            int vindex = xml.attribute("video_index").toInt();
+            if (vindex != 0) producer->set("video_index", vindex);
+        }
+        if (xml.hasAttribute("audio_index")) {
+            int aindex = xml.attribute("audio_index").toInt();
+            if (aindex != 0) producer->set("audio_index", aindex);
+        }
         //}
     }
     if (xml.hasAttribute("out")) producer->set_in_and_out(xml.attribute("in").toInt(), xml.attribute("out").toInt());
index 0a42d11bf717baac0523eb31961d1935d3636313..cbf4bfb843714448a8b8f2a29612eb420999da18 100644 (file)
        <string>Advanced</string>
       </attribute>
       <layout class="QGridLayout" name="gridLayout_3" >
-       <item row="0" column="0" >
+       <item row="0" column="1" >
         <widget class="QCheckBox" name="clip_force_ar" >
          <property name="text" >
           <string>Force pixel aspect ratio</string>
          </property>
         </widget>
        </item>
-       <item row="0" column="1" >
-        <widget class="KDoubleNumInput" name="clip_ar" />
-       </item>
-       <item row="1" column="0" >
-        <widget class="QLabel" name="label_4" >
-         <property name="text" >
-          <string>Decoding threads</string>
-         </property>
-        </widget>
-       </item>
-       <item row="1" column="1" >
-        <widget class="QSpinBox" name="clip_threads" >
-         <property name="maximum" >
-          <number>4</number>
-         </property>
-         <property name="value" >
-          <number>1</number>
-         </property>
-        </widget>
-       </item>
-       <item row="2" column="0" >
-        <widget class="QLabel" name="label" >
-         <property name="text" >
-          <string>Video index</string>
+       <item row="0" column="2" >
+        <widget class="KDoubleNumInput" name="clip_ar" >
+         <property name="enabled" >
+          <bool>false</bool>
          </property>
         </widget>
        </item>
-       <item row="2" column="1" >
+       <item row="2" column="2" >
         <widget class="QSpinBox" name="clip_vindex" >
+         <property name="enabled" >
+          <bool>false</bool>
+         </property>
          <property name="minimum" >
           <number>-1</number>
          </property>
-        </widget>
-       </item>
-       <item row="3" column="0" >
-        <widget class="QLabel" name="label_2" >
-         <property name="text" >
-          <string>Audio index</string>
+         <property name="value" >
+          <number>0</number>
          </property>
         </widget>
        </item>
-       <item row="3" column="1" >
+       <item row="3" column="2" >
         <widget class="QSpinBox" name="clip_aindex" >
+         <property name="enabled" >
+          <bool>false</bool>
+         </property>
          <property name="minimum" >
           <number>-1</number>
          </property>
+         <property name="value" >
+          <number>0</number>
+         </property>
         </widget>
        </item>
-       <item row="4" column="1" >
+       <item row="4" column="2" >
         <spacer name="verticalSpacer" >
          <property name="orientation" >
           <enum>Qt::Vertical</enum>
          </property>
         </spacer>
        </item>
+       <item row="1" column="1" >
+        <widget class="QCheckBox" name="clip_force_threads" >
+         <property name="text" >
+          <string>Decoding threads</string>
+         </property>
+        </widget>
+       </item>
+       <item row="2" column="1" >
+        <widget class="QCheckBox" name="clip_force_vindex" >
+         <property name="text" >
+          <string>Video index</string>
+         </property>
+        </widget>
+       </item>
+       <item row="3" column="1" >
+        <widget class="QCheckBox" name="clip_force_aindex" >
+         <property name="text" >
+          <string>Audio index</string>
+         </property>
+        </widget>
+       </item>
+       <item row="1" column="2" >
+        <widget class="QSpinBox" name="clip_threads" >
+         <property name="enabled" >
+          <bool>false</bool>
+         </property>
+         <property name="maximum" >
+          <number>4</number>
+         </property>
+         <property name="value" >
+          <number>1</number>
+         </property>
+        </widget>
+       </item>
       </layout>
+      <zorder>clip_force_ar</zorder>
+      <zorder>clip_ar</zorder>
+      <zorder>label_4</zorder>
+      <zorder>label</zorder>
+      <zorder>clip_vindex</zorder>
+      <zorder>label_2</zorder>
+      <zorder>clip_aindex</zorder>
+      <zorder>clip_force_threads</zorder>
+      <zorder>clip_force_vindex</zorder>
+      <zorder>clip_force_aindex</zorder>
+      <zorder>clip_threads</zorder>
      </widget>
     </widget>
    </item>