summaryrefslogtreecommitdiffstats
path: root/encodemp4job.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'encodemp4job.cpp')
-rw-r--r--encodemp4job.cpp37
1 files changed, 29 insertions, 8 deletions
diff --git a/encodemp4job.cpp b/encodemp4job.cpp
index d056002..dba84f4 100644
--- a/encodemp4job.cpp
+++ b/encodemp4job.cpp
@@ -1,10 +1,12 @@
#include "encodemp4job.h"
+#include "encodemp4jobgui.h"
#include <QWidget>
#include <QLabel>
#include <QProcess>
#include <QStringList>
#include <QTextStream>
#include <QRegExp>
+#include <QTime>
EncodeMP4Job::EncodeMP4Job(Video *video, QString encodePath, QString imagePath) :
Job(video),
@@ -24,29 +26,48 @@ bool EncodeMP4Job::executeJob()
arguments << "-o" << m_encodePath;
arguments << "-e" << "x264";
arguments << "-b" << "500";
+ arguments << "-2" << "-T";
arguments << "-E" << "faac";
arguments << "-B" << "96";
arguments << "-R" << "auto";
arguments << "-6" << "stereo";
arguments << "-N" << "eng" << "--native-dub";
arguments << "-f" << "mp4";
- arguments << "-P" << "-2" << "-T";
+ arguments << "--loose-anamorphic" << "--modulus" << "16";
arguments << "--optimize" << "--decomb" << "--deblock" << "--denoise=\"weak\"";
arguments << "-x" << "ref=3:mixed-refs:bframes=6:weightb:direct=auto:b-pyramid:me=umh:subme=9:analyse=all:8x8dct:trellis=1:no-fast-pskip:psy-rd=1,1";
- process.start(QLatin1String("HandBrakeCLI"), arguments, QIODevice::ReadOnly);
+ qDebug() << "starting handbreak with arguments:" << arguments;
+ //process.setStandardErrorFile("/home/zx2c4/Desktop/error.log");
+ //process.setStandardOutputFile("/home/zx2c4/Desktop/out.log");
+ process.start(QLatin1String("./HandBrakeCLI"), arguments, QIODevice::ReadOnly);
if (!process.waitForStarted())
return false;
QTextStream reader(&process);
- QRegExp percentLinePattern(QLatin1String("^Encoding: task ([0-9]*) of ([0-9]*), ([0-9]*\\.[0-9]*) %( \\(([0-9]*\\.[0-9]*) fps, avg ([0-9]*\\.[0-9]*) fps, ETA ([0-9]{2})h([0-9]{2})m([0-9]{2})s\\))?"));
+ QRegExp percentLinePattern(QLatin1String("^Encoding: task ([0-9]*) of ([0-9]*), ([0-9]*\\.[0-9]*) % (\\(([0-9]*\\.[0-9]*) fps, avg ([0-9]*\\.[0-9]*) fps, ETA ([0-9]{2})h([0-9]{2})m([0-9]{2})s\\))?"));
+ QRegExp lessPercentLinePattern(QLatin1String("^Encoding: task ([0-9]*) of ([0-9]*), ([0-9]*\\.[0-9]*) %"));
while (process.waitForReadyRead(-1)) {
- if (percentLinePattern.exactMatch(reader.readLine())) {
- qDebug() << percentLinePattern.capturedTexts(); //cap(n)
+ QString line = reader.readLine().trimmed();
+ if (percentLinePattern.exactMatch(line)) {
+ QStringList captured = percentLinePattern.capturedTexts();
+ int currentTask = captured.at(1).toInt();
+ int totalTasks = captured.at(2).toInt();
+ float percent = captured.at(3).toFloat();
+ float currentFps = captured.at(5).toFloat();
+ float avgFps = captured.at(6).toFloat();
+ QTime timeRemaining(captured.at(7).toInt(), captured.at(8).toInt(), captured.at(9).toInt());
+ emit encodeProgress(currentTask, totalTasks, percent, currentFps, avgFps, timeRemaining);
+ } else if(lessPercentLinePattern.exactMatch(line)) {
+ QStringList captured = lessPercentLinePattern.capturedTexts();
+ int currentTask = captured.at(1).toInt();
+ int totalTasks = captured.at(2).toInt();
+ float percent = captured.at(3).toFloat();
+ emit encodeProgress(currentTask, totalTasks, percent, -1, -1, QTime());
}
}
- return process.waitForFinished(-1);
+ process.waitForFinished(-1);
+ return process.exitStatus() == QProcess::NormalExit;
}
QWidget* EncodeMP4Job::gui()
{
- //TODO: make a gui
- return new QLabel("Encode mp4 place holder, foo!");
+ return new EncodeMP4JobGui(this);
}