]> git.sesse.net Git - kdenlive/commitdiff
Use MLT's new meta.media.frame_rate_num/den, and show pixel format in clip properties
authorJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 13 Oct 2010 22:08:34 +0000 (22:08 +0000)
committerJean-Baptiste Mardelle <jb@kdenlive.org>
Wed, 13 Oct 2010 22:08:34 +0000 (22:08 +0000)
svn path=/trunk/kdenlive/; revision=4991

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

index 0388a3b91dca93c367a16c8bd565800231aa4cfb..250dfdde9835b1e4c521dbea85a9a061ce9ba534 100644 (file)
@@ -22,6 +22,7 @@
 #include "kdenlivesettings.h"
 #include "kthumb.h"
 #include "markerdialog.h"
+#include "profilesdialog.h"
 
 #include <KStandardDirs>
 #include <KDebug>
@@ -39,13 +40,13 @@ static const int METATAB = 6;
 static const int ADVANCEDTAB = 7;
 
 ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidget * parent) :
-        QDialog(parent),
-        m_clip(clip),
-        m_tc(tc),
-        m_fps(fps),
-        m_count(0),
-        m_clipNeedsRefresh(false),
-        m_clipNeedsReLoad(false)
+    QDialog(parent),
+    m_clip(clip),
+    m_tc(tc),
+    m_fps(fps),
+    m_count(0),
+    m_clipNeedsRefresh(false),
+    m_clipNeedsReLoad(false)
 {
     setFont(KGlobalSettings::toolBarFont());
     m_view.setupUi(this);
@@ -225,9 +226,9 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg
         filters << "*.pgm" << "*.png";
 
         QStringList customLumas = KGlobal::dirs()->findDirs("appdata", "lumas");
-        foreach(const QString &folder, customLumas) {
+        foreach(const QString & folder, customLumas) {
             QStringList filesnames = QDir(folder).entryList(filters, QDir::Files);
-            foreach(const QString &fname, filesnames) {
+            foreach(const QString & fname, filesnames) {
                 QString filePath = KUrl(folder).path(KUrl::AddTrailingSlash) + fname;
                 m_view.luma_file->addItem(KIcon(filePath), fname, filePath);
             }
@@ -239,7 +240,7 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg
         folder.append("/lumas/PAL"); // TODO: cleanup the PAL / NTSC mess in luma files
         QDir lumafolder(folder);
         QStringList filesnames = lumafolder.entryList(filters, QDir::Files);
-        foreach(const QString &fname, filesnames) {
+        foreach(const QString & fname, filesnames) {
             QString filePath = KUrl(folder).path(KUrl::AddTrailingSlash) + fname;
             m_view.luma_file->addItem(KIcon(filePath), fname, filePath);
         }
@@ -266,6 +267,10 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg
             m_view.clip_fps->setText(props.value("fps"));
             if (!m_view.clip_framerate->isEnabled()) m_view.clip_framerate->setValue(props.value("fps").toDouble());
         }
+        if (props.contains("pix_fmt")) {
+            m_view.clip_pixfmt->setText(props.value("pix_fmt"));
+        } else m_view.clip_pixfmt->setEnabled(false);
+
         if (props.contains("aspect_ratio"))
             m_view.clip_ratio->setText(props.value("aspect_ratio"));
         int width = 180.0 * KdenliveSettings::project_display_ratio();
@@ -314,13 +319,13 @@ ClipProperties::ClipProperties(DocClipBase *clip, Timecode tc, double fps, QWidg
 
 // Used for multiple clips editing
 ClipProperties::ClipProperties(QList <DocClipBase *>cliplist, Timecode tc, QMap <QString, QString> commonproperties, QWidget * parent) :
-        QDialog(parent),
-        m_clip(NULL),
-        m_tc(tc),
-        m_fps(0),
-        m_count(0),
-        m_clipNeedsRefresh(false),
-        m_clipNeedsReLoad(false)
+    QDialog(parent),
+    m_clip(NULL),
+    m_tc(tc),
+    m_fps(0),
+    m_count(0),
+    m_clipNeedsRefresh(false),
+    m_clipNeedsReLoad(false)
 {
     setFont(KGlobalSettings::toolBarFont());
     m_view.setupUi(this);
@@ -593,17 +598,17 @@ QMap <QString, QString> ClipProperties::properties()
         if (m_old_props.value("fade") != value) props["fade"] = value;
         value = QString::number((int) m_view.luma_softness->value());
         if (m_old_props.value("softness") != value) props["softness"] = value;
-       
-       bool isMime = !(m_view.clip_path->text().contains('%'));
-       if (isMime) {
-           QString extension = "/.all." + m_view.image_type->itemData(m_view.image_type->currentIndex()).toString();
-           QString new_path = m_view.clip_path->text() + extension;
-           if (new_path != m_old_props.value("resource")) {
-               m_clipNeedsReLoad = true;
-               props["resource"] = new_path;
-               kDebug() << "////  SLIDE EDIT, NEW:" << new_path << ", OLD; " << m_old_props.value("resource");
-           }
-       }
+
+        bool isMime = !(m_view.clip_path->text().contains('%'));
+        if (isMime) {
+            QString extension = "/.all." + m_view.image_type->itemData(m_view.image_type->currentIndex()).toString();
+            QString new_path = m_view.clip_path->text() + extension;
+            if (new_path != m_old_props.value("resource")) {
+                m_clipNeedsReLoad = true;
+                props["resource"] = new_path;
+                kDebug() << "////  SLIDE EDIT, NEW:" << new_path << ", OLD; " << m_old_props.value("resource");
+            }
+        }
         int duration;
         if (m_view.slide_duration_format->currentIndex() == 1) {
             // we are in frames mode
@@ -693,7 +698,7 @@ void ClipProperties::parseFolder()
         QString regexp = "^" + filter + "\\d+\\." + ext + "$";
         QRegExp rx(regexp);
         QStringList entries;
-        foreach(const QString &path, result) {
+        foreach(const QString & path, result) {
             if (rx.exactMatch(path)) entries << path;
         }
         result = entries;
index 1cfec82f495283774efda6f405f764c39131a557..50ce0274689efea44be11f076ef4fdbdb6511b0b 100644 (file)
@@ -104,10 +104,6 @@ Render::Render(const QString & rendererName, int winid, QString profile, QWidget
     m_blackClip(NULL),
     m_winid(winid)
 {
-    /*if (rendererName == "project") m_monitorId = 10000;
-    else m_monitorId = 10001;*/
-    /*m_osdTimer = new QTimer(this);
-    connect(m_osdTimer, SIGNAL(timeout()), this, SLOT(slotOsdTimeout()));*/
     if (profile.isEmpty()) profile = KdenliveSettings::current_profile();
     buildConsumer(profile);
 
@@ -638,8 +634,9 @@ void Render::getFileProperties(const QDomElement xml, const QString &clipId, int
         }
     }
 
-
-    filePropertyMap["fps"] = producer->get("source_fps");
+    if (producer->get_double("meta.media.frame_rate_den") > 0) {
+        filePropertyMap["fps"] = QString::number(producer->get_double("meta.media.frame_rate_num") / producer->get_double("meta.media.frame_rate_den"));
+    } else filePropertyMap["fps"] = producer->get("source_fps");
 
     if (frame && frame->is_valid()) {
         filePropertyMap["frame_size"] = QString::number(frame->get_int("width")) + 'x' + QString::number(frame->get_int("height"));
@@ -720,6 +717,9 @@ void Render::getFileProperties(const QDomElement xml, const QString &clipId, int
             if (producer->get(property))
                 filePropertyMap["videocodec"] = producer->get(property);
         }
+        QString query;
+        query = QString("meta.media.%1.codec.pix_fmt").arg(default_video);
+        filePropertyMap["pix_fmt"] = producer->get(query.toUtf8().constData());
 
         if (KdenliveSettings::dropbframes()) {
             kDebug() << "// LOOKING FOR H264 on: " << default_video;
@@ -1364,8 +1364,6 @@ void Render::emitConsumerStopped()
         if (m_isLoopMode) play(m_loopStart);
         else if (m_isZoneMode) resetZoneMode();
         emit rendererStopped((int) pos);
-        //if (qApp->activeWindow()) QApplication::postEvent(qApp->activeWindow(), new PositionChangeEvent(GenTime((int) pos, m_fps), m_monitorId + 100));
-        //new QCustomEvent(10002));
     }
 }
 
@@ -1428,20 +1426,20 @@ void Render::showAudio(Mlt::Frame& frame)
     int16_t* data = (int16_t*)frame.get_audio(audio_format, freq, num_channels, samples);
     if (!data)
         return;
-    int num_samples = samples>200?200:samples;
+    int num_samples = samples > 200 ? 200 : samples;
     QByteArray channels;
     for (int i = 0; i < num_channels; i++) {
         long val = 0;
-        for (int s = 0; s < num_samples; s ++ ) {
-            val += abs(data[i+s*num_channels]/128);
+        for (int s = 0; s < num_samples; s ++) {
+            val += abs(data[i+s*num_channels] / 128);
         }
-        channels.append(val/num_samples);
+        channels.append(val / num_samples);
     }
 
 
     if (samples > 0)
         emit showAudioSignal(channels);
-    else 
+    else
         emit showAudioSignal(QByteArray());
 }
 
index ed1698341bd4bdd5373e6dc15cb9eceff51628be..5898364481d171c87cf1f276c13f41efbb0bfed3 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>306</width>
-    <height>478</height>
+    <width>284</width>
+    <height>458</height>
    </rect>
   </property>
   <property name="windowTitle">
          </property>
         </widget>
        </item>
-       <item row="4" column="2">
+       <item row="5" column="2">
         <spacer name="verticalSpacer_2">
          <property name="orientation">
           <enum>Qt::Vertical</enum>
          </property>
         </spacer>
        </item>
+       <item row="4" column="0">
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string>Pixel format</string>
+         </property>
+        </widget>
+       </item>
+       <item row="4" column="2">
+        <widget class="KLineEdit" name="clip_pixfmt"/>
+       </item>
       </layout>
      </widget>
      <widget class="QWidget" name="tab_audio">