- setProxyStatus(processingItems.at(i), CREATINGPROXY);
-
- // Special case: playlist clips (.mlt or .kdenlive project files)
- if (info.type == PLAYLIST) {
- // change FFmpeg params to MLT format
- QStringList parameters;
- parameters << info.src;
- parameters << "-consumer" << "avformat:" + info.dest;
- QStringList params = m_doc->getDocumentProperty("proxyparams").simplified().split('-', QString::SkipEmptyParts);
-
- foreach(QString s, params) {
- s = s.simplified();
- if (s.count(' ') == 0) {
- s.append("=1");
- }
- else s.replace(' ', '=');
- parameters << s;
- }
-
- parameters.append(QString("real_time=-%1").arg(KdenliveSettings::mltthreads()));
-
- //TODO: currently, when rendering an xml file through melt, the display ration is lost, so we enforce it manualy
- double display_ratio = KdenliveDoc::getDisplayRatio(info.src);
- parameters << "aspect=" + QString::number(display_ratio);
-
- //kDebug()<<"TRANSCOD: "<<parameters;
- QProcess myProcess;
- myProcess.setProcessChannelMode(QProcess::MergedChannels);
- myProcess.start(KdenliveSettings::rendererpath(), parameters);
- myProcess.waitForStarted();
- int result = -1;
- int duration = 0;
- while (myProcess.state() != QProcess::NotRunning) {
- // building proxy file
- if (m_abortProxy.contains(info.dest) || m_abortAllProxies) {
- myProcess.close();
- myProcess.waitForFinished();
- QFile::remove(info.dest);
- m_abortProxy.removeAll(info.dest);
- m_processingProxy.removeAll(info.dest);
- for (int i = 0; i < processingItems.count(); i++)
- setProxyStatus(processingItems.at(i), NOPROXY);
- result = -2;
- }
- else {
- QString log = QString(myProcess.readAll());
- processLogInfo(processingItems, &duration, log);
- }
- myProcess.waitForFinished(500);
- }
- myProcess.waitForFinished();
- m_processingProxy.removeAll(info.dest);
- if (result == -1) result = myProcess.exitStatus();
- if (result == 0) {
- // proxy successfully created
- for (int i = 0; i < processingItems.count(); i++)
- setProxyStatus(processingItems.at(i), PROXYDONE);
- slotGotProxy(info.dest);
- }
- else if (result == 1) {
- // Proxy process crashed
- QFile::remove(info.dest);
- for (int i = 0; i < processingItems.count(); i++)
- setProxyStatus(processingItems.at(i), PROXYCRASHED);
- }
- continue;
- }
-
- if (info.type == IMAGE) {
- // Image proxy
- QImage i(info.src);
- if (i.isNull()) {
- // Cannot load image
- for (int i = 0; i < processingItems.count(); i++)
- setProxyStatus(processingItems.at(i), PROXYCRASHED);
- continue;