#include "kdenlivedoc.h"
#include <KDebug>
-#include <KLocale>
+#include <KLocalizedString>
-CutClipJob::CutClipJob(CLIPTYPE cType, const QString &id, QStringList parameters) : AbstractClipJob(CUTJOB, cType, id, parameters)
+CutClipJob::CutClipJob(ClipType cType, const QString &id, const QStringList ¶meters) : AbstractClipJob(CUTJOB, cType, id, parameters)
{
- jobStatus = JOBWAITING;
+ m_jobStatus = JobWaiting;
m_dest = parameters.at(0);
m_src = parameters.at(1);
m_start = parameters.at(2);
void CutClipJob::startJob()
{
// Special case: playlist clips (.mlt or .kdenlive project files)
- if (clipType == AV || clipType == AUDIO || clipType == VIDEO) {
+ if (clipType == AV || clipType == Audio || clipType == Video) {
QStringList parameters;
- parameters << "-i" << m_src;
+ parameters << QLatin1String("-i") << m_src;
if (!m_start.isEmpty())
- parameters << "-ss" << m_start <<"-t" << m_end;
+ parameters << QLatin1String("-ss") << m_start <<QLatin1String("-t") << m_end;
if (!m_cutExtraParams.isEmpty()) {
- foreach(const QString &s, m_cutExtraParams.split(' '))
+ foreach(const QString &s, m_cutExtraParams.split(QLatin1Char(' ')))
parameters << s;
}
// Make sure we don't block when proxy file already exists
- parameters << "-y";
+ parameters << QLatin1String("-y");
parameters << m_dest;
m_jobProcess = new QProcess;
m_jobProcess->setProcessChannelMode(QProcess::MergedChannels);
- // kDebug()<<"// STARTING CUT JOB: "<<parameters;
- m_jobProcess->start("ffmpeg", parameters);
+ m_jobProcess->start(KdenliveSettings::ffmpegpath(), parameters);
m_jobProcess->waitForStarted();
while (m_jobProcess->state() != QProcess::NotRunning) {
processLogInfo();
- if (jobStatus == JOBABORTED) {
+ if (m_jobStatus == JobAborted) {
m_jobProcess->close();
m_jobProcess->waitForFinished();
QFile::remove(m_dest);
m_jobProcess->waitForFinished(400);
}
- if (jobStatus != JOBABORTED) {
+ if (m_jobStatus != JobAborted) {
int result = m_jobProcess->exitStatus();
if (result == QProcess::NormalExit) {
if (QFileInfo(m_dest).size() == 0) {
// File was not created
processLogInfo();
m_errorMessage.append(i18n("Failed to create file."));
- setStatus(JOBCRASHED);
+ setStatus(JobCrashed);
} else {
- setStatus(JOBDONE);
+ setStatus(JobDone);
}
} else if (result == QProcess::CrashExit) {
// Proxy process crashed
QFile::remove(m_dest);
- setStatus(JOBCRASHED);
+ setStatus(JobCrashed);
}
}
delete m_jobProcess;
} else {
m_errorMessage = i18n("Cannot process this clip type.");
}
- setStatus(JOBCRASHED);
+ setStatus(JobCrashed);
return;
}
void CutClipJob::processLogInfo()
{
- if (!m_jobProcess || m_jobDuration == 0 || jobStatus == JOBABORTED) return;
- QString log = m_jobProcess->readAll();
- if (!log.isEmpty()) m_logDetails.append(log + '\n');
+ if (!m_jobProcess || m_jobDuration == 0 || m_jobStatus == JobAborted) return;
+ QString log = QString::fromUtf8(m_jobProcess->readAll());
+ if (!log.isEmpty()) m_logDetails.append(log + QLatin1Char('\n'));
int progress;
// Parse FFmpeg output
- if (log.contains("frame=")) {
- progress = log.section("frame=", 1, 1).simplified().section(' ', 0, 0).toInt();
+ if (log.contains(QLatin1String("frame="))) {
+ progress = log.section(QLatin1String("frame="), 1, 1).simplified().section(QLatin1Char(' '), 0, 0).toInt();
emit jobProgress(m_clipId, (int) (100.0 * progress / m_jobDuration), jobType);
}
- else if (log.contains("time=")) {
- QString time = log.section("time=", 1, 1).simplified().section(' ', 0, 0);
- if (time.contains(':')) {
- QStringList numbers = time.split(':');
+ else if (log.contains(QLatin1String("time="))) {
+ QString time = log.section(QLatin1String("time="), 1, 1).simplified().section(QLatin1Char(' '), 0, 0);
+ if (time.contains(QLatin1Char(':'))) {
+ QStringList numbers = time.split(QLatin1Char(':'));
progress = numbers.at(0).toInt() * 3600 + numbers.at(1).toInt() * 60 + numbers.at(2).toDouble();
}
else progress = (int) time.toDouble();
const QString CutClipJob::statusMessage()
{
QString statusInfo;
- switch (jobStatus) {
- case JOBWORKING:
+ switch (m_jobStatus) {
+ case JobWorking:
if (m_start.isEmpty()) statusInfo = i18n("Transcoding clip");
else statusInfo = i18n("Extracting clip cut");
break;
- case JOBWAITING:
+ case JobWaiting:
if (m_start.isEmpty()) statusInfo = i18n("Waiting - transcode clip");
else statusInfo = i18n("Waiting - cut clip");
break;
return false;
}
+
+#include "cutclipjob.moc"