]> git.sesse.net Git - kdenlive/blobdiff - src/renderer.cpp
Make sure thumbnails request a width that is a multiple of 2, fixes current thumb...
[kdenlive] / src / renderer.cpp
index 3b4a8957ab7d607f007e18ce966b92b54a07e2bd..a51ef5d4b3c11252c63f2b1c61fcfb5ad3404f04 100644 (file)
@@ -676,7 +676,6 @@ void Render::processFileProperties()
         KUrl url(path);
         Mlt::Producer *producer = NULL;
         CLIPTYPE type = (CLIPTYPE)info.xml.attribute("type").toInt();
-
         if (type == COLOR) {
             producer = new Mlt::Producer(*m_mltProfile, 0, ("colour:" + info.xml.attribute("colour")).toUtf8().constData());
         } else if (type == TEXT) {
@@ -684,15 +683,23 @@ void Render::processFileProperties()
             if (producer && producer->is_valid() && info.xml.hasAttribute("xmldata"))
                 producer->set("xmldata", info.xml.attribute("xmldata").toUtf8().constData());
         } else if (url.isEmpty()) {
+           //WARNING: when is this case used? Not sure it is working.. JBM/
             QDomDocument doc;
             QDomElement mlt = doc.createElement("mlt");
             QDomElement play = doc.createElement("playlist");
+           play.setAttribute("id", "playlist0");
             doc.appendChild(mlt);
             mlt.appendChild(play);
             play.appendChild(doc.importNode(info.xml, true));
+           QDomElement tractor = doc.createElement("tractor");
+           tractor.setAttribute("id", "tractor0");
+           QDomElement track = doc.createElement("track");
+           track.setAttribute("producer", "playlist0");
+           tractor.appendChild(track);
+           mlt.appendChild(tractor);
             producer = new Mlt::Producer(*m_mltProfile, "xml-string", doc.toString().toUtf8().constData());
         } else {
-            producer = new Mlt::Producer(*m_mltProfile, path.toUtf8().constData());
+           producer = new Mlt::Producer(*m_mltProfile, path.toUtf8().constData());
         }
 
         if (producer == NULL || producer->is_blank() || !producer->is_valid()) {
@@ -870,13 +877,16 @@ void Render::processFileProperties()
 
        int vindex = -1;
        const QString mltService = producer->get("mlt_service");
-       
        if (mltService == "xml" || mltService == "consumer") {
-           // MLT playlist
-           mlt_profile prof = producer->get_profile();
-           filePropertyMap["progressive"] = QString::number(prof->progressive);
-           filePropertyMap["colorspace"] = QString::number(prof->colorspace);
-           filePropertyMap["fps"] = QString::number(mlt_profile_fps(prof));
+           // MLT playlist, create producer with blank profile to get real profile info
+           // TODO: is there an easier way to get this info (original source clip profile) from MLT?
+           Mlt::Profile *original_profile = new Mlt::Profile();
+           Mlt::Producer *tmpProd = new Mlt::Producer(*original_profile, path.toUtf8().constData());
+           filePropertyMap["progressive"] = QString::number(original_profile->progressive());
+           filePropertyMap["colorspace"] = QString::number(original_profile->colorspace());
+           filePropertyMap["fps"] = QString::number(original_profile->fps());
+           delete tmpProd;
+           delete original_profile;
        }
        else if (mltService == "avformat") {
            // Get frame rate