Add setting for setting reply gain fallback gain
This commit is contained in:
parent
48f8468e65
commit
9d3000498b
|
@ -46,7 +46,8 @@ Engine::Base::Base()
|
|||
device_(QVariant()),
|
||||
rg_enabled_(false),
|
||||
rg_mode_(0),
|
||||
rg_preamp_(0),
|
||||
rg_preamp_(0.0),
|
||||
rg_fallbackgain_(0.0),
|
||||
rg_compression_(true),
|
||||
buffer_duration_nanosec_(BackendSettingsPage::kDefaultBufferDuration * kNsecPerMsec),
|
||||
buffer_low_watermark_(BackendSettingsPage::kDefaultBufferLowWatermark),
|
||||
|
@ -115,7 +116,8 @@ void Engine::Base::ReloadSettings() {
|
|||
|
||||
rg_enabled_ = s.value("rgenabled", false).toBool();
|
||||
rg_mode_ = s.value("rgmode", 0).toInt();
|
||||
rg_preamp_ = s.value("rgpreamp", 0.0).toFloat();
|
||||
rg_preamp_ = s.value("rgpreamp", 0.0).toDouble();
|
||||
rg_fallbackgain_ = s.value("rgfallbackgain", 0.0).toDouble();
|
||||
rg_compression_ = s.value("rgcompression", true).toBool();
|
||||
|
||||
fadeout_enabled_ = s.value("FadeoutEnabled", false).toBool();
|
||||
|
|
|
@ -180,7 +180,8 @@ class Base : public QObject {
|
|||
// ReplayGain
|
||||
bool rg_enabled_;
|
||||
int rg_mode_;
|
||||
float rg_preamp_;
|
||||
double rg_preamp_;
|
||||
double rg_fallbackgain_;
|
||||
bool rg_compression_;
|
||||
|
||||
// Buffering
|
||||
|
|
|
@ -812,7 +812,7 @@ std::shared_ptr<GstEnginePipeline> GstEngine::CreatePipeline() {
|
|||
ret->set_volume_enabled(volume_control_);
|
||||
ret->set_stereo_balancer_enabled(stereo_balancer_enabled_);
|
||||
ret->set_equalizer_enabled(equalizer_enabled_);
|
||||
ret->set_replaygain(rg_enabled_, rg_mode_, rg_preamp_, rg_compression_);
|
||||
ret->set_replaygain(rg_enabled_, rg_mode_, rg_preamp_, rg_fallbackgain_, rg_compression_);
|
||||
ret->set_buffer_duration_nanosec(buffer_duration_nanosec_);
|
||||
ret->set_buffer_low_watermark(buffer_low_watermark_);
|
||||
ret->set_buffer_high_watermark(buffer_high_watermark_);
|
||||
|
|
|
@ -79,6 +79,7 @@ GstEnginePipeline::GstEnginePipeline(GstEngine *engine)
|
|||
eq_preamp_(0),
|
||||
rg_mode_(0),
|
||||
rg_preamp_(0.0),
|
||||
rg_fallbackgain_(0.0),
|
||||
rg_compression_(true),
|
||||
buffer_duration_nanosec_(BackendSettingsPage::kDefaultBufferDuration * kNsecPerMsec),
|
||||
buffer_low_watermark_(BackendSettingsPage::kDefaultBufferLowWatermark),
|
||||
|
@ -176,11 +177,12 @@ void GstEnginePipeline::set_equalizer_enabled(const bool enabled) {
|
|||
if (pipeline_) UpdateEqualizer();
|
||||
}
|
||||
|
||||
void GstEnginePipeline::set_replaygain(const bool enabled, const int mode, const float preamp, const bool compression) {
|
||||
void GstEnginePipeline::set_replaygain(const bool enabled, const int mode, const double preamp, const double fallbackgain, const bool compression) {
|
||||
|
||||
rg_enabled_ = enabled;
|
||||
rg_mode_ = mode;
|
||||
rg_preamp_ = preamp;
|
||||
rg_fallbackgain_ = fallbackgain;
|
||||
rg_compression_ = compression;
|
||||
|
||||
}
|
||||
|
@ -376,7 +378,8 @@ bool GstEnginePipeline::InitAudioBin() {
|
|||
eventprobe = rgconverter;
|
||||
// Set replaygain settings
|
||||
g_object_set(G_OBJECT(rgvolume), "album-mode", rg_mode_, nullptr);
|
||||
g_object_set(G_OBJECT(rgvolume), "pre-amp", double(rg_preamp_), nullptr);
|
||||
g_object_set(G_OBJECT(rgvolume), "pre-amp", rg_preamp_, nullptr);
|
||||
g_object_set(G_OBJECT(rgvolume), "fallback-gain", rg_fallbackgain_, nullptr);
|
||||
g_object_set(G_OBJECT(rglimiter), "enabled", int(rg_compression_), nullptr);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ class GstEnginePipeline : public QObject {
|
|||
void set_volume_enabled(const bool enabled);
|
||||
void set_stereo_balancer_enabled(const bool enabled);
|
||||
void set_equalizer_enabled(const bool enabled);
|
||||
void set_replaygain(const bool enabled, const int mode, const float preamp, const bool compression);
|
||||
void set_replaygain(const bool enabled, const int mode, const double preamp, const double fallbackgain, const bool compression);
|
||||
void set_buffer_duration_nanosec(const qint64 duration_nanosec);
|
||||
void set_buffer_low_watermark(const double value);
|
||||
void set_buffer_high_watermark(const double value);
|
||||
|
@ -205,7 +205,8 @@ class GstEnginePipeline : public QObject {
|
|||
|
||||
// ReplayGain
|
||||
int rg_mode_;
|
||||
float rg_preamp_;
|
||||
double rg_preamp_;
|
||||
double rg_fallbackgain_;
|
||||
bool rg_compression_;
|
||||
|
||||
// Buffering
|
||||
|
|
|
@ -69,8 +69,10 @@ BackendSettingsPage::BackendSettingsPage(SettingsDialog *dialog) : SettingsPage(
|
|||
|
||||
#if (QT_VERSION >= QT_VERSION_CHECK(5, 11, 0))
|
||||
ui_->label_replaygainpreamp->setMinimumWidth(QFontMetrics(ui_->label_replaygainpreamp->font()).horizontalAdvance("-WW.W dB"));
|
||||
ui_->label_replaygainfallbackgain->setMinimumWidth(QFontMetrics(ui_->label_replaygainfallbackgain->font()).horizontalAdvance("-WW.W dB"));
|
||||
#else
|
||||
ui_->label_replaygainpreamp->setMinimumWidth(QFontMetrics(ui_->label_replaygainpreamp->font()).width("-WW.W dB"));
|
||||
ui_->label_replaygainfallbackgain->setMinimumWidth(QFontMetrics(ui_->label_replaygainfallbackgain->font()).width("-WW.W dB"));
|
||||
#endif
|
||||
|
||||
}
|
||||
|
@ -116,8 +118,9 @@ void BackendSettingsPage::Load() {
|
|||
|
||||
ui_->checkbox_replaygain->setChecked(s.value("rgenabled", false).toBool());
|
||||
ui_->combobox_replaygainmode->setCurrentIndex(s.value("rgmode", 0).toInt());
|
||||
ui_->stickslider_replaygainpreamp->setValue(static_cast<int>(s.value("rgpreamp", 0.0).toDouble() * 10 + 150));
|
||||
ui_->stickyslider_replaygainpreamp->setValue(static_cast<int>(s.value("rgpreamp", 0.0).toDouble() * 10 + 600));
|
||||
ui_->checkbox_replaygaincompression->setChecked(s.value("rgcompression", true).toBool());
|
||||
ui_->stickyslider_replaygainfallbackgain->setValue(static_cast<int>(s.value("rgfallbackgain", 0.0).toDouble() * 10 + 600));
|
||||
|
||||
#if defined(HAVE_ALSA)
|
||||
bool fade_default = false;
|
||||
|
@ -173,7 +176,8 @@ void BackendSettingsPage::Load() {
|
|||
QObject::connect(ui_->radiobutton_alsa_hw, &QRadioButton::clicked, this, &BackendSettingsPage::radiobutton_alsa_hw_clicked);
|
||||
QObject::connect(ui_->radiobutton_alsa_plughw, &QRadioButton::clicked, this, &BackendSettingsPage::radiobutton_alsa_plughw_clicked);
|
||||
#endif
|
||||
QObject::connect(ui_->stickslider_replaygainpreamp, &StickySlider::valueChanged, this, &BackendSettingsPage::RgPreampChanged);
|
||||
QObject::connect(ui_->stickyslider_replaygainpreamp, &StickySlider::valueChanged, this, &BackendSettingsPage::RgPreampChanged);
|
||||
QObject::connect(ui_->stickyslider_replaygainfallbackgain, &StickySlider::valueChanged, this, &BackendSettingsPage::RgFallbackGainChanged);
|
||||
QObject::connect(ui_->checkbox_fadeout_stop, &QCheckBox::toggled, this, &BackendSettingsPage::FadingOptionsChanged);
|
||||
QObject::connect(ui_->checkbox_fadeout_cross, &QCheckBox::toggled, this, &BackendSettingsPage::FadingOptionsChanged);
|
||||
QObject::connect(ui_->checkbox_fadeout_auto, &QCheckBox::toggled, this, &BackendSettingsPage::FadingOptionsChanged);
|
||||
|
@ -181,7 +185,8 @@ void BackendSettingsPage::Load() {
|
|||
QObject::connect(ui_->button_buffer_defaults, &QPushButton::clicked, this, &BackendSettingsPage::BufferDefaults);
|
||||
|
||||
FadingOptionsChanged();
|
||||
RgPreampChanged(ui_->stickslider_replaygainpreamp->value());
|
||||
RgPreampChanged(ui_->stickyslider_replaygainpreamp->value());
|
||||
RgFallbackGainChanged(ui_->stickyslider_replaygainfallbackgain->value());
|
||||
|
||||
Init(ui_->layout_backendsettingspage->parentWidget());
|
||||
if (!QSettings().childGroups().contains(kSettingsGroup)) set_changed();
|
||||
|
@ -422,7 +427,8 @@ void BackendSettingsPage::Save() {
|
|||
|
||||
s.setValue("rgenabled", ui_->checkbox_replaygain->isChecked());
|
||||
s.setValue("rgmode", ui_->combobox_replaygainmode->currentIndex());
|
||||
s.setValue("rgpreamp", float(ui_->stickslider_replaygainpreamp->value()) / 10 - 15);
|
||||
s.setValue("rgpreamp", double(ui_->stickyslider_replaygainpreamp->value()) / 10 - 60);
|
||||
s.setValue("rgfallbackgain", double(ui_->stickyslider_replaygainfallbackgain->value()) / 10 - 60);
|
||||
s.setValue("rgcompression", ui_->checkbox_replaygaincompression->isChecked());
|
||||
|
||||
s.setValue("FadeoutEnabled", ui_->checkbox_fadeout_stop->isChecked());
|
||||
|
@ -570,12 +576,20 @@ void BackendSettingsPage::DeviceStringChanged() {
|
|||
|
||||
void BackendSettingsPage::RgPreampChanged(const int value) {
|
||||
|
||||
float db = float(value) / 10 - 15;
|
||||
double db = double(value) / 10 - 60;
|
||||
QString db_str = QString::asprintf("%+.1f dB", db);
|
||||
ui_->label_replaygainpreamp->setText(db_str);
|
||||
|
||||
}
|
||||
|
||||
void BackendSettingsPage::RgFallbackGainChanged(const int value) {
|
||||
|
||||
double db = double(value) / 10 - 60;
|
||||
QString db_str = QString::asprintf("%+.1f dB", db);
|
||||
ui_->label_replaygainfallbackgain->setText(db_str);
|
||||
|
||||
}
|
||||
|
||||
#ifdef HAVE_ALSA
|
||||
void BackendSettingsPage::SwitchALSADevices(const alsa_plugin alsaplugin) {
|
||||
|
||||
|
|
|
@ -61,6 +61,7 @@ public:
|
|||
void DeviceSelectionChanged(const int index);
|
||||
void DeviceStringChanged();
|
||||
void RgPreampChanged(const int value);
|
||||
void RgFallbackGainChanged(const int value);
|
||||
void radiobutton_alsa_hw_clicked(const bool checked);
|
||||
void radiobutton_alsa_plughw_clicked(const bool checked);
|
||||
void FadingOptionsChanged();
|
||||
|
|
|
@ -440,30 +440,63 @@
|
|||
<widget class="QLabel" name="label_replaygainpreamp"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="StickySlider" name="stickslider_replaygainpreamp">
|
||||
<widget class="StickySlider" name="stickyslider_replaygainpreamp">
|
||||
<property name="maximum">
|
||||
<number>300</number>
|
||||
<number>1200</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>150</number>
|
||||
<number>600</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sticky_center" stdset="0">
|
||||
<number>150</number>
|
||||
<number>600</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0" colspan="2">
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QCheckBox" name="checkbox_replaygaincompression">
|
||||
<property name="text">
|
||||
<string>Apply compression to prevent clipping</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<layout class="QHBoxLayout" name="layout_replaygainfallbackgain">
|
||||
<item>
|
||||
<widget class="QLabel" name="label_replaygainfallbackgain"/>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="StickySlider" name="stickyslider_replaygainfallbackgain">
|
||||
<property name="minimum">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="maximum">
|
||||
<number>1200</number>
|
||||
</property>
|
||||
<property name="value">
|
||||
<number>600</number>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sticky_center" stdset="0">
|
||||
<number>600</number>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="2" column="0">
|
||||
<widget class="QLabel" name="label_fallbackgain">
|
||||
<property name="text">
|
||||
<string>Fallback-gain</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
@ -663,7 +696,8 @@
|
|||
<tabstop>button_buffer_defaults</tabstop>
|
||||
<tabstop>checkbox_replaygain</tabstop>
|
||||
<tabstop>combobox_replaygainmode</tabstop>
|
||||
<tabstop>stickslider_replaygainpreamp</tabstop>
|
||||
<tabstop>stickyslider_replaygainpreamp</tabstop>
|
||||
<tabstop>stickyslider_replaygainfallbackgain</tabstop>
|
||||
<tabstop>checkbox_replaygaincompression</tabstop>
|
||||
<tabstop>checkbox_fadeout_stop</tabstop>
|
||||
<tabstop>checkbox_fadeout_cross</tabstop>
|
||||
|
|
Loading…
Reference in New Issue