aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-12-26 22:41:24 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2009-12-26 22:41:24 +0000
commitdb21f3b3428d88b19d2f82ae933830153310a1f1 (patch)
tree76da52ae3cace5b6030f1967cba61302f09e420f
parent2d1d2a4a807fced7d2b5e56998da67149bc2010e (diff)
downloadqmmp-db21f3b3428d88b19d2f82ae933830153310a1f1.tar.gz
qmmp-db21f3b3428d88b19d2f82ae933830153310a1f1.tar.bz2
qmmp-db21f3b3428d88b19d2f82ae933830153310a1f1.zip
enabled replaygain support (for mp3 file with ape tags only)
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1453 90c681e8-e032-0410-971d-27865f9a5e38
-rw-r--r--src/plugins/Input/mad/CMakeLists.txt2
-rw-r--r--src/plugins/Input/mad/decoder_mad.cpp21
-rw-r--r--src/plugins/Input/mad/decoder_mad.h3
-rw-r--r--src/plugins/Input/mad/decodermadfactory.cpp18
-rw-r--r--src/plugins/Input/mad/decodermadfactory.h3
-rw-r--r--src/plugins/Input/mad/mad.pro9
-rw-r--r--src/plugins/Input/mad/replaygainreader.cpp63
-rw-r--r--src/plugins/Input/mad/replaygainreader.h44
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_cs.ts14
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_de.ts14
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_it.ts14
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_lt.ts14
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_pl.ts14
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_ru.ts14
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_tr.ts14
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts14
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts14
-rw-r--r--src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts14
-rw-r--r--src/qmmp/decoder.cpp15
-rw-r--r--src/qmmp/decoder.h15
-rw-r--r--src/qmmp/qmmpaudioengine.cpp7
-rw-r--r--src/qmmp/replaygain.cpp32
-rw-r--r--src/qmmp/replaygainsettings.cpp6
-rw-r--r--src/qmmp/soundcore.cpp30
-rw-r--r--src/qmmp/soundcore.h4
-rw-r--r--src/ui/configdialog.cpp8
-rw-r--r--src/ui/forms/configdialog.ui18
-rw-r--r--src/ui/translations/qmmp_cs.ts20
-rw-r--r--src/ui/translations/qmmp_de.ts20
-rw-r--r--src/ui/translations/qmmp_it.ts20
-rw-r--r--src/ui/translations/qmmp_lt.ts20
-rw-r--r--src/ui/translations/qmmp_pl_PL.ts20
-rw-r--r--src/ui/translations/qmmp_pt_BR.ts20
-rw-r--r--src/ui/translations/qmmp_ru.ts20
-rw-r--r--src/ui/translations/qmmp_tr.ts20
-rw-r--r--src/ui/translations/qmmp_uk_UA.ts58
-rw-r--r--src/ui/translations/qmmp_zh_CN.ts20
-rw-r--r--src/ui/translations/qmmp_zh_TW.ts20
38 files changed, 452 insertions, 244 deletions
diff --git a/src/plugins/Input/mad/CMakeLists.txt b/src/plugins/Input/mad/CMakeLists.txt
index 174f4f696..e4e0d8130 100644
--- a/src/plugins/Input/mad/CMakeLists.txt
+++ b/src/plugins/Input/mad/CMakeLists.txt
@@ -38,6 +38,7 @@ SET(libmad_SRCS
settingsdialog.cpp
tagextractor.cpp
mpegmetadatamodel.cpp
+ replaygainreader.cpp
)
SET(libmad_MOC_HDRS
@@ -46,6 +47,7 @@ SET(libmad_MOC_HDRS
decoder_mad.h
tagextractor.h
mpegmetadatamodel.h
+ replaygainreader.h
)
SET(libmad_RCCS translations/translations.qrc)
diff --git a/src/plugins/Input/mad/decoder_mad.cpp b/src/plugins/Input/mad/decoder_mad.cpp
index 3707abcbc..f76ff9350 100644
--- a/src/plugins/Input/mad/decoder_mad.cpp
+++ b/src/plugins/Input/mad/decoder_mad.cpp
@@ -8,21 +8,18 @@
#include <QtGui>
#include <taglib/id3v2header.h>
#include <taglib/tbytevector.h>
-
-#include "decoder_mad.h"
-#include "tagextractor.h"
#include <qmmp/buffer.h>
#include <qmmp/output.h>
-
#include <math.h>
#include <stdio.h>
+#include "tagextractor.h"
+#include "replaygainreader.h"
+#include "decoder_mad.h"
#define XING_MAGIC (('X' << 24) | ('i' << 16) | ('n' << 8) | 'g')
#define INPUT_BUFFER_SIZE (32*1024)
-
-DecoderMAD::DecoderMAD(QIODevice *i)
- : Decoder(i)
+DecoderMAD::DecoderMAD(const QString &url, QIODevice *i) : Decoder(i)
{
m_inited = false;
m_totalTime = 0;
@@ -36,6 +33,7 @@ DecoderMAD::DecoderMAD(QIODevice *i)
m_output_at = 0;
m_skip_frames = 0;
m_eof = false;
+ m_url = url;
}
DecoderMAD::~DecoderMAD()
@@ -100,7 +98,14 @@ bool DecoderMAD::initialize()
mad_frame_mute (&frame);
stream.next_frame = 0;
stream.sync = 0;
- configure(m_freq, m_channels, 16);
+
+ if(!m_url.contains("://"))
+ {
+ ReplayGainReader rg(m_url);
+ configure(m_freq, m_channels, 16, rg.replayGainInfo());
+ }
+ else
+ configure(m_freq, m_channels, 16);
m_inited = TRUE;
return TRUE;
diff --git a/src/plugins/Input/mad/decoder_mad.h b/src/plugins/Input/mad/decoder_mad.h
index c78e3f8c8..a98f7fbf7 100644
--- a/src/plugins/Input/mad/decoder_mad.h
+++ b/src/plugins/Input/mad/decoder_mad.h
@@ -22,7 +22,7 @@ extern "C"
class DecoderMAD : public Decoder
{
public:
- DecoderMAD(QIODevice *i);
+ DecoderMAD(const QString &url, QIODevice *i);
virtual ~DecoderMAD();
// standard decoder API
@@ -46,6 +46,7 @@ private:
uint m_bitrate;
long m_freq, m_len;
qint64 m_output_bytes, m_output_at;
+ QString m_url;
// file input buffer
char *m_input_buf;
diff --git a/src/plugins/Input/mad/decodermadfactory.cpp b/src/plugins/Input/mad/decodermadfactory.cpp
index fa89e5f5d..2ec86e011 100644
--- a/src/plugins/Input/mad/decodermadfactory.cpp
+++ b/src/plugins/Input/mad/decodermadfactory.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008 by Ilya Kotov *
+ * Copyright (C) 2008-2009 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -30,7 +30,6 @@
#include <taglib/apetag.h>
#include <taglib/tfile.h>
#include <taglib/mpegfile.h>
-
#include "mpegmetadatamodel.h"
#include "settingsdialog.h"
#include "decoder_mad.h"
@@ -94,9 +93,9 @@ const DecoderProperties DecoderMADFactory::properties() const
return properties;
}
-Decoder *DecoderMADFactory::create(const QString&, QIODevice *input)
+Decoder *DecoderMADFactory::create(const QString &url, QIODevice *input)
{
- return new DecoderMAD(input);
+ return new DecoderMAD(url, input);
}
QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, bool useMetaData)
@@ -117,21 +116,17 @@ QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, boo
tag_array[1] = settings.value("tag_2", SettingsDialog::Disabled).toInt();
tag_array[2] = settings.value("tag_3", SettingsDialog::Disabled).toInt();
-
+ QByteArray name;
for (int i = 0; i < 3; ++i)
{
switch ((uint) tag_array[i])
{
case SettingsDialog::ID3v1:
- {
codec = QTextCodec::codecForName(settings.value("ID3v1_encoding","ISO-8859-1")
.toByteArray ());
tag = fileRef.ID3v1Tag();
break;
- }
case SettingsDialog::ID3v2:
- {
- QByteArray name;
name = settings.value("ID3v2_encoding","UTF-8").toByteArray ();
if (name.contains("UTF"))
codec = QTextCodec::codecForName ("UTF-8");
@@ -139,18 +134,13 @@ QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, boo
codec = QTextCodec::codecForName(name);
tag = fileRef.ID3v2Tag();
break;
- }
case SettingsDialog::APE:
- {
codec = QTextCodec::codecForName ("UTF-8");
tag = fileRef.APETag();
break;
- }
case SettingsDialog::Disabled:
- {
break;
}
- }
if (tag && !tag->isEmpty())
break;
}
diff --git a/src/plugins/Input/mad/decodermadfactory.h b/src/plugins/Input/mad/decodermadfactory.h
index a4e18c8f4..a9831cd08 100644
--- a/src/plugins/Input/mad/decodermadfactory.h
+++ b/src/plugins/Input/mad/decodermadfactory.h
@@ -30,9 +30,6 @@
#include <qmmp/decoderfactory.h>
#include <qmmp/metadatamodel.h>
-
-
-
class DecoderMADFactory : public QObject,
DecoderFactory
{
diff --git a/src/plugins/Input/mad/mad.pro b/src/plugins/Input/mad/mad.pro
index db7bab22a..d83092b77 100644
--- a/src/plugins/Input/mad/mad.pro
+++ b/src/plugins/Input/mad/mad.pro
@@ -4,12 +4,14 @@ HEADERS += decodermadfactory.h \
decoder_mad.h \
settingsdialog.h \
tagextractor.h \
- mpegmetadatamodel.h
+ mpegmetadatamodel.h \
+ replaygainreader.h
SOURCES += decoder_mad.cpp \
decodermadfactory.cpp \
settingsdialog.cpp \
tagextractor.cpp \
- mpegmetadatamodel.cpp
+ mpegmetadatamodel.cpp \
+ replaygainreader.cpp
TARGET = $$PLUGINS_PREFIX/Input/mad
unix:QMAKE_CLEAN = $$PLUGINS_PREFIX/Input/libmad.so
INCLUDEPATH += ../../../ \
@@ -47,6 +49,5 @@ unix {
target.path = $$LIB_DIR/qmmp/Input
INSTALLS += target
}
-
win32:HEADERS += ../../../../src/qmmp/metadatamodel.h \
- ../../../../src/qmmp/decoderfactory.h
+ ../../../../src/qmmp/decoderfactory.h
diff --git a/src/plugins/Input/mad/replaygainreader.cpp b/src/plugins/Input/mad/replaygainreader.cpp
new file mode 100644
index 000000000..88f3dc974
--- /dev/null
+++ b/src/plugins/Input/mad/replaygainreader.cpp
@@ -0,0 +1,63 @@
+/***************************************************************************
+ * Copyright (C) 2009 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#include <QtGlobal>
+#include <taglib/mpegfile.h>
+#include <taglib/id3v2tag.h>
+#include <taglib/tag.h>
+#include <taglib/id3v1tag.h>
+#include <taglib/id3v2header.h>
+#include "replaygainreader.h"
+
+ReplayGainReader::ReplayGainReader(const QString &path)
+{
+ TagLib::MPEG::File fileRef(path.toLocal8Bit ().constData());
+ if(fileRef.APETag())
+ readAPE(fileRef.APETag());
+}
+
+QMap <Qmmp::ReplayGainKey, double> ReplayGainReader::replayGainInfo() const
+{
+ return m_values;
+}
+
+void ReplayGainReader::readAPE(TagLib::APE::Tag *tag)
+{
+ TagLib::APE::ItemListMap items = tag->itemListMap();
+ if (items.contains("REPLAYGAIN_TRACK_GAIN"))
+ setValue(Qmmp::REPLAYGAIN_TRACK_GAIN,TStringToQString(items["REPLAYGAIN_TRACK_GAIN"].values()[0]));
+ if (items.contains("REPLAYGAIN_TRACK_PEAK"))
+ setValue(Qmmp::REPLAYGAIN_TRACK_PEAK,TStringToQString(items["REPLAYGAIN_TRACK_PEAK"].values()[0]));
+ if (items.contains("REPLAYGAIN_ALBUM_GAIN"))
+ setValue(Qmmp::REPLAYGAIN_ALBUM_GAIN,TStringToQString(items["REPLAYGAIN_ALBUM_GAIN"].values()[0]));
+ if (items.contains("REPLAYGAIN_ALBUM_PEAK"))
+ setValue(Qmmp::REPLAYGAIN_ALBUM_PEAK,TStringToQString(items["REPLAYGAIN_ALBUM_PEAK"].values()[0]));
+}
+
+void ReplayGainReader::setValue(Qmmp::ReplayGainKey key, QString value)
+{
+ value.remove(" dB");
+ if(value.isEmpty())
+ return;
+ bool ok;
+ double v = value.toDouble(&ok);
+ if(ok)
+ m_values[key] = v;
+}
diff --git a/src/plugins/Input/mad/replaygainreader.h b/src/plugins/Input/mad/replaygainreader.h
new file mode 100644
index 000000000..2129a69d6
--- /dev/null
+++ b/src/plugins/Input/mad/replaygainreader.h
@@ -0,0 +1,44 @@
+/***************************************************************************
+ * Copyright (C) 2009 by Ilya Kotov *
+ * forkotov02@hotmail.ru *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ ***************************************************************************/
+
+#ifndef REPLAYGAINREADER_H
+#define REPLAYGAINREADER_H
+
+#include <QMap>
+#include <QString>
+#include <taglib/apetag.h>
+#include <qmmp/qmmp.h>
+
+/**
+ @author Ilya Kotov <forkotov02@hotmail.ru>
+*/
+class ReplayGainReader
+{
+public:
+ ReplayGainReader(const QString &path);
+ QMap <Qmmp::ReplayGainKey, double> replayGainInfo() const;
+
+private:
+ void readAPE(TagLib::APE::Tag *tag);
+ void setValue(Qmmp::ReplayGainKey key, QString value);
+ QMap <Qmmp::ReplayGainKey, double> m_values;
+};
+
+#endif // REPLAYGAINREADER_H
diff --git a/src/plugins/Input/mad/translations/mad_plugin_cs.ts b/src/plugins/Input/mad/translations/mad_plugin_cs.ts
index ff4cb3afe..ac90ee91e 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_cs.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_cs.ts
@@ -4,37 +4,37 @@
<context>
<name>DecoderMADFactory</name>
<message>
- <location filename="../decodermadfactory.cpp" line="87"/>
+ <location filename="../decodermadfactory.cpp" line="86"/>
<source>MPEG Plugin</source>
<translation>Modul MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="90"/>
+ <location filename="../decodermadfactory.cpp" line="89"/>
<source>MPEG Files</source>
<translation>Soubory MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="223"/>
+ <location filename="../decodermadfactory.cpp" line="213"/>
<source>About MPEG Audio Plugin</source>
<translation>O modulu MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="224"/>
+ <location filename="../decodermadfactory.cpp" line="214"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Vstupní modul Qmmp MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="215"/>
<source>Compiled against libmad version:</source>
<translation>Zkompilováno s libmad verze:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="229"/>
+ <location filename="../decodermadfactory.cpp" line="219"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Autor: Ilja Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="230"/>
+ <location filename="../decodermadfactory.cpp" line="220"/>
<source>Source code based on mq3 progect</source>
<translation>Zdrojový kód je založen na projektu mq3</translation>
</message>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_de.ts b/src/plugins/Input/mad/translations/mad_plugin_de.ts
index 4b5280861..091f7a4aa 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_de.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_de.ts
@@ -4,37 +4,37 @@
<context>
<name>DecoderMADFactory</name>
<message>
- <location filename="../decodermadfactory.cpp" line="87"/>
+ <location filename="../decodermadfactory.cpp" line="86"/>
<source>MPEG Plugin</source>
<translation>MPEG-Modul</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="90"/>
+ <location filename="../decodermadfactory.cpp" line="89"/>
<source>MPEG Files</source>
<translation>MPEG-Dateien</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="223"/>
+ <location filename="../decodermadfactory.cpp" line="213"/>
<source>About MPEG Audio Plugin</source>
<translation>Über MPEG-Audio-Modul</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="224"/>
+ <location filename="../decodermadfactory.cpp" line="214"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Qmmp MPEG-Audio-Modul</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="215"/>
<source>Compiled against libmad version:</source>
<translation>Kompiliert gegen libmad-Version:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="229"/>
+ <location filename="../decodermadfactory.cpp" line="219"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Autor: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="230"/>
+ <location filename="../decodermadfactory.cpp" line="220"/>
<source>Source code based on mq3 progect</source>
<translation>Quellcode basiert auf dem mq3-Projekt</translation>
</message>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_it.ts b/src/plugins/Input/mad/translations/mad_plugin_it.ts
index cdd9f1316..df9f0126e 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_it.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_it.ts
@@ -4,37 +4,37 @@
<context>
<name>DecoderMADFactory</name>
<message>
- <location filename="../decodermadfactory.cpp" line="87"/>
+ <location filename="../decodermadfactory.cpp" line="86"/>
<source>MPEG Plugin</source>
<translation>Modulo MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="90"/>
+ <location filename="../decodermadfactory.cpp" line="89"/>
<source>MPEG Files</source>
<translation>Brani MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="223"/>
+ <location filename="../decodermadfactory.cpp" line="213"/>
<source>About MPEG Audio Plugin</source>
<translation>Info sul modulo audio MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="224"/>
+ <location filename="../decodermadfactory.cpp" line="214"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Modulo audio MPEG per Qmmp</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="215"/>
<source>Compiled against libmad version:</source>
<translation>Compilato con libmad-Version:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="229"/>
+ <location filename="../decodermadfactory.cpp" line="219"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Autore: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="230"/>
+ <location filename="../decodermadfactory.cpp" line="220"/>
<source>Source code based on mq3 progect</source>
<translation>Codice sorgente basato sul progetto mq3</translation>
</message>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_lt.ts b/src/plugins/Input/mad/translations/mad_plugin_lt.ts
index ec3ceeb58..9e6851995 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_lt.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_lt.ts
@@ -4,37 +4,37 @@
<context>
<name>DecoderMADFactory</name>
<message>
- <location filename="../decodermadfactory.cpp" line="87"/>
+ <location filename="../decodermadfactory.cpp" line="86"/>
<source>MPEG Plugin</source>
<translation>MPEG įskiepis</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="90"/>
+ <location filename="../decodermadfactory.cpp" line="89"/>
<source>MPEG Files</source>
<translation>MPEG bylos</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="223"/>
+ <location filename="../decodermadfactory.cpp" line="213"/>
<source>About MPEG Audio Plugin</source>
<translation>Apie MPEG audio įskiepį</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="224"/>
+ <location filename="../decodermadfactory.cpp" line="214"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Qmmp MPEG įskiepis</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="215"/>
<source>Compiled against libmad version:</source>
<translation>Sukurta libmad pagrindu:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="229"/>
+ <location filename="../decodermadfactory.cpp" line="219"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Sukūrė: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="230"/>
+ <location filename="../decodermadfactory.cpp" line="220"/>
<source>Source code based on mq3 progect</source>
<translation>Išvesties kodas sukurtas mq3 pagrindu</translation>
</message>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_pl.ts b/src/plugins/Input/mad/translations/mad_plugin_pl.ts
index ca98436b4..209d3303d 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_pl.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_pl.ts
@@ -4,37 +4,37 @@
<context>
<name>DecoderMADFactory</name>
<message>
- <location filename="../decodermadfactory.cpp" line="87"/>
+ <location filename="../decodermadfactory.cpp" line="86"/>
<source>MPEG Plugin</source>
<translation>Wtyczka MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="90"/>
+ <location filename="../decodermadfactory.cpp" line="89"/>
<source>MPEG Files</source>
<translation>Pliki MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="223"/>
+ <location filename="../decodermadfactory.cpp" line="213"/>
<source>About MPEG Audio Plugin</source>
<translation>O wtyczce Audio MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="224"/>
+ <location filename="../decodermadfactory.cpp" line="214"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Wtyczka MPEG Audio dla Qmmp</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="215"/>
<source>Compiled against libmad version:</source>
<translation>Skompilowane przy użyciu biblioteki libmad w wersji:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="229"/>
+ <location filename="../decodermadfactory.cpp" line="219"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Autor: Ilja Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="230"/>
+ <location filename="../decodermadfactory.cpp" line="220"/>
<source>Source code based on mq3 progect</source>
<translation>Kod źródłowy oparty na projekcie mq3</translation>
</message>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_ru.ts b/src/plugins/Input/mad/translations/mad_plugin_ru.ts
index 2999140bd..a913f51d7 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_ru.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_ru.ts
@@ -4,37 +4,37 @@
<context>
<name>DecoderMADFactory</name>
<message>
- <location filename="../decodermadfactory.cpp" line="87"/>
+ <location filename="../decodermadfactory.cpp" line="86"/>
<source>MPEG Plugin</source>
<translation>Модуль MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="90"/>
+ <location filename="../decodermadfactory.cpp" line="89"/>
<source>MPEG Files</source>
<translation>Файлы MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="223"/>
+ <location filename="../decodermadfactory.cpp" line="213"/>
<source>About MPEG Audio Plugin</source>
<translation>Об аудио-модуле MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="224"/>
+ <location filename="../decodermadfactory.cpp" line="214"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Аудио-модуль MPEG для Qmmp</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="215"/>
<source>Compiled against libmad version:</source>
<translation>Собрано с версией libmad:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="229"/>
+ <location filename="../decodermadfactory.cpp" line="219"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Разработчик: Илья Котов &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="230"/>
+ <location filename="../decodermadfactory.cpp" line="220"/>
<source>Source code based on mq3 progect</source>
<translation>Исходный код основан на проекте mq3</translation>
</message>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_tr.ts b/src/plugins/Input/mad/translations/mad_plugin_tr.ts
index 8ddeece6f..731fefe6d 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_tr.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_tr.ts
@@ -4,37 +4,37 @@
<context>
<name>DecoderMADFactory</name>
<message>
- <location filename="../decodermadfactory.cpp" line="87"/>
+ <location filename="../decodermadfactory.cpp" line="86"/>
<source>MPEG Plugin</source>
<translation>MPEG Eklentisi</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="90"/>
+ <location filename="../decodermadfactory.cpp" line="89"/>
<source>MPEG Files</source>
<translation>MPEG Dosyaları</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="223"/>
+ <location filename="../decodermadfactory.cpp" line="213"/>
<source>About MPEG Audio Plugin</source>
<translation>MPEG Ses Eklentisi Hakkında</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="224"/>
+ <location filename="../decodermadfactory.cpp" line="214"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Qmmp MPEG Ses Eklentisi</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="215"/>
<source>Compiled against libmad version:</source>
<translation>Derlendiği libmad sürümü:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="229"/>
+ <location filename="../decodermadfactory.cpp" line="219"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Yazan: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="230"/>
+ <location filename="../decodermadfactory.cpp" line="220"/>
<source>Source code based on mq3 progect</source>
<translation>Kaynak kodu mq3 projesi temellidir</translation>
</message>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts b/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts
index 5a47cc2cb..c509c85ca 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_uk_UA.ts
@@ -4,37 +4,37 @@
<context>
<name>DecoderMADFactory</name>
<message>
- <location filename="../decodermadfactory.cpp" line="87"/>
+ <location filename="../decodermadfactory.cpp" line="86"/>
<source>MPEG Plugin</source>
<translation>Модуль MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="90"/>
+ <location filename="../decodermadfactory.cpp" line="89"/>
<source>MPEG Files</source>
<translation>Файли MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="223"/>
+ <location filename="../decodermadfactory.cpp" line="213"/>
<source>About MPEG Audio Plugin</source>
<translation>Про аудіо-модуль MPEG</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="224"/>
+ <location filename="../decodermadfactory.cpp" line="214"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Аудіо-модуль MPEG для Qmmp</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="215"/>
<source>Compiled against libmad version:</source>
<translation>Зібрано з версією libmad:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="229"/>
+ <location filename="../decodermadfactory.cpp" line="219"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>Розробник: Ілля Котов &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="230"/>
+ <location filename="../decodermadfactory.cpp" line="220"/>
<source>Source code based on mq3 progect</source>
<translation>Вихідний код базується на проекті mq3</translation>
</message>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts b/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts
index c6ed93ab4..5b7aef659 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_zh_CN.ts
@@ -4,37 +4,37 @@
<context>
<name>DecoderMADFactory</name>
<message>
- <location filename="../decodermadfactory.cpp" line="87"/>
+ <location filename="../decodermadfactory.cpp" line="86"/>
<source>MPEG Plugin</source>
<translation>MPEG 插件</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="90"/>
+ <location filename="../decodermadfactory.cpp" line="89"/>
<source>MPEG Files</source>
<translation>MPEG 文件</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="223"/>
+ <location filename="../decodermadfactory.cpp" line="213"/>
<source>About MPEG Audio Plugin</source>
<translation>关于 MPEG 音频插件</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="224"/>
+ <location filename="../decodermadfactory.cpp" line="214"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Qmmp MPEG 音频插件</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="215"/>
<source>Compiled against libmad version:</source>
<translation>编译基于 libmad 的版本:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="229"/>
+ <location filename="../decodermadfactory.cpp" line="219"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>作者:Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="230"/>
+ <location filename="../decodermadfactory.cpp" line="220"/>
<source>Source code based on mq3 progect</source>
<translation>源代码基于 mq3 项目</translation>
</message>
diff --git a/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts b/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts
index 05b2c760b..db84455c7 100644
--- a/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts
+++ b/src/plugins/Input/mad/translations/mad_plugin_zh_TW.ts
@@ -4,37 +4,37 @@
<context>
<name>DecoderMADFactory</name>
<message>
- <location filename="../decodermadfactory.cpp" line="87"/>
+ <location filename="../decodermadfactory.cpp" line="86"/>
<source>MPEG Plugin</source>
<translation>MPEG 插件</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="90"/>
+ <location filename="../decodermadfactory.cpp" line="89"/>
<source>MPEG Files</source>
<translation>MPEG 檔案</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="223"/>
+ <location filename="../decodermadfactory.cpp" line="213"/>
<source>About MPEG Audio Plugin</source>
<translation>關於 MPEG 聲訊插件</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="224"/>
+ <location filename="../decodermadfactory.cpp" line="214"/>
<source>Qmmp MPEG Audio Plugin</source>
<translation>Qmmp MPEG 聲訊插件</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="225"/>
+ <location filename="../decodermadfactory.cpp" line="215"/>
<source>Compiled against libmad version:</source>
<translation>編譯基於 libmad 的版本:</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="229"/>
+ <location filename="../decodermadfactory.cpp" line="219"/>
<source>Writen by: Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</source>
<translation>作者:Ilya Kotov &lt;forkotov02@hotmail.ru&gt;</translation>
</message>
<message>
- <location filename="../decodermadfactory.cpp" line="230"/>
+ <location filename="../decodermadfactory.cpp" line="220"/>
<source>Source code based on mq3 progect</source>
<translation>源碼基於 mq3 項目</translation>
</message>
diff --git a/src/qmmp/decoder.cpp b/src/qmmp/decoder.cpp
index 4d9cad319..d68939843 100644
--- a/src/qmmp/decoder.cpp
+++ b/src/qmmp/decoder.cpp
@@ -32,9 +32,15 @@ Decoder::Decoder(QIODevice *input) : m_input(input)
Decoder::~Decoder()
{}
-void Decoder::configure(quint32 srate, int chan, int bps)
+void Decoder::configure(quint32 srate, int chan, int bps, const QMap<Qmmp::ReplayGainKey, double> &rg)
{
m_parameters = AudioParameters(srate, chan, bps);
+ m_rg = rg;
+}
+
+void Decoder::configure(quint32 srate, int chan, int bps)
+{
+ configure(srate, chan, bps, QMap<Qmmp::ReplayGainKey, double>());
}
void Decoder::next()
@@ -45,11 +51,16 @@ const QString Decoder::nextURL()
return QString();
}
-const AudioParameters Decoder::audioParameters()
+AudioParameters Decoder::audioParameters() const
{
return m_parameters;
}
+QMap<Qmmp::ReplayGainKey, double> Decoder::replayGainInfo() const
+{
+ return m_rg;
+}
+
QIODevice *Decoder::input()
{
return m_input;
diff --git a/src/qmmp/decoder.h b/src/qmmp/decoder.h
index e5cb647d9..30fe76465 100644
--- a/src/qmmp/decoder.h
+++ b/src/qmmp/decoder.h
@@ -7,13 +7,14 @@
#ifndef DECODER_H
#define DECODER_H
-
#include <QList>
#include <QStringList>
#include <QUrl>
#include <QList>
#include <QPixmap>
+#include <QMap>
#include "fileinfo.h"
+#include "qmmp.h"
#include "audioparameters.h"
class Decoder;
@@ -63,7 +64,8 @@ public:
virtual void next();
virtual const QString nextURL();
- const AudioParameters audioParameters();
+ AudioParameters audioParameters() const;
+ QMap<Qmmp::ReplayGainKey, double> replayGainInfo() const;
QIODevice *input();
/*!
* Returns DecoderFactory pointer which supports file \b path or 0 if file \b path is unsupported
@@ -108,6 +110,14 @@ protected:
* @param srate Sample rate.
* @param chan Number of channels.
* @param bps Bits per sample.
+ * @param rg ReplayGaing information.
+ */
+ void configure(quint32 srate, int chan, int bps, const QMap<Qmmp::ReplayGainKey,double> &rg);
+ /*!
+ * Use this function inside initialize() reimplementation to tell other plugins about audio parameters.
+ * @param srate Sample rate.
+ * @param chan Number of channels.
+ * @param bps Bits per sample.
*/
void configure(quint32 srate, int chan, int bps);
@@ -118,6 +128,7 @@ private:
static QStringList m_files;
AudioParameters m_parameters;
QIODevice *m_input;
+ QMap <Qmmp::ReplayGainKey, double> m_rg; //replay gain information
};
#endif // DECODER_H
diff --git a/src/qmmp/qmmpaudioengine.cpp b/src/qmmp/qmmpaudioengine.cpp
index 3485064fe..1f3b8b2f8 100644
--- a/src/qmmp/qmmpaudioengine.cpp
+++ b/src/qmmp/qmmpaudioengine.cpp
@@ -32,7 +32,6 @@
#include "qmmpaudioengine.h"
#include "metadatamanager.h"
-
extern "C"
{
#include "equ/iir.h"
@@ -311,9 +310,7 @@ void QmmpAudioEngine::stop()
qint64 QmmpAudioEngine::produceSound(char *data, qint64 size, quint32 brate, int chan)
{
ulong sz = size < _blksize ? size : _blksize;
-
- //m_replayGain->applyReplayGain(data, sz);
-
+ m_replayGain->applyReplayGain(data, sz);
if (m_useEQ)
{
if (!m_eqInited)
@@ -388,6 +385,7 @@ void QmmpAudioEngine::run()
}
m_decoder = m_decoders.dequeue();
+ m_replayGain->setReplayGainInfo(m_decoder->replayGainInfo());
mutex()->unlock();
m_output->start();
sendMetaData();
@@ -437,6 +435,7 @@ void QmmpAudioEngine::run()
m_inputs.take(m_decoder)->deleteLater ();
delete m_decoder;
m_decoder = m_decoders.dequeue();
+ m_replayGain->setReplayGainInfo(m_decoder->replayGainInfo());
//use current output if possible
if(m_decoder->audioParameters() == m_ap)
{
diff --git a/src/qmmp/replaygain.cpp b/src/qmmp/replaygain.cpp
index cdfb47e60..5d7db77ad 100644
--- a/src/qmmp/replaygain.cpp
+++ b/src/qmmp/replaygain.cpp
@@ -37,12 +37,23 @@ void ReplayGain::setReplayGainInfo(const QMap<Qmmp::ReplayGainKey, double> &info
{
m_info = info;
updateScale();
+ if(m_settings.mode() != ReplayGainSettings::DISABLED)
+ {
+ qDebug("ReplayGain: track: gain=%f dB, peak=%f; album: gain=%f dB, peak=%f",
+ m_info[Qmmp::REPLAYGAIN_TRACK_GAIN],
+ m_info[Qmmp::REPLAYGAIN_TRACK_PEAK],
+ m_info[Qmmp::REPLAYGAIN_ALBUM_GAIN],
+ m_info[Qmmp::REPLAYGAIN_ALBUM_PEAK]);
+ qDebug("ReplayGain: scale=%f", m_scale);
+ }
+ else
+ qDebug("ReplayGain: disabled");
}
void ReplayGain::setReplayGainSettings(const ReplayGainSettings &settings)
{
m_settings = settings;
- updateScale();
+ setReplayGainInfo(m_info);
}
void ReplayGain::applyReplayGain(char *data, qint64 size)
@@ -71,7 +82,7 @@ void ReplayGain::applyReplayGain(char *data, qint64 size)
void ReplayGain::updateScale()
{
double peak = 0.0;
- m_scale = 0.0;
+ m_scale = 1.0;
switch((int) m_settings.mode())
{
case ReplayGainSettings::TRACK:
@@ -84,16 +95,13 @@ void ReplayGain::updateScale()
break;
case ReplayGainSettings::DISABLED:
m_scale = 1.0;
+ return;
}
- if(m_scale == 0.0)
+ if(m_scale == 1.0)
m_scale = pow(10.0, m_settings.defaultGain()/20);
- if(peak > 0.0 && m_scale != 1.0 && m_scale > 0.0)
- {
- m_scale *= pow(10.0, m_settings.preamp()/20);
- if(m_settings.preventClipping())
- m_scale = m_scale*peak > 1.0 ? 1.0 / peak : m_scale;
- }
- if(m_scale < 0.0)
- m_scale = 1.0;
- m_scale = qMin(m_scale, 15.0);
+ m_scale *= pow(10.0, m_settings.preamp()/20);
+ if(peak > 0.0 && m_settings.preventClipping())
+ m_scale = m_scale*peak > 1.0 ? 1.0 / peak : m_scale;
+ m_scale = qMin(m_scale, 5.6234); // +15 dB
+ m_scale = qMax(m_scale, 0.1778); // -15 dB
}
diff --git a/src/qmmp/replaygainsettings.cpp b/src/qmmp/replaygainsettings.cpp
index 081620ab4..3a02b8e73 100644
--- a/src/qmmp/replaygainsettings.cpp
+++ b/src/qmmp/replaygainsettings.cpp
@@ -22,9 +22,9 @@
ReplayGainSettings::ReplayGainSettings()
{
- m_mode = TRACK;
- m_preamp = 1.0;
- m_defaultGain = 0.0;
+ m_mode = DISABLED;
+ m_preamp = 0.0;
+ m_defaultGain = -8.0;
m_preventClipping = false;
}
diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp
index 10809c1c6..d212a6ae3 100644
--- a/src/qmmp/soundcore.cpp
+++ b/src/qmmp/soundcore.cpp
@@ -23,7 +23,6 @@
#include <QApplication>
#include <QSettings>
#include <QDir>
-
#include "qmmpaudioengine.h"
#include "decoderfactory.h"
#include "effect.h"
@@ -65,6 +64,14 @@ SoundCore::SoundCore(QObject *parent)
connect(m_handler, SIGNAL(bufferingProgress(int)), SIGNAL(bufferingProgress(int)));
m_volumeControl = VolumeControl::create(this);
connect(m_volumeControl, SIGNAL(volumeChanged(int, int)), SIGNAL(volumeChanged(int, int)));
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ //replaygain settings
+ settings.beginGroup("ReplayGain");
+ m_rgs = ReplayGainSettings(settings.value("mode", m_rgs.mode()).toInt(),
+ settings.value("preamp", m_rgs.preamp()).toDouble(),
+ settings.value("default_gain", m_rgs.defaultGain()).toDouble(),
+ settings.value("prevent_clipping",m_rgs.preventClipping()).toBool());
+ settings.endGroup();
}
@@ -243,7 +250,7 @@ bool SoundCore::enqueue(InputSource *s)
setEQ(m_bands, m_preamp);
setEQEnabled(m_useEQ);
- setReplayGainSettings(m_replayGainSettings);
+ setReplayGainSettings(m_rgs);
if(m_engine->enqueue(s))
{
m_source = s->url();
@@ -282,7 +289,7 @@ bool SoundCore::enqueue(InputSource *s)
connect(engine, SIGNAL(playbackFinished()), SIGNAL(finished()));
engine->setEQ(m_bands, m_preamp);
engine->setEQEnabled(m_useEQ);
- engine->setReplayGainSettings(m_replayGainSettings);
+ engine->setReplayGainSettings(m_rgs);
if (m_handler->state() == Qmmp::Playing || m_handler->state() == Qmmp::Paused)
{
if(m_pendingEngine)
@@ -314,14 +321,23 @@ void SoundCore::startPendingEngine()
ReplayGainSettings SoundCore::replayGainSettings() const
{
- return m_replayGainSettings;
+ return m_rgs;
}
-void SoundCore::setReplayGainSettings(const ReplayGainSettings &settings)
+void SoundCore::setReplayGainSettings(const ReplayGainSettings &rgs)
{
- m_replayGainSettings = settings;
+ m_rgs = rgs;
+ //save replaygain settings
+ QSettings settings (Qmmp::configFile(), QSettings::IniFormat);
+ settings.beginGroup("ReplayGain");
+ settings.setValue("mode", m_rgs.mode());
+ settings.setValue("preamp", m_rgs.preamp());
+ settings.setValue("default_gain", m_rgs.defaultGain());
+ settings.setValue("prevent_clipping",m_rgs.preventClipping());
+ settings.endGroup();
+ //apply replaygain settings
if(m_engine)
- m_engine->setReplayGainSettings(settings);
+ m_engine->setReplayGainSettings(rgs);
}
SoundCore* SoundCore::instance()
diff --git a/src/qmmp/soundcore.h b/src/qmmp/soundcore.h
index 092cef3a0..a0860957d 100644
--- a/src/qmmp/soundcore.h
+++ b/src/qmmp/soundcore.h
@@ -108,7 +108,7 @@ public:
QString metaData(Qmmp::MetaData key);
ReplayGainSettings replayGainSettings() const;
- void setReplayGainSettings(const ReplayGainSettings &settings);
+ void setReplayGainSettings(const ReplayGainSettings &rgs);
/*!
* Returns a pointer to the SoundCore instance.
*/
@@ -227,7 +227,7 @@ private:
AbstractEngine *m_engine;
AbstractEngine *m_pendingEngine;
QList<InputSource *> m_pendingSources;
- ReplayGainSettings m_replayGainSettings;
+ ReplayGainSettings m_rgs; //ReplayGain settings
};
#endif
diff --git a/src/ui/configdialog.cpp b/src/ui/configdialog.cpp
index dc7ea8b7f..9acdbe73c 100644
--- a/src/ui/configdialog.cpp
+++ b/src/ui/configdialog.cpp
@@ -78,15 +78,15 @@ ConfigDialog::ConfigDialog (QWidget *parent)
connect (ui.listWidget, SIGNAL (itemClicked (QListWidgetItem *)), this, SLOT (changeSkin()));
ui.listWidget->setIconSize (QSize (105,34));
m_skin = Skin::instance();
+ ui.replayGainModeComboBox->addItem (tr("Track"), ReplayGainSettings::TRACK);
+ ui.replayGainModeComboBox->addItem (tr("Album"), ReplayGainSettings::ALBUM);
+ ui.replayGainModeComboBox->addItem (tr("Disabled"), ReplayGainSettings::DISABLED);
readSettings();
m_reader = new SkinReader(this);
loadSkins();
loadPluginsInfo();
loadFonts();
- createMenus();
- ui.replayGainModeComboBox->addItem (tr("Track"), ReplayGainSettings::TRACK);
- ui.replayGainModeComboBox->addItem (tr("Album"), ReplayGainSettings::ALBUM);
- ui.replayGainModeComboBox->addItem (tr("Disabled"), ReplayGainSettings::DISABLED);
+ createMenus();
}
ConfigDialog::~ConfigDialog()
diff --git a/src/ui/forms/configdialog.ui b/src/ui/forms/configdialog.ui
index c6d80dfbb..1f3ec19f9 100644
--- a/src/ui/forms/configdialog.ui
+++ b/src/ui/forms/configdialog.ui
@@ -1076,6 +1076,15 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="minimum">
+ <double>-15.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>15.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>0.010000000000000</double>
+ </property>
</widget>
</item>
<item row="2" column="2">
@@ -1112,6 +1121,15 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
+ <property name="minimum">
+ <double>-15.000000000000000</double>
+ </property>
+ <property name="maximum">
+ <double>15.000000000000000</double>
+ </property>
+ <property name="singleStep">
+ <double>0.010000000000000</double>
+ </property>
</widget>
</item>
<item row="3" column="2">
diff --git a/src/ui/translations/qmmp_cs.ts b/src/ui/translations/qmmp_cs.ts
index 13da193d8..1e2004a88 100644
--- a/src/ui/translations/qmmp_cs.ts
+++ b/src/ui/translations/qmmp_cs.ts
@@ -205,18 +205,18 @@
<translation>Umělec</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="88"/>
+ <location filename="../configdialog.cpp" line="82"/>
<location filename="../configdialog.cpp" line="596"/>
<source>Album</source>
<translation>Album</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="87"/>
+ <location filename="../configdialog.cpp" line="81"/>
<source>Track</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="89"/>
+ <location filename="../configdialog.cpp" line="83"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -471,23 +471,23 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1090"/>
- <location filename="../forms/configdialog.ui" line="1126"/>
+ <location filename="../forms/configdialog.ui" line="1099"/>
+ <location filename="../forms/configdialog.ui" line="1144"/>
<source>dB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1103"/>
+ <location filename="../forms/configdialog.ui" line="1112"/>
<source>Default gain:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1146"/>
+ <location filename="../forms/configdialog.ui" line="1164"/>
<source>Use peak info to prevent clipping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1219"/>
+ <location filename="../forms/configdialog.ui" line="1237"/>
<source>Close</source>
<translation>Zavřít</translation>
</message>
@@ -563,12 +563,12 @@
</message>
<message>
<location filename="../forms/configdialog.ui" line="137"/>
- <location filename="../forms/configdialog.ui" line="1156"/>
+ <location filename="../forms/configdialog.ui" line="1174"/>
<source>Audio</source>
<translation>Zvuk</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1162"/>
+ <location filename="../forms/configdialog.ui" line="1180"/>
<source>Use software volume control</source>
<translation>Používat softwarové ovládání hlasitosti</translation>
</message>
diff --git a/src/ui/translations/qmmp_de.ts b/src/ui/translations/qmmp_de.ts
index a872ee3d3..5af7d64c7 100644
--- a/src/ui/translations/qmmp_de.ts
+++ b/src/ui/translations/qmmp_de.ts
@@ -205,18 +205,18 @@
<translation>Interpret</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="88"/>
+ <location filename="../configdialog.cpp" line="82"/>
<location filename="../configdialog.cpp" line="596"/>
<source>Album</source>
<translation>Album</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="87"/>
+ <location filename="../configdialog.cpp" line="81"/>
<source>Track</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="89"/>
+ <location filename="../configdialog.cpp" line="83"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -471,23 +471,23 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1090"/>
- <location filename="../forms/configdialog.ui" line="1126"/>
+ <location filename="../forms/configdialog.ui" line="1099"/>
+ <location filename="../forms/configdialog.ui" line="1144"/>
<source>dB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1103"/>
+ <location filename="../forms/configdialog.ui" line="1112"/>
<source>Default gain:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1146"/>
+ <location filename="../forms/configdialog.ui" line="1164"/>
<source>Use peak info to prevent clipping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1219"/>
+ <location filename="../forms/configdialog.ui" line="1237"/>
<source>Close</source>
<translation>Schließen</translation>
</message>
@@ -563,12 +563,12 @@
</message>
<message>
<location filename="../forms/configdialog.ui" line="137"/>
- <location filename="../forms/configdialog.ui" line="1156"/>
+ <location filename="../forms/configdialog.ui" line="1174"/>
<source>Audio</source>
<translation>Audio</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1162"/>
+ <location filename="../forms/configdialog.ui" line="1180"/>
<source>Use software volume control</source>
<translation>Softwaregesteuerte Lautstärkeregelung</translation>
</message>
diff --git a/src/ui/translations/qmmp_it.ts b/src/ui/translations/qmmp_it.ts
index 1fb7ddbfa..cc446ed57 100644
--- a/src/ui/translations/qmmp_it.ts
+++ b/src/ui/translations/qmmp_it.ts
@@ -205,18 +205,18 @@
<translation>Interprete</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="88"/>
+ <location filename="../configdialog.cpp" line="82"/>
<location filename="../configdialog.cpp" line="596"/>
<source>Album</source>
<translation>Album</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="87"/>
+ <location filename="../configdialog.cpp" line="81"/>
<source>Track</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="89"/>
+ <location filename="../configdialog.cpp" line="83"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -376,7 +376,7 @@
<translation>Avanzato</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1219"/>
+ <location filename="../forms/configdialog.ui" line="1237"/>
<source>Close</source>
<translation>Chiudi</translation>
</message>
@@ -417,7 +417,7 @@
</message>
<message>
<location filename="../forms/configdialog.ui" line="137"/>
- <location filename="../forms/configdialog.ui" line="1156"/>
+ <location filename="../forms/configdialog.ui" line="1174"/>
<source>Audio</source>
<translation>Audio</translation>
</message>
@@ -482,23 +482,23 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1090"/>
- <location filename="../forms/configdialog.ui" line="1126"/>
+ <location filename="../forms/configdialog.ui" line="1099"/>
+ <location filename="../forms/configdialog.ui" line="1144"/>
<source>dB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1103"/>
+ <location filename="../forms/configdialog.ui" line="1112"/>
<source>Default gain:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1146"/>
+ <location filename="../forms/configdialog.ui" line="1164"/>
<source>Use peak info to prevent clipping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1162"/>
+ <location filename="../forms/configdialog.ui" line="1180"/>
<source>Use software volume control</source>
<translation>Utilizza il controllo volume del programma</translation>
</message>
diff --git a/src/ui/translations/qmmp_lt.ts b/src/ui/translations/qmmp_lt.ts
index 46cab600d..de63d8d3a 100644
--- a/src/ui/translations/qmmp_lt.ts
+++ b/src/ui/translations/qmmp_lt.ts
@@ -205,18 +205,18 @@
<translation>Atlikėjas</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="88"/>
+ <location filename="../configdialog.cpp" line="82"/>
<location filename="../configdialog.cpp" line="596"/>
<source>Album</source>
<translation>Albumas</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="87"/>
+ <location filename="../configdialog.cpp" line="81"/>
<source>Track</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="89"/>
+ <location filename="../configdialog.cpp" line="83"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -376,7 +376,7 @@
<translation>Papildomi</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1219"/>
+ <location filename="../forms/configdialog.ui" line="1237"/>
<source>Close</source>
<translation>Užverti</translation>
</message>
@@ -417,7 +417,7 @@
</message>
<message>
<location filename="../forms/configdialog.ui" line="137"/>
- <location filename="../forms/configdialog.ui" line="1156"/>
+ <location filename="../forms/configdialog.ui" line="1174"/>
<source>Audio</source>
<translation>Audio</translation>
</message>
@@ -483,23 +483,23 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1090"/>
- <location filename="../forms/configdialog.ui" line="1126"/>
+ <location filename="../forms/configdialog.ui" line="1099"/>
+ <location filename="../forms/configdialog.ui" line="1144"/>
<source>dB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1103"/>
+ <location filename="../forms/configdialog.ui" line="1112"/>
<source>Default gain:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1146"/>
+ <location filename="../forms/configdialog.ui" line="1164"/>
<source>Use peak info to prevent clipping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1162"/>
+ <location filename="../forms/configdialog.ui" line="1180"/>
<source>Use software volume control</source>
<translation>Naudoti programinį garso valdymą</translation>
</message>
diff --git a/src/ui/translations/qmmp_pl_PL.ts b/src/ui/translations/qmmp_pl_PL.ts
index 612d306e6..f84c9765a 100644
--- a/src/ui/translations/qmmp_pl_PL.ts
+++ b/src/ui/translations/qmmp_pl_PL.ts
@@ -205,18 +205,18 @@
<translation>Artysta</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="88"/>
+ <location filename="../configdialog.cpp" line="82"/>
<location filename="../configdialog.cpp" line="596"/>
<source>Album</source>
<translation>Album</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="87"/>
+ <location filename="../configdialog.cpp" line="81"/>
<source>Track</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="89"/>
+ <location filename="../configdialog.cpp" line="83"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -376,7 +376,7 @@
<translation>Zaawansowane</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1219"/>
+ <location filename="../forms/configdialog.ui" line="1237"/>
<source>Close</source>
<translation>Zamknij</translation>
</message>
@@ -417,7 +417,7 @@
</message>
<message>
<location filename="../forms/configdialog.ui" line="137"/>
- <location filename="../forms/configdialog.ui" line="1156"/>
+ <location filename="../forms/configdialog.ui" line="1174"/>
<source>Audio</source>
<translation>Dźwięk</translation>
</message>
@@ -482,23 +482,23 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1090"/>
- <location filename="../forms/configdialog.ui" line="1126"/>
+ <location filename="../forms/configdialog.ui" line="1099"/>
+ <location filename="../forms/configdialog.ui" line="1144"/>
<source>dB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1103"/>
+ <location filename="../forms/configdialog.ui" line="1112"/>
<source>Default gain:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1146"/>
+ <location filename="../forms/configdialog.ui" line="1164"/>
<source>Use peak info to prevent clipping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1162"/>
+ <location filename="../forms/configdialog.ui" line="1180"/>
<source>Use software volume control</source>
<translation>Użyj programowej regulacji głośności</translation>
</message>
diff --git a/src/ui/translations/qmmp_pt_BR.ts b/src/ui/translations/qmmp_pt_BR.ts
index 73102fc97..9f9191aca 100644
--- a/src/ui/translations/qmmp_pt_BR.ts
+++ b/src/ui/translations/qmmp_pt_BR.ts
@@ -205,18 +205,18 @@
<translation type="unfinished">Artista</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="88"/>
+ <location filename="../configdialog.cpp" line="82"/>
<location filename="../configdialog.cpp" line="596"/>
<source>Album</source>
<translation type="unfinished">Álbum</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="87"/>
+ <location filename="../configdialog.cpp" line="81"/>
<source>Track</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="89"/>
+ <location filename="../configdialog.cpp" line="83"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -376,7 +376,7 @@
<translation type="unfinished">Avançado</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1219"/>
+ <location filename="../forms/configdialog.ui" line="1237"/>
<source>Close</source>
<translation type="unfinished">Fechar</translation>
</message>
@@ -417,7 +417,7 @@
</message>
<message>
<location filename="../forms/configdialog.ui" line="137"/>
- <location filename="../forms/configdialog.ui" line="1156"/>
+ <location filename="../forms/configdialog.ui" line="1174"/>
<source>Audio</source>
<translation type="unfinished"></translation>
</message>
@@ -482,23 +482,23 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1090"/>
- <location filename="../forms/configdialog.ui" line="1126"/>
+ <location filename="../forms/configdialog.ui" line="1099"/>
+ <location filename="../forms/configdialog.ui" line="1144"/>
<source>dB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1103"/>
+ <location filename="../forms/configdialog.ui" line="1112"/>
<source>Default gain:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1146"/>
+ <location filename="../forms/configdialog.ui" line="1164"/>
<source>Use peak info to prevent clipping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1162"/>
+ <location filename="../forms/configdialog.ui" line="1180"/>
<source>Use software volume control</source>
<translation type="unfinished"></translation>
</message>
diff --git a/src/ui/translations/qmmp_ru.ts b/src/ui/translations/qmmp_ru.ts
index 7ce763a2e..52af46efd 100644
--- a/src/ui/translations/qmmp_ru.ts
+++ b/src/ui/translations/qmmp_ru.ts
@@ -205,18 +205,18 @@
<translation>Исполнитель</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="88"/>
+ <location filename="../configdialog.cpp" line="82"/>
<location filename="../configdialog.cpp" line="596"/>
<source>Album</source>
<translation>Альбом</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="87"/>
+ <location filename="../configdialog.cpp" line="81"/>
<source>Track</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="89"/>
+ <location filename="../configdialog.cpp" line="83"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -376,7 +376,7 @@
<translation>Дополнительно</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1219"/>
+ <location filename="../forms/configdialog.ui" line="1237"/>
<source>Close</source>
<translation>Закрыть</translation>
</message>
@@ -417,7 +417,7 @@
</message>
<message>
<location filename="../forms/configdialog.ui" line="137"/>
- <location filename="../forms/configdialog.ui" line="1156"/>
+ <location filename="../forms/configdialog.ui" line="1174"/>
<source>Audio</source>
<translation>Аудио</translation>
</message>
@@ -482,23 +482,23 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1090"/>
- <location filename="../forms/configdialog.ui" line="1126"/>
+ <location filename="../forms/configdialog.ui" line="1099"/>
+ <location filename="../forms/configdialog.ui" line="1144"/>
<source>dB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1103"/>
+ <location filename="../forms/configdialog.ui" line="1112"/>
<source>Default gain:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1146"/>
+ <location filename="../forms/configdialog.ui" line="1164"/>
<source>Use peak info to prevent clipping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1162"/>
+ <location filename="../forms/configdialog.ui" line="1180"/>
<source>Use software volume control</source>
<translation>Использовать программную регулировку громкости</translation>
</message>
diff --git a/src/ui/translations/qmmp_tr.ts b/src/ui/translations/qmmp_tr.ts
index 443a53f0b..efad72251 100644
--- a/src/ui/translations/qmmp_tr.ts
+++ b/src/ui/translations/qmmp_tr.ts
@@ -205,18 +205,18 @@
<translation>Sanatçı</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="88"/>
+ <location filename="../configdialog.cpp" line="82"/>
<location filename="../configdialog.cpp" line="596"/>
<source>Album</source>
<translation>Albüm</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="87"/>
+ <location filename="../configdialog.cpp" line="81"/>
<source>Track</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="89"/>
+ <location filename="../configdialog.cpp" line="83"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -376,7 +376,7 @@
<translation>Gelişmiş</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1219"/>
+ <location filename="../forms/configdialog.ui" line="1237"/>
<source>Close</source>
<translation>Kapat</translation>
</message>
@@ -417,7 +417,7 @@
</message>
<message>
<location filename="../forms/configdialog.ui" line="137"/>
- <location filename="../forms/configdialog.ui" line="1156"/>
+ <location filename="../forms/configdialog.ui" line="1174"/>
<source>Audio</source>
<translation>Ses</translation>
</message>
@@ -482,23 +482,23 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1090"/>
- <location filename="../forms/configdialog.ui" line="1126"/>
+ <location filename="../forms/configdialog.ui" line="1099"/>
+ <location filename="../forms/configdialog.ui" line="1144"/>
<source>dB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1103"/>
+ <location filename="../forms/configdialog.ui" line="1112"/>
<source>Default gain:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1146"/>
+ <location filename="../forms/configdialog.ui" line="1164"/>
<source>Use peak info to prevent clipping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1162"/>
+ <location filename="../forms/configdialog.ui" line="1180"/>
<source>Use software volume control</source>
<translation>Yazılımsal ses kontrolünü kullan</translation>
</message>
diff --git a/src/ui/translations/qmmp_uk_UA.ts b/src/ui/translations/qmmp_uk_UA.ts
index f337dcd63..bb650259a 100644
--- a/src/ui/translations/qmmp_uk_UA.ts
+++ b/src/ui/translations/qmmp_uk_UA.ts
@@ -173,16 +173,28 @@
<context>
<name>ConfigDialog</name>
<message>
+ <location filename="../configdialog.cpp" line="245"/>
+ <location filename="../configdialog.cpp" line="298"/>
+ <location filename="../configdialog.cpp" line="330"/>
+ <location filename="../configdialog.cpp" line="363"/>
<location filename="../configdialog.cpp" line="396"/>
<source>Enabled</source>
<translation>Увімкнено</translation>
</message>
<message>
+ <location filename="../configdialog.cpp" line="245"/>
+ <location filename="../configdialog.cpp" line="298"/>
+ <location filename="../configdialog.cpp" line="330"/>
+ <location filename="../configdialog.cpp" line="363"/>
<location filename="../configdialog.cpp" line="396"/>
<source>Description</source>
<translation>Пояснення</translation>
</message>
<message>
+ <location filename="../configdialog.cpp" line="245"/>
+ <location filename="../configdialog.cpp" line="298"/>
+ <location filename="../configdialog.cpp" line="330"/>
+ <location filename="../configdialog.cpp" line="363"/>
<location filename="../configdialog.cpp" line="396"/>
<source>Filename</source>
<translation>Ім&apos;я файлу</translation>
@@ -193,17 +205,18 @@
<translation>Виконавець</translation>
</message>
<message>
+ <location filename="../configdialog.cpp" line="82"/>
<location filename="../configdialog.cpp" line="596"/>
<source>Album</source>
<translation>Альбом</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="87"/>
+ <location filename="../configdialog.cpp" line="81"/>
<source>Track</source>
<translation>Трек</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="89"/>
+ <location filename="../configdialog.cpp" line="83"/>
<source>Disabled</source>
<translation>Вимкнено</translation>
</message>
@@ -288,11 +301,14 @@
<translation>Список:</translation>
</message>
<message>
+ <location filename="../forms/configdialog.ui" line="286"/>
<location filename="../forms/configdialog.ui" line="334"/>
<source>???</source>
<translation>???</translation>
</message>
<message>
+ <location filename="../forms/configdialog.ui" line="293"/>
+ <location filename="../forms/configdialog.ui" line="341"/>
<location filename="../forms/configdialog.ui" line="517"/>
<source>...</source>
<translation>...</translation>
@@ -333,6 +349,7 @@
<translation>Налаштування</translation>
</message>
<message>
+ <location filename="../forms/configdialog.ui" line="647"/>
<location filename="../forms/configdialog.ui" line="830"/>
<source>Information</source>
<translation>Інформація</translation>
@@ -343,6 +360,7 @@
<translation>Зовнішній вигляд</translation>
</message>
<message>
+ <location filename="../forms/configdialog.ui" line="101"/>
<location filename="../forms/configdialog.ui" line="441"/>
<source>Playlist</source>
<translation>Список</translation>
@@ -358,7 +376,7 @@
<translation>Додатково</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1219"/>
+ <location filename="../forms/configdialog.ui" line="1237"/>
<source>Close</source>
<translation>Закрити</translation>
</message>
@@ -398,7 +416,8 @@
<translation>Файловий діалог</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1156"/>
+ <location filename="../forms/configdialog.ui" line="137"/>
+ <location filename="../forms/configdialog.ui" line="1174"/>
<source>Audio</source>
<translation>Звук</translation>
</message>
@@ -463,22 +482,23 @@
<translation>Преамплітуда:</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1126"/>
+ <location filename="../forms/configdialog.ui" line="1099"/>
+ <location filename="../forms/configdialog.ui" line="1144"/>
<source>dB</source>
<translation></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1103"/>
+ <location filename="../forms/configdialog.ui" line="1112"/>
<source>Default gain:</source>
<translation>Нормалізація за умовчанням:</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1146"/>
+ <location filename="../forms/configdialog.ui" line="1164"/>
<source>Use peak info to prevent clipping</source>
<translation>Використовувати інформацію піків для запобігання відсікання</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1162"/>
+ <location filename="../forms/configdialog.ui" line="1180"/>
<source>Use software volume control</source>
<translation>Використовувати програмний контроль гучності</translation>
</message>
@@ -613,6 +633,8 @@
<translation>Головне вікно</translation>
</message>
<message>
+ <location filename="../forms/configdialog.ui" line="410"/>
+ <location filename="../forms/configdialog.ui" line="434"/>
<location filename="../forms/configdialog.ui" line="458"/>
<source>0</source>
<translation></translation>
@@ -626,6 +648,7 @@
<context>
<name>EqWidget</name>
<message>
+ <location filename="../eqwidget.cpp" line="169"/>
<location filename="../eqwidget.cpp" line="192"/>
<source>preset</source>
<translation>предвстановлення</translation>
@@ -679,11 +702,14 @@
<context>
<name>JumpToTrackDialog</name>
<message>
+ <location filename="../jumptotrackdialog.cpp" line="81"/>
<location filename="../jumptotrackdialog.cpp" line="132"/>
<source>Unqueue</source>
<translation>Зняти з черги</translation>
</message>
<message>
+ <location filename="../forms/jumptotrackdialog.ui" line="79"/>
+ <location filename="../jumptotrackdialog.cpp" line="83"/>
<location filename="../jumptotrackdialog.cpp" line="134"/>
<source>Queue</source>
<translation>В чергу</translation>
@@ -865,26 +891,31 @@
<translation>Падіння аналізатора</translation>
</message>
<message>
+ <location filename="../mainvisual.cpp" line="345"/>
<location filename="../mainvisual.cpp" line="359"/>
<source>Slowest</source>
<translation>Найповільніше</translation>
</message>
<message>
+ <location filename="../mainvisual.cpp" line="346"/>
<location filename="../mainvisual.cpp" line="360"/>
<source>Slow</source>
<translation>Повільне</translation>
</message>
<message>
+ <location filename="../mainvisual.cpp" line="347"/>
<location filename="../mainvisual.cpp" line="361"/>
<source>Medium</source>
<translation>Середнє</translation>
</message>
<message>
+ <location filename="../mainvisual.cpp" line="348"/>
<location filename="../mainvisual.cpp" line="362"/>
<source>Fast</source>
<translation>Швидке</translation>
</message>
<message>
+ <location filename="../mainvisual.cpp" line="349"/>
<location filename="../mainvisual.cpp" line="363"/>
<source>Fastest</source>
<translation>Найшвидше</translation>
@@ -1013,6 +1044,7 @@
<translation>&amp;Про програму</translation>
</message>
<message>
+ <location filename="../mainwindow.cpp" line="459"/>
<location filename="../mainwindow.cpp" line="485"/>
<source>Playlist Files</source>
<translation>Файли списків</translation>
@@ -1151,31 +1183,37 @@
<translation>Сортувати</translation>
</message>
<message>
+ <location filename="../playlist.cpp" line="225"/>
<location filename="../playlist.cpp" line="259"/>
<source>By Title</source>
<translation>За назвою</translation>
</message>
<message>
+ <location filename="../playlist.cpp" line="229"/>
<location filename="../playlist.cpp" line="263"/>
<source>By Album</source>
<translation>За альбомом</translation>
</message>
<message>
+ <location filename="../playlist.cpp" line="233"/>
<location filename="../playlist.cpp" line="267"/>
<source>By Artist</source>
<translation>За артистом</translation>
</message>
<message>
+ <location filename="../playlist.cpp" line="237"/>
<location filename="../playlist.cpp" line="271"/>
<source>By Filename</source>
<translation>За ім&apos;ям файлу</translation>
</message>
<message>
+ <location filename="../playlist.cpp" line="241"/>
<location filename="../playlist.cpp" line="275"/>
<source>By Path + Filename</source>
<translation>За шляхом та файлом</translation>
</message>
<message>
+ <location filename="../playlist.cpp" line="245"/>
<location filename="../playlist.cpp" line="279"/>
<source>By Date</source>
<translation>За датою</translation>
@@ -1286,6 +1324,7 @@
<translation></translation>
</message>
<message>
+ <location filename="../playlist.cpp" line="249"/>
<location filename="../playlist.cpp" line="283"/>
<source>By Track Number</source>
<translation></translation>
@@ -1319,11 +1358,13 @@
<translation>Новий</translation>
</message>
<message>
+ <location filename="../forms/playlistbrowser.ui" line="52"/>
<location filename="../playlistbrowser.cpp" line="38"/>
<source>Delete</source>
<translation>Видалити</translation>
</message>
<message>
+ <location filename="../forms/playlistbrowser.ui" line="69"/>
<location filename="../forms/playlistbrowser.ui" line="76"/>
<source>...</source>
<translation>...</translation>
@@ -1342,6 +1383,7 @@
<translation>Налаштування спливаючої інформації</translation>
</message>
<message>
+ <location filename="../forms/popupsettings.ui" line="48"/>
<location filename="../forms/popupsettings.ui" line="78"/>
<source>0</source>
<translation></translation>
diff --git a/src/ui/translations/qmmp_zh_CN.ts b/src/ui/translations/qmmp_zh_CN.ts
index e2492252d..cbcc7d63b 100644
--- a/src/ui/translations/qmmp_zh_CN.ts
+++ b/src/ui/translations/qmmp_zh_CN.ts
@@ -205,18 +205,18 @@
<translation>艺术家</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="88"/>
+ <location filename="../configdialog.cpp" line="82"/>
<location filename="../configdialog.cpp" line="596"/>
<source>Album</source>
<translation>专辑</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="87"/>
+ <location filename="../configdialog.cpp" line="81"/>
<source>Track</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="89"/>
+ <location filename="../configdialog.cpp" line="83"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -376,7 +376,7 @@
<translation>高级</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1219"/>
+ <location filename="../forms/configdialog.ui" line="1237"/>
<source>Close</source>
<translation>关闭</translation>
</message>
@@ -417,7 +417,7 @@
</message>
<message>
<location filename="../forms/configdialog.ui" line="137"/>
- <location filename="../forms/configdialog.ui" line="1156"/>
+ <location filename="../forms/configdialog.ui" line="1174"/>
<source>Audio</source>
<translation>音频</translation>
</message>
@@ -482,23 +482,23 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1090"/>
- <location filename="../forms/configdialog.ui" line="1126"/>
+ <location filename="../forms/configdialog.ui" line="1099"/>
+ <location filename="../forms/configdialog.ui" line="1144"/>
<source>dB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1103"/>
+ <location filename="../forms/configdialog.ui" line="1112"/>
<source>Default gain:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1146"/>
+ <location filename="../forms/configdialog.ui" line="1164"/>
<source>Use peak info to prevent clipping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1162"/>
+ <location filename="../forms/configdialog.ui" line="1180"/>
<source>Use software volume control</source>
<translation>使用软设备音量控制</translation>
</message>
diff --git a/src/ui/translations/qmmp_zh_TW.ts b/src/ui/translations/qmmp_zh_TW.ts
index b6a9c405b..c83e8ad6d 100644
--- a/src/ui/translations/qmmp_zh_TW.ts
+++ b/src/ui/translations/qmmp_zh_TW.ts
@@ -205,18 +205,18 @@
<translation>藝術家</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="88"/>
+ <location filename="../configdialog.cpp" line="82"/>
<location filename="../configdialog.cpp" line="596"/>
<source>Album</source>
<translation>專輯</translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="87"/>
+ <location filename="../configdialog.cpp" line="81"/>
<source>Track</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../configdialog.cpp" line="89"/>
+ <location filename="../configdialog.cpp" line="83"/>
<source>Disabled</source>
<translation type="unfinished"></translation>
</message>
@@ -376,7 +376,7 @@
<translation>進階</translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1219"/>
+ <location filename="../forms/configdialog.ui" line="1237"/>
<source>Close</source>
<translation>關閉</translation>
</message>
@@ -417,7 +417,7 @@
</message>
<message>
<location filename="../forms/configdialog.ui" line="137"/>
- <location filename="../forms/configdialog.ui" line="1156"/>
+ <location filename="../forms/configdialog.ui" line="1174"/>
<source>Audio</source>
<translation>聲訊</translation>
</message>
@@ -482,23 +482,23 @@
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1090"/>
- <location filename="../forms/configdialog.ui" line="1126"/>
+ <location filename="../forms/configdialog.ui" line="1099"/>
+ <location filename="../forms/configdialog.ui" line="1144"/>
<source>dB</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1103"/>
+ <location filename="../forms/configdialog.ui" line="1112"/>
<source>Default gain:</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1146"/>
+ <location filename="../forms/configdialog.ui" line="1164"/>
<source>Use peak info to prevent clipping</source>
<translation type="unfinished"></translation>
</message>
<message>
- <location filename="../forms/configdialog.ui" line="1162"/>
+ <location filename="../forms/configdialog.ui" line="1180"/>
<source>Use software volume control</source>
<translation>使用軟裝置音量控制</translation>
</message>