aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-02-21 19:06:38 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2020-02-21 19:06:38 +0000
commit2ae491146e17b34e3a3973d96289e136ff0c4002 (patch)
tree0fa2138032fc67adc9a69f91c98f282461bfe434
parent94d94622cb6067a073833b1e4afe306878a1e584 (diff)
downloadqmmp-2ae491146e17b34e3a3973d96289e136ff0c4002.tar.gz
qmmp-2ae491146e17b34e3a3973d96289e136ff0c4002.tar.bz2
qmmp-2ae491146e17b34e3a3973d96289e136ff0c4002.zip
feature to display average bitrate (#1032)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@9239 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/qmmp/outputwriter.cpp7
-rw-r--r--src/qmmp/outputwriter_p.h1
-rw-r--r--src/qmmp/qmmpsettings.cpp14
-rw-r--r--src/qmmp/qmmpsettings.h12
-rw-r--r--src/qmmpui/configdialog.cpp2
-rw-r--r--src/qmmpui/forms/configdialog.ui19
6 files changed, 48 insertions, 7 deletions
diff --git a/src/qmmp/outputwriter.cpp b/src/qmmp/outputwriter.cpp
index 64a2fd1a5..4eb6c4b46 100644
--- a/src/qmmp/outputwriter.cpp
+++ b/src/qmmp/outputwriter.cpp
@@ -71,6 +71,7 @@ bool OutputWriter::initialize(quint32 freq, ChannelMap map)
m_chan_map = m_output->channelMap();
m_channels = m_chan_map.count();
m_format = m_output->format();
+ m_abr = m_settings->averageBitrate();
qDebug("OutputWriter: [%s] %s ==> %s",
qPrintable(Output::currentFactory()->properties().shortName),
@@ -269,10 +270,14 @@ void OutputWriter::run()
{
if((b = recycler()->next()))
{
- if(b->rate)
+ if(b->rate && !m_abr)
m_kbps = b->rate;
if(b->trackInfo)
+ {
m_output->setTrackInfo(*b->trackInfo);
+ if(m_abr)
+ m_kbps = b->trackInfo->value(Qmmp::BITRATE).toInt();
+ }
}
}
diff --git a/src/qmmp/outputwriter_p.h b/src/qmmp/outputwriter_p.h
index 379e12019..6989d40c8 100644
--- a/src/qmmp/outputwriter_p.h
+++ b/src/qmmp/outputwriter_p.h
@@ -112,6 +112,7 @@ private:
std::atomic_bool m_finish = ATOMIC_VAR_INIT(false);
bool m_paused = false;
bool m_useEq = false;
+ bool m_abr = false;
qint64 m_totalWritten = 0, m_currentMilliseconds = -1;
QmmpSettings *m_settings;
Output *m_output = nullptr;
diff --git a/src/qmmp/qmmpsettings.cpp b/src/qmmp/qmmpsettings.cpp
index a078d0613..612e94fe6 100644
--- a/src/qmmp/qmmpsettings.cpp
+++ b/src/qmmp/qmmpsettings.cpp
@@ -45,6 +45,7 @@ QmmpSettings::QmmpSettings(QObject *parent) : QObject(parent)
m_aud_format = static_cast<Qmmp::AudioFormat>(settings.value("Output/format", Qmmp::PCM_S16LE).toInt());
m_aud_dithering = settings.value("Output/dithering", true).toBool();
m_volume_step = settings.value("Output/volume_step", 5).toInt();
+ m_average_bitrate = settings.value("Output/average_bitrate", false).toBool();
//cover settings
settings.beginGroup("Cover");
m_cover_inc = settings.value("include", (QStringList() << "*.jpg" << "*.png")).toStringList();
@@ -230,6 +231,18 @@ int QmmpSettings::volumeStep() const
return m_volume_step;
}
+void QmmpSettings::setAverageBitrate(bool enabled)
+{
+ m_average_bitrate = enabled;
+ m_timer->start();
+ emit audioSettingsChanged();
+}
+
+bool QmmpSettings::averageBitrate() const
+{
+ return m_average_bitrate;
+}
+
void QmmpSettings::sync()
{
qDebug("%s", Q_FUNC_INFO);
@@ -246,6 +259,7 @@ void QmmpSettings::sync()
settings.setValue("Output/format", m_aud_format);
settings.setValue("Output/dithering", m_aud_dithering);
settings.setValue("Output/volume_step", m_volume_step);
+ settings.setValue("Output/average_bitrate", m_average_bitrate);
//cover settings
settings.beginGroup("Cover");
settings.setValue("include", m_cover_inc);
diff --git a/src/qmmp/qmmpsettings.h b/src/qmmp/qmmpsettings.h
index 7a4f9c785..76f665fca 100644
--- a/src/qmmp/qmmpsettings.h
+++ b/src/qmmp/qmmpsettings.h
@@ -186,6 +186,17 @@ public:
*/
int volumeStep() const;
/*!
+ * Enables/Disables average bitrate displaying.
+ * @param enabled State of the average bitrate displaying
+ * (\b true - enabled, \b false - disabled). This function emits
+ * \b audioSettingsChanged() signal.
+ */
+ void setAverageBitrate(bool enabled);
+ /*!
+ * Returns \b true if average bitrate displaying is enabled, otherwise returns \b false
+ */
+ bool averageBitrate() const;
+ /*!
* Enables/Disables file type determination by content.
* @param enabled State of the content based type determination.
* (\b true - enabled, \b false - disabled).
@@ -239,6 +250,7 @@ private:
bool m_aud_dithering;
Qmmp::AudioFormat m_aud_format;
int m_volume_step;
+ bool m_average_bitrate;
//cover settings
QStringList m_cover_inc;
QStringList m_cover_exclude;
diff --git a/src/qmmpui/configdialog.cpp b/src/qmmpui/configdialog.cpp
index 860ad80f5..60c701d11 100644
--- a/src/qmmpui/configdialog.cpp
+++ b/src/qmmpui/configdialog.cpp
@@ -162,6 +162,7 @@ void ConfigDialog::readSettings()
m_ui->bitDepthComboBox->setCurrentIndex(m_ui->bitDepthComboBox->findData(gs->outputFormat()));
m_ui->ditheringCheckBox->setChecked(gs->useDithering());
m_ui->bufferSizeSpinBox->setValue(gs->bufferSize());
+ m_ui->abrCheckBox->setChecked(gs->averageBitrate());
//equalizer
m_ui->twoPassEqCheckBox->setChecked(gs->eqSettings().twoPasses());
//geometry
@@ -425,6 +426,7 @@ void ConfigDialog::saveSettings()
gs->setAudioSettings(m_ui->softVolumeCheckBox->isChecked(),
(Qmmp::AudioFormat)m_ui->bitDepthComboBox->itemData(i).toInt(),
m_ui->ditheringCheckBox->isChecked());
+ gs->setAverageBitrate(m_ui->abrCheckBox->isChecked());
gs->setBufferSize(m_ui->bufferSizeSpinBox->value());
gs->setDetermineFileTypeByContent(m_ui->byContentCheckBox->isChecked());
gs->setVolumeStep(m_ui->volumeStepSpinBox->value());
diff --git a/src/qmmpui/forms/configdialog.ui b/src/qmmpui/forms/configdialog.ui
index 0960b807a..9bc4d8cc6 100644
--- a/src/qmmpui/forms/configdialog.ui
+++ b/src/qmmpui/forms/configdialog.ui
@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
- <width>640</width>
- <height>489</height>
+ <width>739</width>
+ <height>545</height>
</rect>
</property>
<property name="windowTitle">
@@ -341,15 +341,15 @@
<property name="title">
<string>Look and Feel</string>
</property>
- <layout class="QHBoxLayout" name="horizontalLayout">
- <item>
+ <layout class="QGridLayout" name="gridLayout_2">
+ <item row="0" column="0">
<widget class="QLabel" name="label_10">
<property name="text">
<string>Language:</string>
</property>
</widget>
</item>
- <item>
+ <item row="0" column="1">
<widget class="QComboBox" name="langComboBox">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
@@ -359,7 +359,7 @@
</property>
</widget>
</item>
- <item>
+ <item row="0" column="2">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@@ -375,6 +375,13 @@
</property>
</spacer>
</item>
+ <item row="1" column="0" colspan="3">
+ <widget class="QCheckBox" name="abrCheckBox">
+ <property name="text">
+ <string>Display average bitrate</string>
+ </property>
+ </widget>
+ </item>
</layout>
</widget>
</item>