///////////////////////////////////////////////////////////////////////////////
// Simple x264 Launcher
-// Copyright (C) 2004-2014 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2022 LoRd_MuldeR <MuldeR2@GMX.de>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
#include "model_options.h"
+//Internal
#include "global.h"
#include "model_sysinfo.h"
+//Mutils
+#include <MUtils/Global.h>
+
+//Qt
#include <QDesktopServices>
#include <QSettings>
#include <QStringList>
static const char *KEY_CUSTOM_ENCODER = "custom_params_encoder";
static const char *KEY_CUSTOM_AVS2YUV = "custom_params_avs2yuv";
-const char *const OptionsModel::TUNING_UNSPECIFIED = "<None>";
+const char *const OptionsModel::SETTING_UNSPECIFIED = "<None>";
const char *const OptionsModel::PROFILE_UNRESTRICTED = "<Unrestricted>";
OptionsModel::OptionsModel(const SysinfoModel *sysinfo)
{
m_encoderType = EncType_X264;
- m_encoderArch = sysinfo->hasX64Support() ? EncArch_x64 : EncArch_x32;
- m_encoderVariant = EncVariant_LoBit;
- m_rcMode = RCMode_CRF;
+ m_encoderArch = sysinfo->getCPUFeatures(SysinfoModel::CPUFeatures_X64) ? 0 : 1;
+ m_encoderVariant = 0;
+ m_rcMode = 0;
m_bitrate = 1200;
m_quantizer = 22;
m_preset = "Medium";
- m_tune = QString::fromLatin1(OptionsModel::TUNING_UNSPECIFIED);
+ m_tune = QString::fromLatin1(OptionsModel::SETTING_UNSPECIFIED);
m_profile = QString::fromLatin1(OptionsModel::PROFILE_UNRESTRICTED);
m_custom_encoder = QString();
m_custom_avs2yuv = QString();
{
}
-QString OptionsModel::rcMode2String(RCMode mode)
-{
- switch(mode)
- {
- case RCMode_CRF:
- return QObject::tr("CRF");
- break;
- case RCMode_CQ:
- return QObject::tr("CQ");
- break;
- case RCMode_2Pass:
- return QObject::tr("2-Pass");
- break;
- case RCMode_ABR:
- return QObject::tr("ABR");
- break;
- default:
- return QString();
- break;
- }
-}
-
bool OptionsModel::equals(const OptionsModel *model)
{
bool equal = true;
}
QSettings settings(QString("%1/templates.ini").arg(appDir), QSettings::IniFormat);
+
settings.beginGroup(name);
-
const bool okay = loadOptions(model, settings);
-
settings.endGroup();
+
return okay;
}
list.insert(name, options);
continue;
}
- X264_DELETE(options);
+ MUTILS_DELETE(options);
}
}
bool OptionsModel::loadOptions(OptionsModel *model, QSettings &settingsFile)
{
- //For backward-compatibility
- static const char *legacyKey[] = { "custom_params", "custom_params_x264", NULL };
- for(int i = 0; legacyKey[i]; i++)
- {
- if(settingsFile.contains(legacyKey[i]))
- {
- settingsFile.setValue(KEY_CUSTOM_ENCODER, settingsFile.value(legacyKey[i]));
- settingsFile.remove(legacyKey[i]);
- }
- }
- if(settingsFile.value(KEY_PROFILE_NAME).toString().compare("auto", Qt::CaseInsensitive) == 0)
- {
- settingsFile.setValue(KEY_PROFILE_NAME, QString::fromLatin1(OptionsModel::PROFILE_UNRESTRICTED));
- }
- if(settingsFile.value(KEY_TUNING_NAME).toString().compare("none", Qt::CaseInsensitive) == 0)
- {
- settingsFile.setValue(KEY_TUNING_NAME, QString::fromLatin1(OptionsModel::TUNING_UNSPECIFIED));
- }
-
+ fixTemplate(settingsFile); /*for backward compatibility*/
+
bool complete = true;
-
if(!settingsFile.contains(KEY_ENCODER_TYPE)) complete = false;
if(!settingsFile.contains(KEY_ENCODER_ARCH)) complete = false;
if(!settingsFile.contains(KEY_ENCODER_VARIANT)) complete = false;
if(complete)
{
- model->setEncType (static_cast<OptionsModel::EncType> (settingsFile.value(KEY_ENCODER_TYPE, model->m_encoderType) .toInt()));
- model->setEncArch (static_cast<OptionsModel::EncArch> (settingsFile.value(KEY_ENCODER_ARCH, model->m_encoderArch) .toInt()));
- model->setEncVariant (static_cast<OptionsModel::EncVariant>(settingsFile.value(KEY_ENCODER_VARIANT, model->m_encoderVariant).toInt()));
- model->setRCMode (static_cast<OptionsModel::RCMode> (settingsFile.value(KEY_RATECTRL_MODE, model->m_rcMode) .toInt()));
- model->setBitrate (settingsFile.value(KEY_TARGET_BITRATE, model->m_bitrate) .toUInt() );
- model->setQuantizer (settingsFile.value(KEY_TARGET_QUANT, model->m_quantizer) .toDouble());
- model->setPreset (settingsFile.value(KEY_PRESET_NAME, model->m_preset) .toString());
- model->setTune (settingsFile.value(KEY_TUNING_NAME, model->m_tune) .toString());
- model->setProfile (settingsFile.value(KEY_PROFILE_NAME, model->m_profile) .toString());
- model->setCustomEncParams(settingsFile.value(KEY_CUSTOM_ENCODER, model->m_custom_encoder).toString());
- model->setCustomAvs2YUV (settingsFile.value(KEY_CUSTOM_AVS2YUV, model->m_custom_avs2yuv).toString());
+ model->setEncType (settingsFile.value(KEY_ENCODER_TYPE, model->m_encoderType) .toInt());
+ model->setEncArch (settingsFile.value(KEY_ENCODER_ARCH, model->m_encoderArch) .toInt());
+ model->setEncVariant (settingsFile.value(KEY_ENCODER_VARIANT, model->m_encoderVariant).toInt());
+ model->setRCMode (settingsFile.value(KEY_RATECTRL_MODE, model->m_rcMode) .toInt());
+ model->setBitrate (settingsFile.value(KEY_TARGET_BITRATE, model->m_bitrate) .toUInt());
+ model->setQuantizer (settingsFile.value(KEY_TARGET_QUANT, model->m_quantizer) .toDouble());
+ model->setPreset (settingsFile.value(KEY_PRESET_NAME, model->m_preset) .toString());
+ model->setTune (settingsFile.value(KEY_TUNING_NAME, model->m_tune) .toString());
+ model->setProfile (settingsFile.value(KEY_PROFILE_NAME, model->m_profile) .toString());
+ model->setCustomEncParams(settingsFile.value(KEY_CUSTOM_ENCODER, model->m_custom_encoder).toString());
+ model->setCustomAvs2YUV (settingsFile.value(KEY_CUSTOM_AVS2YUV, model->m_custom_avs2yuv).toString());
}
return complete;
}
+
+void OptionsModel::fixTemplate(QSettings &settingsFile)
+{
+ if(!(settingsFile.contains(KEY_ENCODER_TYPE) || settingsFile.contains(KEY_ENCODER_ARCH) || settingsFile.contains(KEY_ENCODER_VARIANT)))
+ {
+ settingsFile.setValue(KEY_ENCODER_TYPE, 0);
+ settingsFile.setValue(KEY_ENCODER_ARCH, 0);
+ settingsFile.setValue(KEY_ENCODER_VARIANT, 0);
+ }
+
+ static const char *legacyKey[] = { "custom_params", "custom_params_x264", NULL };
+ for(int i = 0; legacyKey[i]; i++)
+ {
+ if(settingsFile.contains(legacyKey[i]))
+ {
+ settingsFile.setValue(KEY_CUSTOM_ENCODER, settingsFile.value(legacyKey[i]));
+ settingsFile.remove(legacyKey[i]);
+ }
+ }
+
+ if(settingsFile.value(KEY_PROFILE_NAME).toString().compare("auto", Qt::CaseInsensitive) == 0)
+ {
+ settingsFile.setValue(KEY_PROFILE_NAME, QString::fromLatin1(OptionsModel::PROFILE_UNRESTRICTED));
+ }
+ if(settingsFile.value(KEY_TUNING_NAME).toString().compare("none", Qt::CaseInsensitive) == 0)
+ {
+ settingsFile.setValue(KEY_TUNING_NAME, QString::fromLatin1(OptionsModel::SETTING_UNSPECIFIED));
+ }
+}