aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/qmmp/outputwriter.cpp2
-rw-r--r--src/qmmp/qmmpsettings.cpp12
-rw-r--r--src/qmmp/qmmpsettings.h13
-rw-r--r--src/qmmpui/configdialog.cpp9
-rw-r--r--src/qmmpui/forms/configdialog.ui47
5 files changed, 46 insertions, 37 deletions
diff --git a/src/qmmp/outputwriter.cpp b/src/qmmp/outputwriter.cpp
index 8e78bb6c3..5c542e771 100644
--- a/src/qmmp/outputwriter.cpp
+++ b/src/qmmp/outputwriter.cpp
@@ -78,7 +78,7 @@ bool OutputWriter::initialize(quint32 freq, ChannelMap map)
return false;
}
- if (!m_output->initialize(freq, map, Qmmp::PCM_S16LE))
+ if (!m_output->initialize(freq, map, m_settings->outputFormat()))
{
qWarning("OutputWriter: unable to initialize output");
delete m_output;
diff --git a/src/qmmp/qmmpsettings.cpp b/src/qmmp/qmmpsettings.cpp
index 497496cb9..333d388aa 100644
--- a/src/qmmp/qmmpsettings.cpp
+++ b/src/qmmp/qmmpsettings.cpp
@@ -42,7 +42,7 @@ QmmpSettings::QmmpSettings(QObject *parent) : QObject(parent)
settings.endGroup();
//audio settings
m_aud_software_volume = settings.value("Output/software_volume", false).toBool();
- m_aud_16bit = settings.value("Output/use_16bit", false).toBool();
+ m_aud_format = (Qmmp::AudioFormat) settings.value("Output/format", Qmmp::PCM_S16LE).toInt();
m_aud_dithering = settings.value("Output/dithering", true).toBool();
//cover settings
settings.beginGroup("Cover");
@@ -107,9 +107,9 @@ bool QmmpSettings::useSoftVolume() const
return m_aud_software_volume;
}
-bool QmmpSettings::use16BitOutput() const
+Qmmp::AudioFormat QmmpSettings::outputFormat() const
{
- return m_aud_16bit;
+ return m_aud_format;
}
bool QmmpSettings::useDithering() const
@@ -117,10 +117,10 @@ bool QmmpSettings::useDithering() const
return m_aud_dithering;
}
-void QmmpSettings::setAudioSettings(bool soft_volume, bool use_16bit, bool use_dithering)
+void QmmpSettings::setAudioSettings(bool soft_volume, Qmmp::AudioFormat format, bool use_dithering)
{
m_aud_software_volume = soft_volume;
- m_aud_16bit = use_16bit;
+ m_aud_format = format;
m_aud_dithering = use_dithering;
m_timer->start();
emit audioSettingsChanged();
@@ -224,7 +224,7 @@ void QmmpSettings::sync()
settings.endGroup();
//audio settings
settings.setValue("Output/software_volume", m_aud_software_volume);
- settings.setValue("Output/use_16bit", m_aud_16bit);
+ settings.setValue("Output/format", m_aud_format);
settings.setValue("Output/dithering", m_aud_dithering);
//cover settings
settings.beginGroup("Cover");
diff --git a/src/qmmp/qmmpsettings.h b/src/qmmp/qmmpsettings.h
index af8b465fa..03714a289 100644
--- a/src/qmmp/qmmpsettings.h
+++ b/src/qmmp/qmmpsettings.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2010-2013 by Ilya Kotov *
+ * Copyright (C) 2010-2016 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -24,6 +24,7 @@
#include <QObject>
#include <QUrl>
#include <QStringList>
+#include "qmmp.h"
#include "eqsettings.h"
class QTimer;
@@ -83,9 +84,9 @@ public:
*/
bool useSoftVolume() const;
/*!
- * Returns \b true if 16-bit converter is enabled; otherwise returns \b false.
+ * Returns preferd output format.
*/
- bool use16BitOutput() const;
+ Qmmp::AudioFormat outputFormat() const;
/*!
* Returns \b true if dithering is enabled; otherwise returns \b false.
*/
@@ -93,10 +94,10 @@ public:
/*!
* Sets audio settings.
* @param soft_volume State of software volume.
- * @param use_16bit State of the 16-bit audio converter.
+ * @param format Preferd output format. Supported values: Qmmp::PCM_S16LE, Qmmp::PCM_S24LE, Qmmp::PCM_S32LE.
* @param use_dithering Enable/Disable audio dithering.
*/
- void setAudioSettings(bool soft_volume, bool use_16bit, bool use_dithering);
+ void setAudioSettings(bool soft_volume, Qmmp::AudioFormat format, bool use_dithering);
/*!
* If \b include is \b true, this function returns include cover file name filters,
* otherwise returns exclude filters.
@@ -212,8 +213,8 @@ private:
bool m_rg_prevent_clipping;
//audio settings
bool m_aud_software_volume;
- bool m_aud_16bit;
bool m_aud_dithering;
+ Qmmp::AudioFormat m_aud_format;
//cover settings
QStringList m_cover_inc;
QStringList m_cover_exclude;
diff --git a/src/qmmpui/configdialog.cpp b/src/qmmpui/configdialog.cpp
index f84123621..4e3bb9cb2 100644
--- a/src/qmmpui/configdialog.cpp
+++ b/src/qmmpui/configdialog.cpp
@@ -69,6 +69,9 @@ ConfigDialog::ConfigDialog (QWidget *parent) : QDialog (parent)
m_ui->replayGainModeComboBox->addItem (tr("Track"), QmmpSettings::REPLAYGAIN_TRACK);
m_ui->replayGainModeComboBox->addItem (tr("Album"), QmmpSettings::REPLAYGAIN_ALBUM);
m_ui->replayGainModeComboBox->addItem (tr("Disabled"), QmmpSettings::REPLAYGAIN_DISABLED);
+ m_ui->bitDepthComboBox->addItem("16", Qmmp::PCM_S16LE);
+ m_ui->bitDepthComboBox->addItem("24", Qmmp::PCM_S24LE);
+ m_ui->bitDepthComboBox->addItem("32", Qmmp::PCM_S32LE);
readSettings();
loadPluginsInfo();
loadLanguages();
@@ -150,7 +153,7 @@ void ConfigDialog::readSettings()
m_ui->defaultGainDoubleSpinBox->setValue(gs->replayGainDefaultGain());
//audio
m_ui->softVolumeCheckBox->setChecked(gs->useSoftVolume());
- m_ui->use16BitCheckBox->setChecked(gs->use16BitOutput());
+ m_ui->bitDepthComboBox->setCurrentIndex(m_ui->bitDepthComboBox->findData(gs->outputFormat()));
m_ui->ditheringCheckBox->setChecked(gs->useDithering());
m_ui->bufferSizeSpinBox->setValue(gs->bufferSize());
//geometry
@@ -409,7 +412,9 @@ void ConfigDialog::saveSettings()
m_ui->preampDoubleSpinBox->value(),
m_ui->defaultGainDoubleSpinBox->value(),
m_ui->clippingCheckBox->isChecked());
- gs->setAudioSettings(m_ui->softVolumeCheckBox->isChecked(), m_ui->use16BitCheckBox->isChecked(),
+ i = m_ui->bitDepthComboBox->currentIndex();
+ gs->setAudioSettings(m_ui->softVolumeCheckBox->isChecked(),
+ (Qmmp::AudioFormat)m_ui->bitDepthComboBox->itemData(i).toInt(),
m_ui->ditheringCheckBox->isChecked());
gs->setBufferSize(m_ui->bufferSizeSpinBox->value());
gs->setDetermineFileTypeByContent(m_ui->byContentCheckBox->isChecked());
diff --git a/src/qmmpui/forms/configdialog.ui b/src/qmmpui/forms/configdialog.ui
index 1cf7a46ff..55321fcff 100644
--- a/src/qmmpui/forms/configdialog.ui
+++ b/src/qmmpui/forms/configdialog.ui
@@ -758,6 +758,13 @@
<string>Audio</string>
</property>
<layout class="QGridLayout" name="gridLayout3">
+ <item row="3" column="0" colspan="3">
+ <widget class="QCheckBox" name="ditheringCheckBox">
+ <property name="text">
+ <string>Use dithering</string>
+ </property>
+ </widget>
+ </item>
<item row="0" column="0">
<widget class="QLabel" name="label_20">
<property name="text">
@@ -793,39 +800,35 @@
</property>
</widget>
</item>
- <item row="0" column="2">
- <spacer name="horizontalSpacer_6">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>266</width>
- <height>20</height>
- </size>
- </property>
- </spacer>
- </item>
- <item row="1" column="0" colspan="3">
+ <item row="2" column="0" colspan="3">
<widget class="QCheckBox" name="softVolumeCheckBox">
<property name="text">
<string>Use software volume control</string>
</property>
</widget>
</item>
- <item row="2" column="0" colspan="3">
- <widget class="QCheckBox" name="use16BitCheckBox">
+ <item row="1" column="0">
+ <widget class="QLabel" name="label_4">
<property name="text">
- <string>16-bit output</string>
+ <string>Output bit depth:</string>
</property>
</widget>
</item>
- <item row="3" column="0" colspan="3">
- <widget class="QCheckBox" name="ditheringCheckBox">
- <property name="text">
- <string>Use dithering</string>
+ <item row="1" column="1">
+ <widget class="QComboBox" name="bitDepthComboBox"/>
+ </item>
+ <item row="0" column="2" rowspan="2">
+ <spacer name="horizontalSpacer_6">
+ <property name="orientation">
+ <enum>Qt::Horizontal</enum>
</property>
- </widget>
+ <property name="sizeHint" stdset="0">
+ <size>
+ <width>266</width>
+ <height>20</height>
+ </size>
+ </property>
+ </spacer>
</item>
</layout>
</widget>