Added option to use 64-Bit Avisynth/Avs2YUV.
This commit is contained in:
parent
ccfe3910ba
commit
a4d8e6e8bc
@ -369,6 +369,9 @@
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QDoubleSpinBox" name="spinQuantizer">
|
||||
<property name="toolTip">
|
||||
<string>Select the quantizer or CRF value. Smaller value means better quality, but bigger file. Higher value means smaller file, but lower quality. A value of '0' triggers lossless mode.</string>
|
||||
</property>
|
||||
<property name="decimals">
|
||||
<number>1</number>
|
||||
</property>
|
||||
|
@ -9,8 +9,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>378</width>
|
||||
<height>193</height>
|
||||
<width>379</width>
|
||||
<height>226</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
@ -47,6 +47,65 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="0" rowspan="6">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>8</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="6" rowspan="6">
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>12</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="2" colspan="4">
|
||||
<widget class="QLabel" name="labelRunNextJob">
|
||||
<property name="text">
|
||||
<string>Automatically launch next job when a running job completes</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="checkRunNextJob">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="5">
|
||||
<spacer name="horizontalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="2" column="4">
|
||||
<widget class="QSpinBox" name="spinBoxJobCount">
|
||||
<property name="enabled">
|
||||
@ -69,65 +128,17 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="5">
|
||||
<spacer name="horizontalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
<item row="4" column="1">
|
||||
<widget class="QCheckBox" name="checkUse64BitAvs2YUV">
|
||||
<property name="toolTip">
|
||||
<string>If this option is un-checked (default), then 32-Bit Avisynth will be used - even when using 64-Bit x264.
|
||||
Please be aware that this option does NOT have any effect on 32-Bit systems.</string>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="1">
|
||||
<widget class="QCheckBox" name="checkRunNextJob">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="2" colspan="4">
|
||||
<widget class="QLabel" name="labelRunNextJob">
|
||||
<property name="text">
|
||||
<string>Automatically launch next job when a running job completes</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="1" column="6" rowspan="4">
|
||||
<spacer name="horizontalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>12</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="1" column="0" rowspan="4">
|
||||
<spacer name="horizontalSpacer_2">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>8</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="3" column="1" colspan="5">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
@ -144,14 +155,14 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="4" column="1">
|
||||
<item row="6" column="1">
|
||||
<widget class="QCheckBox" name="checkShutdownComputer">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="2" colspan="4">
|
||||
<item row="6" column="2" colspan="4">
|
||||
<widget class="QLabel" name="labelShutdownComputer">
|
||||
<property name="text">
|
||||
<string>Shutdown computer as soon as the last job has completed</string>
|
||||
@ -174,7 +185,7 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="5" column="1" colspan="5">
|
||||
<item row="7" column="1" colspan="5">
|
||||
<spacer name="verticalSpacer_3">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
@ -190,6 +201,33 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="4" column="2" colspan="4">
|
||||
<widget class="QLabel" name="labelUse64BitAvs2YUV">
|
||||
<property name="toolTip">
|
||||
<string>If this option is un-checked (default), then 32-Bit Avisynth will be used - even when using 64-Bit x264.
|
||||
Please be aware that this option does NOT have any effect on 32-Bit systems.</string>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Use 64-Bit Avisynth/Avs2YUV, if running on a 64-Bit machine</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="2" colspan="4">
|
||||
<spacer name="verticalSpacer_4">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeType">
|
||||
<enum>QSizePolicy::Fixed</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>8</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
</layout>
|
||||
@ -219,7 +257,7 @@
|
||||
</size>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Close</string>
|
||||
<string>Apply</string>
|
||||
</property>
|
||||
<property name="icon">
|
||||
<iconset resource="../res/resources.qrc">
|
||||
|
@ -67,14 +67,15 @@ static const unsigned int REV_MULT = 10000;
|
||||
// Constructor & Destructor
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
EncodeThread::EncodeThread(const QString &sourceFileName, const QString &outputFileName, const OptionsModel *options, const QString &binDir, bool x64)
|
||||
EncodeThread::EncodeThread(const QString &sourceFileName, const QString &outputFileName, const OptionsModel *options, const QString &binDir, bool x264_x64, bool avs2yuv_x64)
|
||||
:
|
||||
m_jobId(QUuid::createUuid()),
|
||||
m_sourceFileName(sourceFileName),
|
||||
m_outputFileName(outputFileName),
|
||||
m_options(new OptionsModel(*options)),
|
||||
m_binDir(binDir),
|
||||
m_x64(x64),
|
||||
m_x264_x64(x264_x64),
|
||||
m_avs2yuv_x64(avs2yuv_x64),
|
||||
m_handle_jobObject(NULL),
|
||||
m_semaphorePaused(0)
|
||||
{
|
||||
@ -186,14 +187,14 @@ void EncodeThread::encode(void)
|
||||
log(tr("\n--- CHECK VERSION ---\n"));
|
||||
unsigned int revision_x264 = UINT_MAX;
|
||||
bool x264_modified = false;
|
||||
ok = ((revision_x264 = checkVersionX264(m_x64, x264_modified)) != UINT_MAX);
|
||||
ok = ((revision_x264 = checkVersionX264(m_x264_x64, x264_modified)) != UINT_MAX);
|
||||
CHECK_STATUS(m_abort, ok);
|
||||
|
||||
//Checking avs2yuv version
|
||||
unsigned int revision_avs2yuv = UINT_MAX;
|
||||
if(usePipe)
|
||||
{
|
||||
ok = ((revision_avs2yuv = checkVersionAvs2yuv()) != UINT_MAX);
|
||||
ok = ((revision_avs2yuv = checkVersionAvs2yuv(m_avs2yuv_x64)) != UINT_MAX);
|
||||
CHECK_STATUS(m_abort, ok);
|
||||
}
|
||||
|
||||
@ -225,7 +226,7 @@ void EncodeThread::encode(void)
|
||||
if(usePipe)
|
||||
{
|
||||
log(tr("\n--- AVS INFO ---\n"));
|
||||
ok = checkProperties(frames);
|
||||
ok = checkProperties(m_avs2yuv_x64, frames);
|
||||
CHECK_STATUS(m_abort, ok);
|
||||
}
|
||||
|
||||
@ -245,17 +246,17 @@ void EncodeThread::encode(void)
|
||||
}
|
||||
|
||||
log(tr("\n--- PASS 1 ---\n"));
|
||||
ok = runEncodingPass(m_x64, usePipe, frames, indexFile, 1, passLogFile);
|
||||
ok = runEncodingPass(m_x264_x64, m_avs2yuv_x64, usePipe, frames, indexFile, 1, passLogFile);
|
||||
CHECK_STATUS(m_abort, ok);
|
||||
|
||||
log(tr("\n--- PASS 2 ---\n"));
|
||||
ok = runEncodingPass(m_x64, usePipe, frames, indexFile, 2, passLogFile);
|
||||
ok = runEncodingPass(m_x264_x64, m_avs2yuv_x64, usePipe, frames, indexFile, 2, passLogFile);
|
||||
CHECK_STATUS(m_abort, ok);
|
||||
}
|
||||
else
|
||||
{
|
||||
log(tr("\n--- ENCODING ---\n"));
|
||||
ok = runEncodingPass(m_x64, usePipe, frames, indexFile);
|
||||
ok = runEncodingPass(m_x264_x64, m_avs2yuv_x64, usePipe, frames, indexFile);
|
||||
CHECK_STATUS(m_abort, ok);
|
||||
}
|
||||
|
||||
@ -266,7 +267,7 @@ void EncodeThread::encode(void)
|
||||
setStatus(JobStatus_Completed);
|
||||
}
|
||||
|
||||
bool EncodeThread::runEncodingPass(bool x64, bool usePipe, unsigned int frames, const QString &indexFile, int pass, const QString &passLogFile)
|
||||
bool EncodeThread::runEncodingPass(bool x264_x64, bool avs2yuv_x64, bool usePipe, unsigned int frames, const QString &indexFile, int pass, const QString &passLogFile)
|
||||
{
|
||||
QProcess processEncode, processAvisynth;
|
||||
|
||||
@ -278,7 +279,7 @@ bool EncodeThread::runEncodingPass(bool x64, bool usePipe, unsigned int frames,
|
||||
processAvisynth.setStandardOutputProcess(&processEncode);
|
||||
|
||||
log("Creating Avisynth process:");
|
||||
if(!startProcess(processAvisynth, QString("%1/avs2yuv.exe").arg(m_binDir), cmdLine_Avisynth, false))
|
||||
if(!startProcess(processAvisynth, QString("%1/%2.exe").arg(m_binDir, avs2yuv_x64 ? "avs2yuv_x64" : "avs2yuv"), cmdLine_Avisynth, false))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -287,7 +288,7 @@ bool EncodeThread::runEncodingPass(bool x64, bool usePipe, unsigned int frames,
|
||||
QStringList cmdLine_Encode = buildCommandLine(usePipe, frames, indexFile, pass, passLogFile);
|
||||
|
||||
log("Creating x264 process:");
|
||||
if(!startProcess(processEncode, QString("%1/%2.exe").arg(m_binDir, x64 ? "x264_x64" : "x264"), cmdLine_Encode))
|
||||
if(!startProcess(processEncode, QString("%1/%2.exe").arg(m_binDir, x264_x64 ? "x264_x64" : "x264"), cmdLine_Encode))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
@ -624,12 +625,12 @@ unsigned int EncodeThread::checkVersionX264(bool x64, bool &modified)
|
||||
return (coreVers * REV_MULT) + (revision % REV_MULT);
|
||||
}
|
||||
|
||||
unsigned int EncodeThread::checkVersionAvs2yuv(void)
|
||||
unsigned int EncodeThread::checkVersionAvs2yuv(bool x64)
|
||||
{
|
||||
QProcess process;
|
||||
|
||||
log("\nCreating process:");
|
||||
if(!startProcess(process, QString("%1/avs2yuv.exe").arg(m_binDir), QStringList()))
|
||||
if(!startProcess(process, QString("%1/%2.exe").arg(m_binDir, x64 ? "avs2yuv_x64" : "avs2yuv"), QStringList()))
|
||||
{
|
||||
return false;;
|
||||
}
|
||||
@ -724,7 +725,7 @@ unsigned int EncodeThread::checkVersionAvs2yuv(void)
|
||||
return (ver_maj * REV_MULT) + ((ver_min % REV_MULT) * 10) + (ver_mod % 10);
|
||||
}
|
||||
|
||||
bool EncodeThread::checkProperties(unsigned int &frames)
|
||||
bool EncodeThread::checkProperties(bool x64, unsigned int &frames)
|
||||
{
|
||||
QProcess process;
|
||||
|
||||
@ -732,7 +733,7 @@ bool EncodeThread::checkProperties(unsigned int &frames)
|
||||
cmdLine << QDir::toNativeSeparators(m_sourceFileName) << "NUL";
|
||||
|
||||
log("Creating process:");
|
||||
if(!startProcess(process, QString("%1/avs2yuv.exe").arg(m_binDir), cmdLine))
|
||||
if(!startProcess(process, QString("%1/%2.exe").arg(m_binDir, x64 ? "avs2yuv_x64" : "avs2yuv"), cmdLine))
|
||||
{
|
||||
return false;;
|
||||
}
|
||||
@ -808,6 +809,10 @@ bool EncodeThread::checkProperties(unsigned int &frames)
|
||||
{
|
||||
log(text);
|
||||
}
|
||||
if(text.contains("failed to load avisynth.dll", Qt::CaseInsensitive))
|
||||
{
|
||||
log(tr("\nWarning: It seems that %1-Bit Avisynth is not currently installed !!!").arg(x64 ? "64" : "32"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -53,7 +53,7 @@ public:
|
||||
JobStatus_Undefined = 666
|
||||
};
|
||||
|
||||
EncodeThread(const QString &sourceFileName, const QString &outputFileName, const OptionsModel *options, const QString &binDir, bool x64);
|
||||
EncodeThread(const QString &sourceFileName, const QString &outputFileName, const OptionsModel *options, const QString &binDir, bool x264_x64, bool avs2yuv_x64);
|
||||
~EncodeThread(void);
|
||||
|
||||
QUuid getId(void) { return this->m_jobId; };
|
||||
@ -87,7 +87,8 @@ protected:
|
||||
const QString m_outputFileName;
|
||||
const OptionsModel *m_options;
|
||||
const QString m_binDir;
|
||||
const bool m_x64;
|
||||
const bool m_x264_x64;
|
||||
const bool m_avs2yuv_x64;
|
||||
|
||||
//Flags
|
||||
volatile bool m_abort;
|
||||
@ -109,11 +110,11 @@ protected:
|
||||
|
||||
//Encode functions
|
||||
void encode(void);
|
||||
bool runEncodingPass(bool x64, bool usePipe, unsigned int frames, const QString &indexFile, int pass = 0, const QString &passLogFile = QString());
|
||||
bool runEncodingPass(bool x264_x64, bool avs2yuv_x64, bool usePipe, unsigned int frames, const QString &indexFile, int pass = 0, const QString &passLogFile = QString());
|
||||
QStringList buildCommandLine(bool usePipe, unsigned int frames, const QString &indexFile, int pass = 0, const QString &passLogFile = QString());
|
||||
unsigned int checkVersionX264(bool x64, bool &modified);
|
||||
unsigned int checkVersionAvs2yuv(void);
|
||||
bool checkProperties(unsigned int &frames);
|
||||
unsigned int checkVersionAvs2yuv(bool x64);
|
||||
bool checkProperties(bool x64, unsigned int &frames);
|
||||
|
||||
//Auxiallary Stuff
|
||||
void log(const QString &text) { emit messageLogged(m_jobId, text); }
|
||||
|
@ -36,21 +36,6 @@
|
||||
#include <QInputDialog>
|
||||
#include <QSettings>
|
||||
|
||||
static const struct
|
||||
{
|
||||
const char *name;
|
||||
const char *fext;
|
||||
}
|
||||
g_filters[] =
|
||||
{
|
||||
{"Avisynth Scripts", "avs"},
|
||||
{"Matroska Files", "mkv"},
|
||||
{"MPEG-4 Part 14 Container", "mp4"},
|
||||
{"Audio Video Interleaved", "avi"},
|
||||
{"Flash Video", "flv"},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
#define VALID_DIR(PATH) ((!(PATH).isEmpty()) && QFileInfo(PATH).exists() && QFileInfo(PATH).isDir())
|
||||
|
||||
#define REMOVE_USAFED_ITEM \
|
||||
@ -305,7 +290,10 @@ void AddJobDialog::browseButtonClicked(void)
|
||||
{
|
||||
if(QObject::sender() == buttonBrowseSource)
|
||||
{
|
||||
QString filePath = QFileDialog::getOpenFileName(this, tr("Open Source File"), VALID_DIR(initialDir_src) ? initialDir_src : QDesktopServices::storageLocation(QDesktopServices::MoviesLocation), makeFileFilter(), NULL, QFileDialog::DontUseNativeDialog);
|
||||
QString initDir = VALID_DIR(initialDir_src) ? initialDir_src : QDesktopServices::storageLocation(QDesktopServices::MoviesLocation);
|
||||
if(!editSource->text().isEmpty()) initDir = QString("%1/%2").arg(initDir, QFileInfo(QDir::fromNativeSeparators(editSource->text())).fileName());
|
||||
|
||||
QString filePath = QFileDialog::getOpenFileName(this, tr("Open Source File"), initDir, makeFileFilter(), NULL, QFileDialog::DontUseNativeDialog);
|
||||
if(!(filePath.isNull() || filePath.isEmpty()))
|
||||
{
|
||||
editSource->setText(QDir::toNativeSeparators(filePath));
|
||||
@ -315,25 +303,54 @@ void AddJobDialog::browseButtonClicked(void)
|
||||
}
|
||||
else if(QObject::sender() == buttonBrowseOutput)
|
||||
{
|
||||
QString types, selectedType;
|
||||
types += tr("Matroska Files (*.mkv)").append(";;");
|
||||
types += tr("MPEG-4 Part 14 Container (*.mp4)").append(";;");
|
||||
types += tr("H.264 Elementary Stream (*.264)");
|
||||
QString selectedType; QStringList types;
|
||||
types << tr("Matroska Files (*.mkv)");
|
||||
types << tr("MPEG-4 Part 14 Container (*.mp4)");
|
||||
types << tr("H.264 Elementary Stream (*.264)");
|
||||
|
||||
QString filePath = QFileDialog::getSaveFileName(this, tr("Choose Output File"), VALID_DIR(initialDir_out) ? initialDir_out : QDesktopServices::storageLocation(QDesktopServices::MoviesLocation), types, &selectedType, QFileDialog::DontUseNativeDialog | QFileDialog::DontConfirmOverwrite);
|
||||
QString initDir = VALID_DIR(initialDir_out) ? initialDir_out : QDesktopServices::storageLocation(QDesktopServices::MoviesLocation);
|
||||
if(!editOutput->text().isEmpty()) initDir = QString("%1/%2").arg(initDir, QFileInfo(QDir::fromNativeSeparators(editOutput->text())).completeBaseName());
|
||||
|
||||
QRegExp ext("\\(\\*\\.(.+)\\)");
|
||||
for(int i = 0; i < types.count(); i++)
|
||||
{
|
||||
if(ext.lastIndexIn(types.at(i)) >= 0)
|
||||
{
|
||||
if(QFileInfo(initDir).suffix().compare(ext.cap(1), Qt::CaseInsensitive) == 0)
|
||||
{
|
||||
selectedType = types.at(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QString filePath = QFileDialog::getSaveFileName(this, tr("Choose Output File"), initDir, types.join(";;"), &selectedType, QFileDialog::DontUseNativeDialog | QFileDialog::DontConfirmOverwrite);
|
||||
|
||||
if(!(filePath.isNull() || filePath.isEmpty()))
|
||||
{
|
||||
QRegExp ext("\\(\\*\\.(.+)\\)");
|
||||
if(ext.lastIndexIn(selectedType) >= 0)
|
||||
QString suffix = QFileInfo(filePath).suffix();
|
||||
bool hasProperExt = false;
|
||||
for(int i = 0; i < types.count(); i++)
|
||||
{
|
||||
QString suffix = QFileInfo(filePath).suffix();
|
||||
if(suffix.compare(ext.cap(1), Qt::CaseInsensitive))
|
||||
if(ext.lastIndexIn(types.at(i)) >= 0)
|
||||
{
|
||||
filePath = QString("%1.%2").arg(filePath, ext.cap(1));
|
||||
if(suffix.compare(ext.cap(1), Qt::CaseInsensitive) == 0)
|
||||
{
|
||||
hasProperExt = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!hasProperExt)
|
||||
{
|
||||
if(ext.lastIndexIn(selectedType) >= 0)
|
||||
{
|
||||
if(suffix.compare(ext.cap(1), Qt::CaseInsensitive))
|
||||
{
|
||||
filePath = QString("%1.%2").arg(filePath, ext.cap(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
editOutput->setText(QDir::toNativeSeparators(filePath));
|
||||
initialDir_out = QFileInfo(filePath).path();
|
||||
}
|
||||
@ -590,18 +607,35 @@ void AddJobDialog::saveOptions(OptionsModel *options)
|
||||
|
||||
QString AddJobDialog::makeFileFilter(void)
|
||||
{
|
||||
static const struct
|
||||
{
|
||||
const char *name;
|
||||
const char *fext;
|
||||
}
|
||||
s_filters[] =
|
||||
{
|
||||
{"Avisynth Scripts", "avs"},
|
||||
{"Matroska Files", "mkv"},
|
||||
{"MPEG-4 Part 14 Container", "mp4"},
|
||||
{"Audio Video Interleaved", "avi"},
|
||||
{"Flash Video", "flv"},
|
||||
{"YUV4MPEG2 Stream", "y4m"},
|
||||
{"Uncompresses YUV Data", "yuv"},
|
||||
{NULL, NULL}
|
||||
};
|
||||
|
||||
QString filters("All supported files (");
|
||||
|
||||
for(size_t index = 0; g_filters[index].name && g_filters[index].fext; index++)
|
||||
for(size_t index = 0; s_filters[index].name && s_filters[index].fext; index++)
|
||||
{
|
||||
filters += QString((index > 0) ? " *.%1" : "*.%1").arg(QString::fromLatin1(g_filters[index].fext));
|
||||
filters += QString((index > 0) ? " *.%1" : "*.%1").arg(QString::fromLatin1(s_filters[index].fext));
|
||||
}
|
||||
|
||||
filters += QString(");;");
|
||||
|
||||
for(size_t index = 0; g_filters[index].name && g_filters[index].fext; index++)
|
||||
for(size_t index = 0; s_filters[index].name && s_filters[index].fext; index++)
|
||||
{
|
||||
filters += QString("%1 (*.%2);;").arg(QString::fromLatin1(g_filters[index].name), QString::fromLatin1(g_filters[index].fext));
|
||||
filters += QString("%1 (*.%2);;").arg(QString::fromLatin1(s_filters[index].name), QString::fromLatin1(s_filters[index].fext));
|
||||
}
|
||||
|
||||
filters += QString("All files (*.*)");
|
||||
|
@ -169,7 +169,8 @@ void MainWindow::addButtonPressed(const QString &filePath, int fileNo, int fileT
|
||||
addDialog->outputFile(),
|
||||
m_options,
|
||||
QString("%1/toolset").arg(m_appDir),
|
||||
m_x64supported
|
||||
m_x64supported,
|
||||
m_x64supported && m_preferences.useAvisyth64Bit
|
||||
);
|
||||
|
||||
QModelIndex newIndex = m_jobList->insertJob(thrd);
|
||||
@ -363,7 +364,7 @@ void MainWindow::showWebLink(void)
|
||||
|
||||
void MainWindow::showPreferences(void)
|
||||
{
|
||||
PreferencesDialog *preferences = new PreferencesDialog(this, &m_preferences);
|
||||
PreferencesDialog *preferences = new PreferencesDialog(this, &m_preferences, m_x64supported);
|
||||
preferences->exec();
|
||||
X264_DELETE(preferences);
|
||||
}
|
||||
@ -465,7 +466,7 @@ void MainWindow::shutdownComputer(void)
|
||||
|
||||
void MainWindow::init(void)
|
||||
{
|
||||
static const char *binFiles = "x264.exe:x264_x64.exe:avs2yuv.exe";
|
||||
static const char *binFiles = "x264.exe:x264_x64.exe:avs2yuv.exe:avs2yuv_x64.exe";
|
||||
QStringList binaries = QString::fromLatin1(binFiles).split(":", QString::SkipEmptyParts);
|
||||
|
||||
updateLabel();
|
||||
|
@ -27,15 +27,17 @@
|
||||
#include <QDesktopServices>
|
||||
#include <QMouseEvent>
|
||||
|
||||
PreferencesDialog::PreferencesDialog(QWidget *parent, Preferences *preferences)
|
||||
PreferencesDialog::PreferencesDialog(QWidget *parent, Preferences *preferences, bool x64)
|
||||
:
|
||||
QDialog(parent)
|
||||
QDialog(parent),
|
||||
m_x64(x64)
|
||||
{
|
||||
setupUi(this);
|
||||
setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint));
|
||||
setFixedSize(minimumSize());
|
||||
|
||||
labelRunNextJob->installEventFilter(this);
|
||||
labelUse64BitAvs2YUV->installEventFilter(this);
|
||||
labelShutdownComputer->installEventFilter(this);
|
||||
|
||||
m_preferences = preferences;
|
||||
@ -53,11 +55,19 @@ void PreferencesDialog::showEvent(QShowEvent *event)
|
||||
{
|
||||
checkRunNextJob->click();
|
||||
}
|
||||
while(checkUse64BitAvs2YUV->isChecked() != m_preferences->useAvisyth64Bit)
|
||||
{
|
||||
checkUse64BitAvs2YUV->click();
|
||||
}
|
||||
while(checkShutdownComputer->isChecked() != m_preferences->shutdownComputer)
|
||||
{
|
||||
checkShutdownComputer->click();
|
||||
}
|
||||
|
||||
spinBoxJobCount->setValue(m_preferences->maxRunningJobCount);
|
||||
|
||||
checkUse64BitAvs2YUV->setEnabled(m_x64);
|
||||
labelUse64BitAvs2YUV->setEnabled(m_x64);
|
||||
}
|
||||
|
||||
bool PreferencesDialog::eventFilter(QObject *o, QEvent *e)
|
||||
@ -73,6 +83,17 @@ bool PreferencesDialog::eventFilter(QObject *o, QEvent *e)
|
||||
}
|
||||
}
|
||||
}
|
||||
if(o == labelUse64BitAvs2YUV && e->type() == QEvent::MouseButtonRelease)
|
||||
{
|
||||
QMouseEvent *mouseEvent = dynamic_cast<QMouseEvent*>(e);
|
||||
if(mouseEvent)
|
||||
{
|
||||
if(qApp->widgetAt(mouseEvent->globalPos()) == labelUse64BitAvs2YUV)
|
||||
{
|
||||
checkUse64BitAvs2YUV->click();
|
||||
}
|
||||
}
|
||||
}
|
||||
if(o == labelShutdownComputer && e->type() == QEvent::MouseButtonRelease)
|
||||
{
|
||||
QMouseEvent *mouseEvent = dynamic_cast<QMouseEvent*>(e);
|
||||
@ -91,6 +112,7 @@ void PreferencesDialog::accept(void)
|
||||
{
|
||||
m_preferences->autoRunNextJob = checkRunNextJob->isChecked();
|
||||
m_preferences->shutdownComputer = checkShutdownComputer->isChecked();
|
||||
m_preferences->useAvisyth64Bit = checkUse64BitAvs2YUV->isChecked();
|
||||
m_preferences->maxRunningJobCount = spinBoxJobCount->value();
|
||||
|
||||
savePreferences(m_preferences);
|
||||
@ -106,6 +128,7 @@ void PreferencesDialog::loadPreferences(Preferences *preferences)
|
||||
preferences->autoRunNextJob = settings.value("auto_run_next_job", QVariant(true)).toBool();
|
||||
preferences->maxRunningJobCount = qBound(1U, settings.value("max_running_job_count", QVariant(1U)).toUInt(), 16U);
|
||||
preferences->shutdownComputer = settings.value("shutdown_computer_on_completion", QVariant(false)).toBool();
|
||||
preferences->useAvisyth64Bit = settings.value("use_64bit_avisynth", QVariant(false)).toBool();
|
||||
}
|
||||
|
||||
void PreferencesDialog::savePreferences(Preferences *preferences)
|
||||
@ -117,6 +140,7 @@ void PreferencesDialog::savePreferences(Preferences *preferences)
|
||||
settings.setValue("auto_run_next_job", preferences->autoRunNextJob);
|
||||
settings.setValue("shutdown_computer_on_completion", preferences->shutdownComputer);
|
||||
settings.setValue("max_running_job_count", preferences->maxRunningJobCount);
|
||||
settings.setValue("use_64bit_avisynth", preferences->useAvisyth64Bit);
|
||||
settings.sync();
|
||||
}
|
||||
|
||||
|
@ -33,12 +33,15 @@ public:
|
||||
bool autoRunNextJob;
|
||||
unsigned int maxRunningJobCount;
|
||||
bool shutdownComputer;
|
||||
bool useAvisyth64Bit;
|
||||
}
|
||||
Preferences;
|
||||
|
||||
PreferencesDialog(QWidget *parent, Preferences *preferences);
|
||||
PreferencesDialog(QWidget *parent, Preferences *preferences, bool x64);
|
||||
~PreferencesDialog(void);
|
||||
|
||||
const bool m_x64;
|
||||
|
||||
static void loadPreferences(Preferences *preferences);
|
||||
static void savePreferences(Preferences *preferences);
|
||||
|
||||
|
@ -116,15 +116,6 @@ copy "$(SolutionDir)res\toolset\*.exe" "$(SolutionDir)bin\$(Configuration)\tools
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="gui\win_main.ui">
|
||||
<FileType>Document</FileType>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o "$(SolutionDir)tmp\uic\uic_%(Filename).h" "%(FullPath)"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">UIC "$(SolutionDir)tmp\uic\uic_%(Filename).h"</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\uic\uic_%(Filename).h;%(Outputs)</Outputs>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o "$(SolutionDir)tmp\uic\uic_%(Filename).h" "%(FullPath)"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">UIC "$(SolutionDir)tmp\uic\uic_%(Filename).h"</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\uic\uic_%(Filename).h;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="gui\win_addJob.ui">
|
||||
<FileType>Document</FileType>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o "$(SolutionDir)tmp\uic\uic_%(Filename).h" "%(FullPath)"</Command>
|
||||
@ -152,6 +143,15 @@ copy "$(SolutionDir)res\toolset\*.exe" "$(SolutionDir)bin\$(Configuration)\tools
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\uic\uic_%(Filename).h;%(Outputs)</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\uic\uic_%(Filename).h;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="gui\win_main.ui">
|
||||
<FileType>Document</FileType>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\uic.exe" -o "$(SolutionDir)tmp\uic\uic_%(Filename).h" "%(FullPath)"</Command>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\uic.exe" -o "$(SolutionDir)tmp\uic\uic_%(Filename).h" "%(FullPath)"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">UIC "$(SolutionDir)tmp\uic\uic_%(Filename).h"</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">UIC "$(SolutionDir)tmp\uic\uic_%(Filename).h"</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\uic\uic_%(Filename).h;%(Outputs)</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\uic\uic_%(Filename).h;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<None Include="ReadMe.txt" />
|
||||
<CustomBuild Include="res\resources.qrc">
|
||||
<FileType>Document</FileType>
|
||||
|
@ -100,9 +100,6 @@
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="gui\win_main.ui">
|
||||
<Filter>Dialogs</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="src\win_main.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</CustomBuild>
|
||||
@ -136,6 +133,9 @@
|
||||
<CustomBuild Include="src\win_preferences.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="gui\win_main.ui">
|
||||
<Filter>Dialogs</Filter>
|
||||
</CustomBuild>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="x264_launcher.rc">
|
||||
|
Loading…
Reference in New Issue
Block a user