From 2ae491146e17b34e3a3973d96289e136ff0c4002 Mon Sep 17 00:00:00 2001 From: trialuser02 Date: Fri, 21 Feb 2020 19:06:38 +0000 Subject: 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 --- src/qmmp/outputwriter.cpp | 7 ++++++- src/qmmp/outputwriter_p.h | 1 + src/qmmp/qmmpsettings.cpp | 14 ++++++++++++++ src/qmmp/qmmpsettings.h | 12 ++++++++++++ src/qmmpui/configdialog.cpp | 2 ++ src/qmmpui/forms/configdialog.ui | 19 +++++++++++++------ 6 files changed, 48 insertions(+), 7 deletions(-) (limited to 'src') 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(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 @@ -185,6 +185,17 @@ public: * Returns volume adjustment step. */ 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. @@ -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 @@ 0 0 - 640 - 489 + 739 + 545 @@ -341,15 +341,15 @@ Look and Feel - - + + Language: - + @@ -359,7 +359,7 @@ - + Qt::Horizontal @@ -375,6 +375,13 @@ + + + + Display average bitrate + + + -- cgit v1.2.3-13-gbd6f