From: <j-...@us...> - 2009-03-02 22:23:59
|
Revision: 3082 http://kdenlive.svn.sourceforge.net/kdenlive/?rev=3082&view=rev Author: j-b-m Date: 2009-03-02 22:23:52 +0000 (Mon, 02 Mar 2009) Log Message: ----------- Enable 2 pass encoding for rendering. All you need to do is add "pass=2" to the rendering arguments Modified Paths: -------------- branches/KDE4/renderer/kdenlive_render.cpp branches/KDE4/renderer/renderjob.cpp branches/KDE4/renderer/renderjob.h Modified: branches/KDE4/renderer/kdenlive_render.cpp =================================================================== --- branches/KDE4/renderer/kdenlive_render.cpp 2009-03-02 10:03:41 UTC (rev 3081) +++ branches/KDE4/renderer/kdenlive_render.cpp 2009-03-02 22:23:52 UTC (rev 3082) @@ -68,9 +68,22 @@ args.takeFirst(); QString dest = args.at(0); args.takeFirst(); + bool dualpass = false; + bool doerase; + if (args.contains("pass=2")) { + // dual pass encoding + dualpass = true; + doerase = false; + args.replace(args.indexOf("pass=2"), "pass=1"); + } else doerase = erase; qDebug() << "//STARTING RENDERING: " << erase << "," << usekuiserver << "," << render << "," << profile << "," << rendermodule << "," << player << "," << src << "," << dest << "," << preargs << "," << args << "," << in << "," << out ; - RenderJob *job = new RenderJob(erase, usekuiserver, render, profile, rendermodule, player, src, dest, preargs, args, in, out); + RenderJob *job = new RenderJob(doerase, usekuiserver, render, profile, rendermodule, player, src, dest, preargs, args, in, out); job->start(); + if (dualpass) { + args.replace(args.indexOf("pass=1"), "pass=2"); + RenderJob *dualjob = new RenderJob(erase, usekuiserver, render, profile, rendermodule, player, src, dest, preargs, args, in, out); + QObject::connect(job, SIGNAL(renderingFinished()), dualjob, SLOT(start())); + } app.exec(); } else { fprintf(stderr, "Kdenlive video renderer for MLT.\nUsage: " Modified: branches/KDE4/renderer/renderjob.cpp =================================================================== --- branches/KDE4/renderer/renderjob.cpp 2009-03-02 10:03:41 UTC (rev 3081) +++ branches/KDE4/renderer/renderjob.cpp 2009-03-02 22:23:52 UTC (rev 3082) @@ -44,6 +44,7 @@ m_args << scenelist; if (in != -1) m_args << "in=" + QString::number(in); if (out != -1) m_args << "out=" + QString::number(out); + m_args << preargs; //qDebug()<<"PRE ARGS: "<<preargs; if (scenelist.startsWith("consumer:")) { @@ -51,6 +52,10 @@ m_args << "profile=" + profile; } else m_args << "-profile" << profile; m_args << "-consumer" << rendermodule + ":" + m_dest << "progress=1" << args; + + m_dualpass = false; + if (args.contains("pass=1")) m_dualpass = true; + connect(m_renderProcess, SIGNAL(finished(int, QProcess::ExitStatus)), this, SLOT(slotIsOver(int, QProcess::ExitStatus))); m_renderProcess->setReadChannel(QProcess::StandardError); @@ -239,14 +244,15 @@ // m_logstream << "Rendering of " << m_dest << " aborted, resulting video will probably be corrupted." << endl; qDebug() << "Rendering of " << m_dest << " aborted, resulting video will probably be corrupted."; QProcess::startDetached("kdialog", args); + qApp->quit(); } else { - if (m_kdenliveinterface) { + if (!m_dualpass && m_kdenliveinterface) { m_dbusargs[1] = (int) - 1; m_dbusargs.append(QString()); m_kdenliveinterface->callWithArgumentList(QDBus::NoBlock, "setRenderingFinished", m_dbusargs); } QDBusConnectionInterface* interface = QDBusConnection::sessionBus().interface(); - if (interface && interface->isServiceRegistered("org.kde.knotify")) { + if (!m_dualpass && interface && interface->isServiceRegistered("org.kde.knotify")) { QDBusMessage m = QDBusMessage::createMethodCall("org.kde.knotify", "/Notify", "org.kde.KNotify", @@ -268,14 +274,17 @@ } // m_logstream << "Rendering of " << m_dest << " finished" << endl; qDebug() << "Rendering of " << m_dest << " finished"; - if (m_player != "-") { + if (!m_dualpass && m_player != "-") { // m_logstream << "Starting player" << endl; QStringList args; args << m_dest; QProcess::startDetached(m_player, args); } + if (m_dualpass) { + emit renderingFinished(); + deleteLater(); + } else qApp->quit(); } - qApp->quit(); } #include "renderjob.moc" Modified: branches/KDE4/renderer/renderjob.h =================================================================== --- branches/KDE4/renderer/renderjob.h 2009-03-02 10:03:41 UTC (rev 3081) +++ branches/KDE4/renderer/renderjob.h 2009-03-02 22:23:52 UTC (rev 3082) @@ -31,9 +31,12 @@ class RenderJob : public QObject { Q_OBJECT + public: RenderJob(bool erase, bool usekuiserver, const QString &renderer, const QString &profile, const QString &rendermodule, const QString &player, const QString &scenelist, const QString &dest, const QStringList &preargs, const QStringList &args, int in = -1, int out = -1); ~RenderJob(); + +public slots: void start(); private slots: @@ -52,6 +55,7 @@ QString m_player; QStringList m_args; bool m_erase; + bool m_dualpass; QDBusInterface *m_jobUiserver; QDBusInterface *m_kdenliveinterface; QList<QVariant> m_dbusargs; @@ -62,6 +66,9 @@ QTemporaryFile m_logfile; /** \brief Used to write to the log file */ QTextStream m_logstream; + +signals: + void renderingFinished(); }; #endif This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |