Added option to choose between 8-Bit and 10-Bit encoding at runtime. We now include 8-Bit and 10-Bit builds in the distribution package.

This commit is contained in:
LoRd_MuldeR 2012-03-25 22:11:07 +02:00
parent 2c021cf3f1
commit b7acf86d6e
8 changed files with 116 additions and 35 deletions

View File

@ -10,7 +10,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>379</width> <width>379</width>
<height>226</height> <height>260</height>
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
@ -47,7 +47,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0" rowspan="6"> <item row="1" column="0" rowspan="8">
<spacer name="horizontalSpacer_2"> <spacer name="horizontalSpacer_2">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
@ -63,7 +63,7 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="1" column="6" rowspan="6"> <item row="1" column="6" rowspan="8">
<spacer name="horizontalSpacer_3"> <spacer name="horizontalSpacer_3">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
@ -89,7 +89,7 @@
<item row="1" column="1"> <item row="1" column="1">
<widget class="QCheckBox" name="checkRunNextJob"> <widget class="QCheckBox" name="checkRunNextJob">
<property name="text"> <property name="text">
<string/> <string notr="true"/>
</property> </property>
</widget> </widget>
</item> </item>
@ -128,14 +128,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="6" column="1">
<widget class="QCheckBox" name="checkUse64BitAvs2YUV"> <widget class="QCheckBox" name="checkUse64BitAvs2YUV">
<property name="toolTip"> <property name="toolTip">
<string>If this option is un-checked (default), then 32-Bit Avisynth will be used - even when using 64-Bit x264. <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> Please be aware that this option does NOT have any effect on 32-Bit systems.</string>
</property> </property>
<property name="text"> <property name="text">
<string/> <string notr="true"/>
</property> </property>
</widget> </widget>
</item> </item>
@ -155,14 +155,14 @@ Please be aware that this option does NOT have any effect on 32-Bit systems.</st
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="6" column="1"> <item row="8" column="1">
<widget class="QCheckBox" name="checkShutdownComputer"> <widget class="QCheckBox" name="checkShutdownComputer">
<property name="text"> <property name="text">
<string/> <string notr="true"/>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="2" colspan="4"> <item row="8" column="2" colspan="4">
<widget class="QLabel" name="labelShutdownComputer"> <widget class="QLabel" name="labelShutdownComputer">
<property name="text"> <property name="text">
<string>Shutdown computer as soon as the last job has completed</string> <string>Shutdown computer as soon as the last job has completed</string>
@ -185,7 +185,7 @@ Please be aware that this option does NOT have any effect on 32-Bit systems.</st
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="7" column="1" colspan="5"> <item row="9" column="1" colspan="5">
<spacer name="verticalSpacer_3"> <spacer name="verticalSpacer_3">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@ -201,7 +201,7 @@ Please be aware that this option does NOT have any effect on 32-Bit systems.</st
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="4" column="2" colspan="4"> <item row="6" column="2" colspan="4">
<widget class="QLabel" name="labelUse64BitAvs2YUV"> <widget class="QLabel" name="labelUse64BitAvs2YUV">
<property name="toolTip"> <property name="toolTip">
<string>If this option is un-checked (default), then 32-Bit Avisynth will be used - even when using 64-Bit x264. <string>If this option is un-checked (default), then 32-Bit Avisynth will be used - even when using 64-Bit x264.
@ -212,7 +212,7 @@ Please be aware that this option does NOT have any effect on 32-Bit systems.</st
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="2" colspan="4"> <item row="7" column="1" colspan="5">
<spacer name="verticalSpacer_4"> <spacer name="verticalSpacer_4">
<property name="orientation"> <property name="orientation">
<enum>Qt::Vertical</enum> <enum>Qt::Vertical</enum>
@ -228,6 +228,36 @@ Please be aware that this option does NOT have any effect on 32-Bit systems.</st
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="4" column="1">
<widget class="QCheckBox" name="checkUse10BitEncoding">
<property name="text">
<string notr="true"/>
</property>
</widget>
</item>
<item row="4" column="2" colspan="4">
<widget class="QLabel" name="labelUse10BitEncoding">
<property name="text">
<string>Use 10-Bit version of x264 → implies 'High 10' H.264 Profile</string>
</property>
</widget>
</item>
<item row="5" column="1" colspan="5">
<spacer name="verticalSpacer_5">
<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> </layout>
</item> </item>
</layout> </layout>

View File

@ -71,6 +71,8 @@ QMutex EncodeThread::m_mutex_startProcess;
} \ } \
} }
#define X264_BINARY(BIN_DIR, IS_10BIT, IS_X64) QString("%1/x264_%2_%3.exe").arg((BIN_DIR), ((IS_10BIT) ? "10bit" : "8bit"), ((IS_X64) ? "x64" : "x86"))
/* /*
* Static vars * Static vars
*/ */
@ -80,7 +82,7 @@ static const unsigned int REV_MULT = 10000;
// Constructor & Destructor // Constructor & Destructor
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
EncodeThread::EncodeThread(const QString &sourceFileName, const QString &outputFileName, const OptionsModel *options, const QString &binDir, bool x264_x64, bool avs2yuv_x64) EncodeThread::EncodeThread(const QString &sourceFileName, const QString &outputFileName, const OptionsModel *options, const QString &binDir, bool x264_x64, bool x264_10bit, bool avs2yuv_x64)
: :
m_jobId(QUuid::createUuid()), m_jobId(QUuid::createUuid()),
m_sourceFileName(sourceFileName), m_sourceFileName(sourceFileName),
@ -88,6 +90,7 @@ EncodeThread::EncodeThread(const QString &sourceFileName, const QString &outputF
m_options(new OptionsModel(*options)), m_options(new OptionsModel(*options)),
m_binDir(binDir), m_binDir(binDir),
m_x264_x64(x264_x64), m_x264_x64(x264_x64),
m_x264_10bit(x264_10bit),
m_avs2yuv_x64(avs2yuv_x64), m_avs2yuv_x64(avs2yuv_x64),
m_handle_jobObject(NULL), m_handle_jobObject(NULL),
m_semaphorePaused(0) m_semaphorePaused(0)
@ -200,7 +203,7 @@ void EncodeThread::encode(void)
log(tr("\n--- CHECK VERSION ---\n")); log(tr("\n--- CHECK VERSION ---\n"));
unsigned int revision_x264 = UINT_MAX; unsigned int revision_x264 = UINT_MAX;
bool x264_modified = false; bool x264_modified = false;
ok = ((revision_x264 = checkVersionX264(m_x264_x64, x264_modified)) != UINT_MAX); ok = ((revision_x264 = checkVersionX264(m_x264_x64, m_x264_10bit, x264_modified)) != UINT_MAX);
CHECK_STATUS(m_abort, ok); CHECK_STATUS(m_abort, ok);
//Checking avs2yuv version //Checking avs2yuv version
@ -259,17 +262,17 @@ void EncodeThread::encode(void)
} }
log(tr("\n--- PASS 1 ---\n")); log(tr("\n--- PASS 1 ---\n"));
ok = runEncodingPass(m_x264_x64, m_avs2yuv_x64, usePipe, frames, indexFile, 1, passLogFile); ok = runEncodingPass(m_x264_x64, m_x264_10bit, m_avs2yuv_x64, usePipe, frames, indexFile, 1, passLogFile);
CHECK_STATUS(m_abort, ok); CHECK_STATUS(m_abort, ok);
log(tr("\n--- PASS 2 ---\n")); log(tr("\n--- PASS 2 ---\n"));
ok = runEncodingPass(m_x264_x64, m_avs2yuv_x64, usePipe, frames, indexFile, 2, passLogFile); ok = runEncodingPass(m_x264_x64, m_x264_10bit, m_avs2yuv_x64, usePipe, frames, indexFile, 2, passLogFile);
CHECK_STATUS(m_abort, ok); CHECK_STATUS(m_abort, ok);
} }
else else
{ {
log(tr("\n--- ENCODING ---\n")); log(tr("\n--- ENCODING ---\n"));
ok = runEncodingPass(m_x264_x64, m_avs2yuv_x64, usePipe, frames, indexFile); ok = runEncodingPass(m_x264_x64, m_x264_10bit, m_avs2yuv_x64, usePipe, frames, indexFile);
CHECK_STATUS(m_abort, ok); CHECK_STATUS(m_abort, ok);
} }
@ -280,7 +283,7 @@ void EncodeThread::encode(void)
setStatus(JobStatus_Completed); setStatus(JobStatus_Completed);
} }
bool EncodeThread::runEncodingPass(bool x264_x64, bool avs2yuv_x64, bool usePipe, unsigned int frames, const QString &indexFile, int pass, const QString &passLogFile) bool EncodeThread::runEncodingPass(bool x264_x64, bool x264_10bit, bool avs2yuv_x64, bool usePipe, unsigned int frames, const QString &indexFile, int pass, const QString &passLogFile)
{ {
QProcess processEncode, processAvisynth; QProcess processEncode, processAvisynth;
@ -302,10 +305,10 @@ bool EncodeThread::runEncodingPass(bool x264_x64, bool avs2yuv_x64, bool usePipe
} }
} }
QStringList cmdLine_Encode = buildCommandLine(usePipe, frames, indexFile, pass, passLogFile); QStringList cmdLine_Encode = buildCommandLine(usePipe, x264_10bit, frames, indexFile, pass, passLogFile);
log("Creating x264 process:"); log("Creating x264 process:");
if(!startProcess(processEncode, QString("%1/%2.exe").arg(m_binDir, x264_x64 ? "x264_x64" : "x264"), cmdLine_Encode)) if(!startProcess(processEncode, X264_BINARY(m_binDir, x264_10bit, x264_x64), cmdLine_Encode))
{ {
return false; return false;
} }
@ -510,7 +513,7 @@ bool EncodeThread::runEncodingPass(bool x264_x64, bool avs2yuv_x64, bool usePipe
return true; return true;
} }
QStringList EncodeThread::buildCommandLine(bool usePipe, unsigned int frames, const QString &indexFile, int pass, const QString &passLogFile) QStringList EncodeThread::buildCommandLine(bool usePipe, bool use10Bit, unsigned int frames, const QString &indexFile, int pass, const QString &passLogFile)
{ {
QStringList cmdLine; QStringList cmdLine;
double crf_int = 0.0, crf_frc = 0.0; double crf_int = 0.0, crf_frc = 0.0;
@ -548,7 +551,21 @@ QStringList EncodeThread::buildCommandLine(bool usePipe, unsigned int frames, co
if(m_options->profile().compare("auto", Qt::CaseInsensitive)) if(m_options->profile().compare("auto", Qt::CaseInsensitive))
{ {
cmdLine << "--profile" << m_options->profile().toLower(); if(use10Bit)
{
if(m_options->profile().compare("baseline", Qt::CaseInsensitive) || m_options->profile().compare("main", Qt::CaseInsensitive) || m_options->profile().compare("high", Qt::CaseInsensitive))
{
log(tr("WARNING: Selected H.264 Profile not compatible with 10-Bit encoding. Ignoring!\n"));
}
else
{
cmdLine << "--profile" << m_options->profile().toLower();
}
}
else
{
cmdLine << "--profile" << m_options->profile().toLower();
}
} }
if(!m_options->customX264().isEmpty()) if(!m_options->customX264().isEmpty())
@ -574,13 +591,13 @@ QStringList EncodeThread::buildCommandLine(bool usePipe, unsigned int frames, co
return cmdLine; return cmdLine;
} }
unsigned int EncodeThread::checkVersionX264(bool x64, bool &modified) unsigned int EncodeThread::checkVersionX264(bool use_x64, bool use_10bit, bool &modified)
{ {
QProcess process; QProcess process;
QStringList cmdLine = QStringList() << "--version"; QStringList cmdLine = QStringList() << "--version";
log("Creating process:"); log("Creating process:");
if(!startProcess(process, QString("%1/%2.exe").arg(m_binDir, x64 ? "x264_x64" : "x264"), cmdLine)) if(!startProcess(process, X264_BINARY(m_binDir, use_10bit, use_x64), cmdLine))
{ {
return false;; return false;;
} }

View File

@ -53,7 +53,7 @@ public:
JobStatus_Undefined = 666 JobStatus_Undefined = 666
}; };
EncodeThread(const QString &sourceFileName, const QString &outputFileName, const OptionsModel *options, const QString &binDir, bool x264_x64, bool avs2yuv_x64); EncodeThread(const QString &sourceFileName, const QString &outputFileName, const OptionsModel *options, const QString &binDir, bool x264_x64, bool x264_10bit, bool avs2yuv_x64);
~EncodeThread(void); ~EncodeThread(void);
QUuid getId(void) { return this->m_jobId; }; QUuid getId(void) { return this->m_jobId; };
@ -90,6 +90,7 @@ protected:
const OptionsModel *m_options; const OptionsModel *m_options;
const QString m_binDir; const QString m_binDir;
const bool m_x264_x64; const bool m_x264_x64;
const bool m_x264_10bit;
const bool m_avs2yuv_x64; const bool m_avs2yuv_x64;
//Flags //Flags
@ -112,9 +113,9 @@ protected:
//Encode functions //Encode functions
void encode(void); void encode(void);
bool runEncodingPass(bool x264_x64, bool avs2yuv_x64, bool usePipe, unsigned int frames, const QString &indexFile, int pass = 0, const QString &passLogFile = QString()); bool runEncodingPass(bool x264_x64, bool x264_10bit, 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()); QStringList buildCommandLine(bool usePipe, bool use10Bit, unsigned int frames, const QString &indexFile, int pass = 0, const QString &passLogFile = QString());
unsigned int checkVersionX264(bool x64, bool &modified); unsigned int checkVersionX264(bool use_x64, bool use_10bit, bool &modified);
unsigned int checkVersionAvs2yuv(bool x64); unsigned int checkVersionAvs2yuv(bool x64);
bool checkProperties(bool x64, unsigned int &frames); bool checkProperties(bool x64, unsigned int &frames);

View File

@ -21,11 +21,11 @@
#define VER_X264_MAJOR 2 #define VER_X264_MAJOR 2
#define VER_X264_MINOR 0 #define VER_X264_MINOR 0
#define VER_X264_PATCH 2 #define VER_X264_PATCH 3
#define VER_X264_BUILD 275 #define VER_X264_BUILD 291
#define VER_X264_MINIMUM_REV 2146 #define VER_X264_MINIMUM_REV 2164
#define VER_X264_CURRENT_API 120 #define VER_X264_CURRENT_API 122
#define VER_X264_AVS2YUV_VER 242 #define VER_X264_AVS2YUV_VER 242
#define VER_X264_PRE_RELEASE (0) #define VER_X264_PRE_RELEASE (0)

View File

@ -227,6 +227,7 @@ void MainWindow::addButtonPressed(const QString &filePathIn, const QString &file
options ? options : m_options, options ? options : m_options,
QString("%1/toolset").arg(m_appDir), QString("%1/toolset").arg(m_appDir),
m_cpuFeatures->x64, m_cpuFeatures->x64,
m_preferences.use10BitEncoding,
m_cpuFeatures->x64 && m_preferences.useAvisyth64Bit m_cpuFeatures->x64 && m_preferences.useAvisyth64Bit
); );
@ -629,7 +630,7 @@ void MainWindow::shutdownComputer(void)
*/ */
void MainWindow::init(void) void MainWindow::init(void)
{ {
static const char *binFiles = "x264.exe:x264_x64.exe:avs2yuv.exe:avs2yuv_x64.exe"; static const char *binFiles = "x264_8bit_x86.exe:x264_8bit_x64.exe:x264_10bit_x86.exe:x264_10bit_x64.exe:avs2yuv.exe:avs2yuv_x64.exe";
QStringList binaries = QString::fromLatin1(binFiles).split(":", QString::SkipEmptyParts); QStringList binaries = QString::fromLatin1(binFiles).split(":", QString::SkipEmptyParts);
updateLabelPos(); updateLabelPos();

View File

@ -26,6 +26,7 @@
#include <QSettings> #include <QSettings>
#include <QDesktopServices> #include <QDesktopServices>
#include <QMouseEvent> #include <QMouseEvent>
#include <QMessageBox>
#define UPDATE_CHECKBOX(CHKBOX, VALUE) \ #define UPDATE_CHECKBOX(CHKBOX, VALUE) \
{ \ { \
@ -43,10 +44,12 @@ PreferencesDialog::PreferencesDialog(QWidget *parent, Preferences *preferences,
setFixedSize(minimumSize()); setFixedSize(minimumSize());
labelRunNextJob->installEventFilter(this); labelRunNextJob->installEventFilter(this);
labelUse10BitEncoding->installEventFilter(this);
labelUse64BitAvs2YUV->installEventFilter(this); labelUse64BitAvs2YUV->installEventFilter(this);
labelShutdownComputer->installEventFilter(this); labelShutdownComputer->installEventFilter(this);
connect(resetButton, SIGNAL(clicked()), this, SLOT(resetButtonPressed())); connect(resetButton, SIGNAL(clicked()), this, SLOT(resetButtonPressed()));
connect(checkUse10BitEncoding, SIGNAL(toggled(bool)), this, SLOT(use10BitEncodingToggled(bool)));
m_preferences = preferences; m_preferences = preferences;
} }
@ -63,6 +66,10 @@ void PreferencesDialog::showEvent(QShowEvent *event)
UPDATE_CHECKBOX(checkShutdownComputer, m_preferences->shutdownComputer); UPDATE_CHECKBOX(checkShutdownComputer, m_preferences->shutdownComputer);
UPDATE_CHECKBOX(checkUse64BitAvs2YUV, m_preferences->useAvisyth64Bit); UPDATE_CHECKBOX(checkUse64BitAvs2YUV, m_preferences->useAvisyth64Bit);
checkUse10BitEncoding->blockSignals(true);
UPDATE_CHECKBOX(checkUse10BitEncoding, m_preferences->use10BitEncoding);
checkUse10BitEncoding->blockSignals(false);
spinBoxJobCount->setValue(m_preferences->maxRunningJobCount); spinBoxJobCount->setValue(m_preferences->maxRunningJobCount);
checkUse64BitAvs2YUV->setEnabled(m_x64); checkUse64BitAvs2YUV->setEnabled(m_x64);
@ -73,6 +80,7 @@ bool PreferencesDialog::eventFilter(QObject *o, QEvent *e)
{ {
emulateMouseEvent(o, e, labelRunNextJob, checkRunNextJob); emulateMouseEvent(o, e, labelRunNextJob, checkRunNextJob);
emulateMouseEvent(o, e, labelShutdownComputer, checkShutdownComputer); emulateMouseEvent(o, e, labelShutdownComputer, checkShutdownComputer);
emulateMouseEvent(o, e, labelUse10BitEncoding, checkUse10BitEncoding);
emulateMouseEvent(o, e, labelUse64BitAvs2YUV, checkUse64BitAvs2YUV); emulateMouseEvent(o, e, labelUse64BitAvs2YUV, checkUse64BitAvs2YUV);
return false; return false;
} }
@ -101,6 +109,7 @@ void PreferencesDialog::done(int n)
{ {
m_preferences->autoRunNextJob = checkRunNextJob->isChecked(); m_preferences->autoRunNextJob = checkRunNextJob->isChecked();
m_preferences->shutdownComputer = checkShutdownComputer->isChecked(); m_preferences->shutdownComputer = checkShutdownComputer->isChecked();
m_preferences->use10BitEncoding = checkUse10BitEncoding->isChecked();
m_preferences->useAvisyth64Bit = checkUse64BitAvs2YUV->isChecked(); m_preferences->useAvisyth64Bit = checkUse64BitAvs2YUV->isChecked();
m_preferences->maxRunningJobCount = spinBoxJobCount->value(); m_preferences->maxRunningJobCount = spinBoxJobCount->value();
@ -114,6 +123,22 @@ void PreferencesDialog::resetButtonPressed(void)
showEvent(NULL); showEvent(NULL);
} }
void PreferencesDialog::use10BitEncodingToggled(bool checked)
{
if(checked)
{
QString text;
text += tr("<nobr>Please note that 10&minus;Bit H.264 streams are <b>not</b> currently supported by hardware (standalone) players!</nobr><br>");
text += tr("<nobr>To play such streams, you will need an <i>up&minus;to&minus;date</i> ffdshow&minus;tryouts, CoreAVC 3.x or another supported s/w decoder.</nobr><br>");
text += tr("<nobr>Also be aware that hardware&minus;acceleration (CUDA, DXVA, etc) usually will <b>not</b> work with 10&minus;Bit H.264 streams.</nobr><br>");
if(QMessageBox::warning(this, tr("10-Bit Encoding"), text, tr("Continue"), tr("Revert"), QString(), 1) != 0)
{
UPDATE_CHECKBOX(checkUse10BitEncoding, false);
}
}
}
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// Static Functions // Static Functions
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
@ -125,6 +150,7 @@ void PreferencesDialog::initPreferences(Preferences *preferences)
preferences->autoRunNextJob = true; preferences->autoRunNextJob = true;
preferences->maxRunningJobCount = 1; preferences->maxRunningJobCount = 1;
preferences->shutdownComputer = false; preferences->shutdownComputer = false;
preferences->use10BitEncoding = false;
preferences->useAvisyth64Bit = false; preferences->useAvisyth64Bit = false;
} }
@ -140,6 +166,7 @@ void PreferencesDialog::loadPreferences(Preferences *preferences)
preferences->autoRunNextJob = settings.value("auto_run_next_job", QVariant(defaults.autoRunNextJob)).toBool(); preferences->autoRunNextJob = settings.value("auto_run_next_job", QVariant(defaults.autoRunNextJob)).toBool();
preferences->maxRunningJobCount = qBound(1U, settings.value("max_running_job_count", QVariant(defaults.maxRunningJobCount)).toUInt(), 16U); preferences->maxRunningJobCount = qBound(1U, settings.value("max_running_job_count", QVariant(defaults.maxRunningJobCount)).toUInt(), 16U);
preferences->shutdownComputer = settings.value("shutdown_computer_on_completion", QVariant(defaults.shutdownComputer)).toBool(); preferences->shutdownComputer = settings.value("shutdown_computer_on_completion", QVariant(defaults.shutdownComputer)).toBool();
preferences->use10BitEncoding = settings.value("use_10bit_encoding", QVariant(defaults.use10BitEncoding)).toBool();
preferences->useAvisyth64Bit = settings.value("use_64bit_avisynth", QVariant(defaults.useAvisyth64Bit)).toBool(); preferences->useAvisyth64Bit = settings.value("use_64bit_avisynth", QVariant(defaults.useAvisyth64Bit)).toBool();
} }
@ -152,6 +179,7 @@ void PreferencesDialog::savePreferences(Preferences *preferences)
settings.setValue("auto_run_next_job", preferences->autoRunNextJob); settings.setValue("auto_run_next_job", preferences->autoRunNextJob);
settings.setValue("shutdown_computer_on_completion", preferences->shutdownComputer); settings.setValue("shutdown_computer_on_completion", preferences->shutdownComputer);
settings.setValue("max_running_job_count", preferences->maxRunningJobCount); settings.setValue("max_running_job_count", preferences->maxRunningJobCount);
settings.setValue("use_10bit_encoding", preferences->use10BitEncoding);
settings.setValue("use_64bit_avisynth", preferences->useAvisyth64Bit); settings.setValue("use_64bit_avisynth", preferences->useAvisyth64Bit);
settings.sync(); settings.sync();
} }

View File

@ -33,6 +33,7 @@ public:
bool autoRunNextJob; bool autoRunNextJob;
unsigned int maxRunningJobCount; unsigned int maxRunningJobCount;
bool shutdownComputer; bool shutdownComputer;
bool use10BitEncoding;
bool useAvisyth64Bit; bool useAvisyth64Bit;
} }
Preferences; Preferences;
@ -58,4 +59,5 @@ private:
private slots: private slots:
void resetButtonPressed(void); void resetButtonPressed(void);
void use10BitEncodingToggled(bool checked);
}; };

View File

@ -104,7 +104,7 @@ REM ///////////////////////////////////////////////////////////////////////////
REM // Compress REM // Compress
REM /////////////////////////////////////////////////////////////////////////// REM ///////////////////////////////////////////////////////////////////////////
"%UPX3_PATH%\upx.exe" --brute "%PACK_PATH%\*.exe" "%UPX3_PATH%\upx.exe" --brute "%PACK_PATH%\*.exe"
"%UPX3_PATH%\upx.exe" --best "%PACK_PATH%\*.dll" "%UPX3_PATH%\upx.exe" --best "%PACK_PATH%\*.dll"
REM /////////////////////////////////////////////////////////////////////////// REM ///////////////////////////////////////////////////////////////////////////
REM // Attributes REM // Attributes
@ -134,6 +134,7 @@ echo #Generated File - Do NOT modify! > "%NSI_FILE%"
echo !define ZIP2EXE_NAME `Simple x264 Launcher (%ISO_DATE%)` >> "%NSI_FILE%" echo !define ZIP2EXE_NAME `Simple x264 Launcher (%ISO_DATE%)` >> "%NSI_FILE%"
echo !define ZIP2EXE_OUTFILE `%OUT_FULL%` >> "%NSI_FILE%" echo !define ZIP2EXE_OUTFILE `%OUT_FULL%` >> "%NSI_FILE%"
echo !define ZIP2EXE_COMPRESSOR_LZMA >> "%NSI_FILE%" echo !define ZIP2EXE_COMPRESSOR_LZMA >> "%NSI_FILE%"
echo !define ZIP2EXE_COMPRESSOR_SOLID >> "%NSI_FILE%"
echo !define ZIP2EXE_INSTALLDIR `$PROGRAMFILES\MuldeR\Simple x264 Launcher v2` >> "%NSI_FILE%" echo !define ZIP2EXE_INSTALLDIR `$PROGRAMFILES\MuldeR\Simple x264 Launcher v2` >> "%NSI_FILE%"
echo !define ZIP2EXE_REGPATH `SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{986E454F-DACA-4326-A9C7-3E46C0BFFDCE}` >> "%NSI_FILE%" echo !define ZIP2EXE_REGPATH `SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{986E454F-DACA-4326-A9C7-3E46C0BFFDCE}` >> "%NSI_FILE%"
echo !define MUI_INSTFILESPAGE_COLORS "C5DEFB 000000" >> "%NSI_FILE%" echo !define MUI_INSTFILESPAGE_COLORS "C5DEFB 000000" >> "%NSI_FILE%"
@ -142,6 +143,7 @@ echo ShowInstDetails show >> "%NSI_FILE%"
echo BrandingText `Created: %ISO_DATE%, %ISO_TIME% [Build #%BUILD_NO%]` >> "%NSI_FILE%" echo BrandingText `Created: %ISO_DATE%, %ISO_TIME% [Build #%BUILD_NO%]` >> "%NSI_FILE%"
echo InstallDirRegKey HKLM `${ZIP2EXE_REGPATH}` InstallLocation >> "%NSI_FILE%" echo InstallDirRegKey HKLM `${ZIP2EXE_REGPATH}` InstallLocation >> "%NSI_FILE%"
echo !include `${NSISDIR}\Contrib\zip2exe\Base.nsh` >> "%NSI_FILE%" echo !include `${NSISDIR}\Contrib\zip2exe\Base.nsh` >> "%NSI_FILE%"
echo SetCompressorDictSize 96 >> "%NSI_FILE%"
echo !include `${NSISDIR}\Contrib\zip2exe\Modern.nsh` >> "%NSI_FILE%" echo !include `${NSISDIR}\Contrib\zip2exe\Modern.nsh` >> "%NSI_FILE%"
echo !include `%~dp0\etc\check_os.nsh` >> "%NSI_FILE%" echo !include `%~dp0\etc\check_os.nsh` >> "%NSI_FILE%"
echo !include `%~dp0\etc\finalization.nsh` >> "%NSI_FILE%" echo !include `%~dp0\etc\finalization.nsh` >> "%NSI_FILE%"