From 52c533d9f1e90322bbc57740ddfe7ebccf598fd3 Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Sat, 26 Sep 2009 18:20:21 -0400 Subject: More HandBrake progress --- encodemp4job.cpp | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) (limited to 'encodemp4job.cpp') 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 #include #include #include #include #include +#include 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); } -- cgit v1.2.3-59-g8ed1b