+void AddJobDialog::encoderIndexChanged(int index)
+{
+ const OptionsModel::EncType encType = static_cast<OptionsModel::EncType>(ui->cbxEncoderType->itemData(ui->cbxEncoderType->currentIndex()).toInt());
+ const AbstractEncoderInfo &encoderInfo = EncoderFactory::getEncoderInfo(encType);
+
+ //Update encoder architectures
+ const QList<AbstractEncoderInfo::ArchId> archs = encoderInfo.getArchitectures();
+ ui->cbxEncoderArch->clear();
+ for (quint32 archIdx = 0; archIdx < quint32(archs.count()); ++archIdx)
+ {
+ ui->cbxEncoderArch->addItem(archs[archIdx].first, archIdx);
+ }
+
+ //Update encoder variants
+ const QStringList variants = encoderInfo.getVariants();
+ ui->cbxEncoderVariant->clear();
+ for(quint32 varntIdx = 0; varntIdx < quint32(variants.count()); ++varntIdx)
+ {
+ ui->cbxEncoderVariant->addItem(variants[varntIdx], varntIdx);
+ }
+
+ //Update encoder RC modes
+ const QList<AbstractEncoderInfo::RCMode> rcModes = encoderInfo.getRCModes();
+ ui->cbxRateControlMode->clear();
+ for (quint32 rcIndex = 0; rcIndex < quint32(rcModes.count()); ++rcIndex)
+ {
+ ui->cbxRateControlMode->addItem(rcModes[rcIndex].first, rcIndex);
+ }
+
+ //Update presets
+ const QStringList presets = encoderInfo.getPresets();
+ if(presets.empty())
+ {
+ ui->cbxPreset->setEnabled(false);
+ ui->cbxPreset->setCurrentIndex(0);
+ }
+ else
+ {
+ ui->cbxPreset->setEnabled(true);
+ ui->cbxPreset->clear();
+ ui->cbxPreset->addItem(QString::fromLatin1(OptionsModel::SETTING_UNSPECIFIED));
+ ui->cbxPreset->addItems(presets);
+ }
+
+ //Update tunings
+ const QStringList tunings = encoderInfo.getTunings();
+ if(tunings.empty())
+ {
+ ui->cbxTuning->setEnabled(false);
+ ui->cbxTuning->setCurrentIndex(0);
+ }
+ else
+ {
+ ui->cbxTuning->setEnabled(true);
+ ui->cbxTuning->clear();
+ ui->cbxTuning->addItem(QString::fromLatin1(OptionsModel::SETTING_UNSPECIFIED));
+ ui->cbxTuning->addItems(tunings);
+ }
+
+ variantIndexChanged(ui->cbxEncoderVariant->currentIndex());
+}
+
+void AddJobDialog::variantIndexChanged(int index)
+{
+ const OptionsModel::EncType encType = static_cast<OptionsModel::EncType>(ui->cbxEncoderType->itemData(ui->cbxEncoderType->currentIndex()).toInt());
+ const AbstractEncoderInfo &encoderInfo = EncoderFactory::getEncoderInfo(encType);
+
+ //Update encoder profiles
+ const QStringList profiles = encoderInfo.getProfiles(ui->cbxEncoderVariant->itemData(index).toUInt());
+ if(profiles.empty())
+ {
+ ui->cbxProfile->setEnabled(false);
+ ui->cbxProfile->setCurrentIndex(0);
+ }
+ else
+ {
+ ui->cbxProfile->setEnabled(true);
+ ui->cbxProfile->clear();
+ ui->cbxProfile->addItem(QString::fromLatin1(OptionsModel::PROFILE_UNRESTRICTED));
+ ui->cbxProfile->addItems(profiles);
+ }
+
+ modeIndexChanged(ui->cbxRateControlMode->currentIndex());
+}
+