aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/flac
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-05-27 09:54:53 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-05-27 09:54:53 +0000
commitc955fb39c62596a38e63f00bd802aac48f2d7db0 (patch)
treecabdd51892af80ab35ae0af0b4ee3d8a060f9c71 /src/plugins/Input/flac
parent5b0ac983106a2116cc46b34d57adb3689c8cd4b8 (diff)
downloadqmmp-c955fb39c62596a38e63f00bd802aac48f2d7db0.tar.gz
qmmp-c955fb39c62596a38e63f00bd802aac48f2d7db0.tar.bz2
qmmp-c955fb39c62596a38e63f00bd802aac48f2d7db0.zip
ported flac plugin to new api
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7962 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/flac')
-rw-r--r--src/plugins/Input/flac/cueparser.cpp70
-rw-r--r--src/plugins/Input/flac/cueparser.h17
-rw-r--r--src/plugins/Input/flac/decoder_flac.cpp15
-rw-r--r--src/plugins/Input/flac/decoderflacfactory.cpp106
-rw-r--r--src/plugins/Input/flac/decoderflacfactory.h11
-rw-r--r--src/plugins/Input/flac/flac.pro6
-rw-r--r--src/plugins/Input/flac/replaygainreader.cpp74
-rw-r--r--src/plugins/Input/flac/replaygainreader.h44
8 files changed, 114 insertions, 229 deletions
diff --git a/src/plugins/Input/flac/cueparser.cpp b/src/plugins/Input/flac/cueparser.cpp
index 4f248df32..405ce4d6a 100644
--- a/src/plugins/Input/flac/cueparser.cpp
+++ b/src/plugins/Input/flac/cueparser.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2017 by Ilya Kotov *
+ * Copyright (C) 2008-2018 by Ilya Kotov *
* forkotov02@ya.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -28,12 +28,12 @@
#include <qmmp/metadatamanager.h>
#include "cueparser.h"
-CUEParser::CUEParser(const QByteArray &array, const QString &fileName)
+CUEParser::CUEParser(const QByteArray &array, const QString &path)
{
QString album, genre, date, comment;
QTextStream textStream (array);
textStream.setCodec("UTF-8");
- m_filePath = fileName;
+ m_filePath = path;
QString artist;
double album_peak = 0.0, album_gain = 0.0;
while (!textStream.atEnd())
@@ -48,31 +48,31 @@ CUEParser::CUEParser(const QByteArray &array, const QString &fileName)
if(m_tracks.isEmpty())
artist = words[1];
else
- m_tracks.last()->info.setMetaData(Qmmp::ARTIST, words[1]);
+ m_tracks.last()->info.setValue(Qmmp::ARTIST, words[1]);
}
else if (words[0] == "TITLE")
{
if(m_tracks.isEmpty())
album = words[1];
else
- m_tracks.last()->info.setMetaData(Qmmp::TITLE, words[1]);
+ m_tracks.last()->info.setValue(Qmmp::TITLE, words[1]);
}
else if (words[0] == "TRACK")
{
- FileInfo info("flac://" + fileName + QString("#%1").arg(words[1].toInt()));
- info.setMetaData(Qmmp::TRACK, words[1].toInt());
- info.setMetaData(Qmmp::ALBUM, album);
- info.setMetaData(Qmmp::GENRE, genre);
- info.setMetaData(Qmmp::YEAR, date);
- info.setMetaData(Qmmp::COMMENT, comment);
- info.setMetaData(Qmmp::ARTIST, artist);
- info.setMetaData(Qmmp::ALBUMARTIST, artist);
+ TrackInfo info("flac://" + path + QString("#%1").arg(words[1].toInt()));
+ info.setValue(Qmmp::TRACK, words[1].toInt());
+ info.setValue(Qmmp::ALBUM, album);
+ info.setValue(Qmmp::GENRE, genre);
+ info.setValue(Qmmp::YEAR, date);
+ info.setValue(Qmmp::COMMENT, comment);
+ info.setValue(Qmmp::ARTIST, artist);
+ info.setValue(Qmmp::ALBUMARTIST, artist);
+ info.setValue(Qmmp::REPLAYGAIN_ALBUM_GAIN, album_gain);
+ info.setValue(Qmmp::REPLAYGAIN_ALBUM_PEAK, album_peak);
m_tracks << new CUETrack;
m_tracks.last()->info = info;
m_tracks.last()->offset = 0;
- m_tracks.last()->replayGain.insert(Qmmp::REPLAYGAIN_ALBUM_GAIN, album_gain);
- m_tracks.last()->replayGain.insert(Qmmp::REPLAYGAIN_ALBUM_PEAK, album_peak);
}
else if (words[0] == "INDEX" && words[1] == "01")
{
@@ -81,7 +81,7 @@ CUEParser::CUEParser(const QByteArray &array, const QString &fileName)
m_tracks.last()->offset = getLength(words[2]);
int c = m_tracks.count();
if(c > 1)
- m_tracks[c - 2]->info.setLength(m_tracks[c - 1]->offset - m_tracks[c - 2]->offset);
+ m_tracks[c - 2]->info.setDuration(m_tracks[c - 1]->offset - m_tracks[c - 2]->offset);
}
else if (words[0] == "REM")
{
@@ -98,9 +98,9 @@ CUEParser::CUEParser(const QByteArray &array, const QString &fileName)
else if (words[1] == "REPLAYGAIN_ALBUM_PEAK")
album_peak = words[2].toDouble();
else if (words[1] == "REPLAYGAIN_TRACK_GAIN" && !m_tracks.isEmpty())
- m_tracks.last()->replayGain.insert(Qmmp::REPLAYGAIN_TRACK_GAIN, words[2].toDouble());
+ m_tracks.last()->info.setValue(Qmmp::REPLAYGAIN_TRACK_GAIN, words[2].toDouble());
else if (words[1] == "REPLAYGAIN_TRACK_PEAK" && !m_tracks.isEmpty())
- m_tracks.last()->replayGain.insert(Qmmp::REPLAYGAIN_TRACK_PEAK, words[2].toDouble());
+ m_tracks.last()->info.setValue(Qmmp::REPLAYGAIN_TRACK_PEAK, words[2].toDouble());
}
}
if(m_tracks.isEmpty())
@@ -108,13 +108,18 @@ CUEParser::CUEParser(const QByteArray &array, const QString &fileName)
qWarning("CUEParser: invalid cue file");
return;
}
- //calculate last item length
- QList <FileInfo *> f_list = MetaDataManager::instance()->createPlayList(m_filePath, false);
- qint64 l = f_list.isEmpty() ? 0 : f_list.at(0)->length() * 1000;
- if (l > m_tracks.last()->offset)
- m_tracks.last()->info.setLength(l - m_tracks.last()->offset);
- else
- m_tracks.last()->info.setLength(0);
+
+ QList<TrackInfo *> f_list = MetaDataManager::instance()->createPlayList(m_filePath, TrackInfo::Properties);
+ if(!f_list.isEmpty())
+ {
+ //calculate last item length
+ m_tracks.last()->info.setDuration(qMax(0LL, f_list.first()->duration() - m_tracks.last()->offset));
+ //add properties
+ foreach(CUETrack *cueTrack, m_tracks)
+ cueTrack->info.setValues(f_list.first()->properties());
+ qDeleteAll(f_list);
+ f_list.clear();
+ }
}
CUEParser::~CUEParser()
@@ -123,13 +128,12 @@ CUEParser::~CUEParser()
m_tracks.clear();
}
-QList<FileInfo*> CUEParser::createPlayList()
+QList<TrackInfo*> CUEParser::createPlayList()
{
- QList<FileInfo*> list;
+ QList<TrackInfo*> list;
foreach(CUETrack *track, m_tracks)
{
- list << new FileInfo(track->info);
- list.last()->setLength(track->info.length()/1000);
+ list << new TrackInfo(track->info);
}
return list;
}
@@ -144,9 +148,9 @@ qint64 CUEParser::offset(int track) const
return m_tracks.at(track - 1)->offset;
}
-qint64 CUEParser::length(int track) const
+qint64 CUEParser::duration(int track) const
{
- return m_tracks.at(track - 1)->info.length();
+ return m_tracks.at(track - 1)->info.duration();
}
int CUEParser::count() const
@@ -154,7 +158,7 @@ int CUEParser::count() const
return m_tracks.count();
}
-FileInfo *CUEParser::info(int track)
+TrackInfo *CUEParser::info(int track)
{
return &m_tracks.at(track - 1)->info;
}
@@ -166,7 +170,7 @@ const QString CUEParser::trackURL(int track) const
const QMap<Qmmp::ReplayGainKey, double> CUEParser::replayGain(int track) const
{
- return m_tracks.at(track - 1)->replayGain;
+ return m_tracks.at(track - 1)->info.replayGainInfo();
}
QStringList CUEParser::splitLine(const QString &line)
diff --git a/src/plugins/Input/flac/cueparser.h b/src/plugins/Input/flac/cueparser.h
index 676bef0aa..e173aee58 100644
--- a/src/plugins/Input/flac/cueparser.h
+++ b/src/plugins/Input/flac/cueparser.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2016 by Ilya Kotov *
+ * Copyright (C) 2008-2018 by Ilya Kotov *
* forkotov02@ya.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -26,7 +26,7 @@
#include <QStringList>
#include <QUrl>
#include <qmmp/qmmp.h>
-#include <qmmp/fileinfo.h>
+#include <qmmp/trackinfo.h>
/**
@@ -35,27 +35,26 @@
class CUEParser
{
public:
- CUEParser(const QByteArray &array, const QString &fileName);
+ CUEParser(const QByteArray &array, const QString &path);
~CUEParser();
- QList<FileInfo*> createPlayList();
+ QList<TrackInfo *> createPlayList();
const QString filePath() const;
qint64 offset(int track) const;
- qint64 length(int track) const;
+ qint64 duration(int track) const;
int count() const;
- FileInfo *info(int track);
+ TrackInfo *info(int track);
const QString trackURL(int track) const;
const QMap<Qmmp::ReplayGainKey, double> replayGain(int track) const;
private:
struct CUETrack
{
- FileInfo info;
+ TrackInfo info;
qint64 offset;
- QMap<Qmmp::ReplayGainKey, double> replayGain;
};
- QList <CUETrack * > m_tracks;
+ QList <CUETrack *> m_tracks;
QStringList splitLine(const QString &line);
qint64 getLength(const QString &str);
QString m_filePath;
diff --git a/src/plugins/Input/flac/decoder_flac.cpp b/src/plugins/Input/flac/decoder_flac.cpp
index 395b0eb6e..29bd4b119 100644
--- a/src/plugins/Input/flac/decoder_flac.cpp
+++ b/src/plugins/Input/flac/decoder_flac.cpp
@@ -34,7 +34,6 @@
#include <QIODevice>
#include <FLAC/all.h>
#include <stdint.h>
-#include "replaygainreader.h"
#include "cueparser.h"
#include "decoder_flac.h"
@@ -325,8 +324,7 @@ bool DecoderFLAC::initialize()
TagLib::StringList fld = xiph_comment->fieldListMap()["DISCNUMBER"];
for(int i = 1; i <= m_parser->count(); i++)
{
- m_parser->info(i)->setMetaData(Qmmp::DISCNUMBER,
- QString::fromUtf8(fld.toString().toCString(true)).trimmed());
+ m_parser->info(i)->setValue(Qmmp::DISCNUMBER, TStringToQString(fld.toString()));
}
}
QMap<Qmmp::MetaData, QString> metaData = m_parser->info(m_track)->metaData();
@@ -451,15 +449,10 @@ bool DecoderFLAC::initialize()
default:
return false;
}
- if(!m_path.contains("://"))
- {
- ReplayGainReader rg(m_path);
- setReplayGainInfo(rg.replayGainInfo());
- }
if(m_parser)
{
- m_length = m_parser->length(m_track);
+ m_length = m_parser->duration(m_track);
m_offset = m_parser->offset(m_track);
length_in_bytes = audioParameters().sampleRate() *
audioParameters().frameSize() * m_length/1000;
@@ -574,8 +567,8 @@ void DecoderFLAC::next()
if(m_parser && m_track +1 <= m_parser->count())
{
m_track++;
- m_offset = m_parser->length(m_track);
- m_length = m_parser->length(m_track);
+ m_offset = m_parser->duration(m_track);
+ m_length = m_parser->duration(m_track);
length_in_bytes = audioParameters().sampleRate() *
audioParameters().channels() *
audioParameters().sampleSize() * m_length/1000;
diff --git a/src/plugins/Input/flac/decoderflacfactory.cpp b/src/plugins/Input/flac/decoderflacfactory.cpp
index 82332d83c..0be3739b0 100644
--- a/src/plugins/Input/flac/decoderflacfactory.cpp
+++ b/src/plugins/Input/flac/decoderflacfactory.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2016 by Ilya Kotov *
+ * Copyright (C) 2008-2018 by Ilya Kotov *
* forkotov02@ya.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -66,9 +66,9 @@ Decoder *DecoderFLACFactory::create(const QString &path, QIODevice *i)
return new DecoderFLAC(path, i);
}
-QList<FileInfo *> DecoderFLACFactory::createPlayList(const QString &fileName, bool useMetaData, QStringList *ignoredFiles)
+QList<TrackInfo*> DecoderFLACFactory::createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *ignoredFiles)
{
- QList <FileInfo*> list;
+ QList <TrackInfo*> list;
TagLib::Ogg::XiphComment *tag = 0;
TagLib::FLAC::Properties *ap = 0;
@@ -76,67 +76,53 @@ QList<FileInfo *> DecoderFLACFactory::createPlayList(const QString &fileName, bo
TagLib::Ogg::FLAC::File *oggFlacFile = 0;
//extract metadata of the one cue track
- if(fileName.contains("://"))
+ if(path.contains("://"))
{
- QString path = fileName;
+ QString path = path;
path.remove("flac://");
path.remove(QRegExp("#\\d+$"));
- int track = fileName.section("#", -1).toInt();
- list = createPlayList(path, true, ignoredFiles);
+ int track = path.section("#", -1).toInt();
+ list = createPlayList(path, parts, ignoredFiles);
if (list.isEmpty() || track <= 0 || track > list.count())
{
qDeleteAll(list);
list.clear();
return list;
}
- FileInfo *info = list.takeAt(track - 1);
+ TrackInfo *info = list.takeAt(track - 1);
qDeleteAll(list);
- return QList<FileInfo *>() << info;
+ return QList<TrackInfo *>() << info;
}
- TagLib::FileStream stream(QStringToFileName(fileName), true);
+ TagLib::FileStream stream(QStringToFileName(path), true);
- if(fileName.endsWith(".flac", Qt::CaseInsensitive))
+ if(path.endsWith(".flac", Qt::CaseInsensitive))
{
flacFile = new TagLib::FLAC::File(&stream, TagLib::ID3v2::FrameFactory::instance());
- tag = useMetaData ? flacFile->xiphComment() : 0;
+ tag = parts ? flacFile->xiphComment() : 0;
ap = flacFile->audioProperties();
}
- else if(fileName.endsWith(".oga", Qt::CaseInsensitive))
+ else if(path.endsWith(".oga", Qt::CaseInsensitive))
{
oggFlacFile = new TagLib::Ogg::FLAC::File(&stream);
- tag = useMetaData ? oggFlacFile->tag() : 0;
+ tag = parts ? oggFlacFile->tag() : 0;
ap = oggFlacFile->audioProperties();
}
else
return list;
- FileInfo *info = new FileInfo(fileName);
- if (tag && !tag->isEmpty())
+ TrackInfo *info = new TrackInfo(path);
+ if(tag && !tag->isEmpty())
{
- info->setMetaData(Qmmp::ALBUM,
- QString::fromUtf8(tag->album().toCString(true)).trimmed());
- info->setMetaData(Qmmp::ARTIST,
- QString::fromUtf8(tag->artist().toCString(true)).trimmed());
- info->setMetaData(Qmmp::COMMENT,
- QString::fromUtf8(tag->comment().toCString(true)).trimmed());
- info->setMetaData(Qmmp::GENRE,
- QString::fromUtf8(tag->genre().toCString(true)).trimmed());
- info->setMetaData(Qmmp::TITLE,
- QString::fromUtf8(tag->title().toCString(true)).trimmed());
- info->setMetaData(Qmmp::YEAR, tag->year());
- info->setMetaData(Qmmp::TRACK, tag->track());
-
if (tag->fieldListMap().contains("CUESHEET"))
{
- CUEParser parser(tag->fieldListMap()["CUESHEET"].toString().toCString(true), fileName);
+ CUEParser parser(tag->fieldListMap()["CUESHEET"].toString().toCString(true), path);
if(tag->contains("DISCNUMBER") && !tag->fieldListMap()["DISCNUMBER"].isEmpty())
{
TagLib::StringList fld = tag->fieldListMap()["DISCNUMBER"];
for(int i = 1; i <= parser.count(); i++)
{
- parser.info(i)->setMetaData(Qmmp::DISCNUMBER,
- QString::fromUtf8(fld.toString().toCString(true)).trimmed());
+ parser.info(i)->setValue(Qmmp::DISCNUMBER, TStringToQString(fld.toString()));
}
}
list = parser.createPlayList();
@@ -148,20 +134,50 @@ QList<FileInfo *> DecoderFLACFactory::createPlayList(const QString &fileName, bo
return list;
}
- //additional metadata
- TagLib::StringList fld;
- if(!(fld = tag->fieldListMap()["ALBUMARTIST"]).isEmpty())
- info->setMetaData(Qmmp::ALBUMARTIST,
- QString::fromUtf8(fld.front().toCString(true)).trimmed());
- if(!(fld = tag->fieldListMap()["COMPOSER"]).isEmpty())
- info->setMetaData(Qmmp::COMPOSER,
- QString::fromUtf8(fld.front().toCString(true)).trimmed());
- if(!(fld = tag->fieldListMap()["DISCNUMBER"]).isEmpty())
- info->setMetaData(Qmmp::DISCNUMBER,
- QString::fromUtf8(fld.front().toCString(true)).trimmed());
+ if(parts & TrackInfo::MetaData)
+ {
+ info->setValue(Qmmp::ALBUM, TStringToQString(tag->album()));
+ info->setValue(Qmmp::ARTIST, TStringToQString(tag->artist()));
+ info->setValue(Qmmp::COMMENT, TStringToQString(tag->comment()));
+ info->setValue(Qmmp::GENRE, TStringToQString(tag->genre()));
+ info->setValue(Qmmp::TITLE, TStringToQString(tag->title()));
+ info->setValue(Qmmp::YEAR, tag->year());
+ info->setValue(Qmmp::TRACK, tag->track());
+ //additional metadata
+ TagLib::StringList fld;
+ if(!(fld = tag->fieldListMap()["ALBUMARTIST"]).isEmpty())
+ info->setValue(Qmmp::ALBUMARTIST, TStringToQString(fld.front()));
+ if(!(fld = tag->fieldListMap()["COMPOSER"]).isEmpty())
+ info->setValue(Qmmp::COMPOSER, TStringToQString(fld.front()));
+ if(!(fld = tag->fieldListMap()["DISCNUMBER"]).isEmpty())
+ info->setValue(Qmmp::DISCNUMBER, TStringToQString(fld.front()));
+ }
}
if(ap)
- info->setLength(ap->length());
+ {
+ info->setDuration(ap->lengthInMilliseconds());
+ if(parts & TrackInfo::Properties)
+ {
+ info->setValue(Qmmp::BITRATE, ap->bitrate());
+ info->setValue(Qmmp::SAMPLERATE, ap->sampleRate());
+ info->setValue(Qmmp::CHANNELS, ap->channels());
+ info->setValue(Qmmp::BITS_PER_SAMPLE, ap->bitsPerSample());
+ info->setValue(Qmmp::FORMAT_NAME, flacFile ? "FLAC" : "Ogg FLAC");
+ }
+ }
+ if((parts & TrackInfo::ReplayGainInfo) && tag && !tag->isEmpty())
+ {
+ TagLib::Ogg::FieldListMap items = tag->fieldListMap();
+ if (items.contains("REPLAYGAIN_TRACK_GAIN"))
+ info->setValue(Qmmp::REPLAYGAIN_TRACK_GAIN,TStringToQString(items["REPLAYGAIN_TRACK_GAIN"].front()));
+ if (items.contains("REPLAYGAIN_TRACK_PEAK"))
+ info->setValue(Qmmp::REPLAYGAIN_TRACK_PEAK,TStringToQString(items["REPLAYGAIN_TRACK_PEAK"].front()));
+ if (items.contains("REPLAYGAIN_ALBUM_GAIN"))
+ info->setValue(Qmmp::REPLAYGAIN_ALBUM_GAIN,TStringToQString(items["REPLAYGAIN_ALBUM_GAIN"].front()));
+ if (items.contains("REPLAYGAIN_ALBUM_PEAK"))
+ info->setValue(Qmmp::REPLAYGAIN_ALBUM_PEAK,TStringToQString(items["REPLAYGAIN_ALBUM_PEAK"].front()));
+ }
+
list << info;
if(flacFile)
delete flacFile;
@@ -170,7 +186,7 @@ QList<FileInfo *> DecoderFLACFactory::createPlayList(const QString &fileName, bo
return list;
}
-MetaDataModel*DecoderFLACFactory::createMetaDataModel(const QString &path, QObject *parent)
+MetaDataModel* DecoderFLACFactory::createMetaDataModel(const QString &path, QObject *parent)
{
if (!path.contains("://") || path.startsWith("flac://"))
return new FLACMetaDataModel(path, parent);
diff --git a/src/plugins/Input/flac/decoderflacfactory.h b/src/plugins/Input/flac/decoderflacfactory.h
index 9e16e7027..ddc0526a3 100644
--- a/src/plugins/Input/flac/decoderflacfactory.h
+++ b/src/plugins/Input/flac/decoderflacfactory.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2016 by Ilya Kotov *
+ * Copyright (C) 2006-2018 by Ilya Kotov *
* forkotov02@ya.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -20,13 +20,6 @@
#ifndef DECODERFLACFACTORY_H
#define DECODERFLACFACTORY_H
-#include <QObject>
-#include <QString>
-#include <QIODevice>
-#include <QWidget>
-
-#include <qmmp/decoder.h>
-#include <qmmp/output.h>
#include <qmmp/decoderfactory.h>
class DecoderFLACFactory : public QObject,
@@ -40,7 +33,7 @@ public:
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
Decoder *create(const QString &, QIODevice *);
- QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData, QStringList *ignoredFiles);
+ QList<TrackInfo*> createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *ignoredFiles);
MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/plugins/Input/flac/flac.pro b/src/plugins/Input/flac/flac.pro
index 01285ec27..70c2c7280 100644
--- a/src/plugins/Input/flac/flac.pro
+++ b/src/plugins/Input/flac/flac.pro
@@ -5,14 +5,12 @@ TARGET = $$PLUGINS_PREFIX/Input/flac
HEADERS += decoderflacfactory.h \
decoder_flac.h \
cueparser.h \
- flacmetadatamodel.h \
- replaygainreader.h
+ flacmetadatamodel.h
SOURCES += decoder_flac.cpp \
decoderflacfactory.cpp \
cueparser.cpp \
- flacmetadatamodel.cpp \
- replaygainreader.cpp
+ flacmetadatamodel.cpp
RESOURCES = translations/translations.qrc
diff --git a/src/plugins/Input/flac/replaygainreader.cpp b/src/plugins/Input/flac/replaygainreader.cpp
deleted file mode 100644
index 88d57cd13..000000000
--- a/src/plugins/Input/flac/replaygainreader.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2009-2016 by Ilya Kotov *
- * forkotov02@ya.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., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-
-#include <QtGlobal>
-#include <taglib/tag.h>
-#include <taglib/fileref.h>
-#include <taglib/flacfile.h>
-#include <taglib/oggflacfile.h>
-#include <taglib/tfilestream.h>
-#include <taglib/id3v2framefactory.h>
-#include "replaygainreader.h"
-
-ReplayGainReader::ReplayGainReader(const QString &path)
-{
- TagLib::FileStream stream(QStringToFileName(path), true);
- if(path.endsWith(".flac", Qt::CaseInsensitive))
- {
- TagLib::FLAC::File fileRef(&stream, TagLib::ID3v2::FrameFactory::instance());
- if(fileRef.xiphComment())
- readVorbisComment(fileRef.xiphComment());
- }
- else if(path.endsWith(".oga", Qt::CaseInsensitive))
- {
- TagLib::Ogg::FLAC::File fileRef(&stream);
- if(fileRef.tag())
- readVorbisComment(fileRef.tag());
- }
-}
-
-QMap <Qmmp::ReplayGainKey, double> ReplayGainReader::replayGainInfo() const
-{
- return m_values;
-}
-
-void ReplayGainReader::readVorbisComment(TagLib::Ogg::XiphComment *comment)
-{
- TagLib::Ogg::FieldListMap items = comment->fieldListMap();
- if (items.contains("REPLAYGAIN_TRACK_GAIN"))
- setValue(Qmmp::REPLAYGAIN_TRACK_GAIN,TStringToQString(items["REPLAYGAIN_TRACK_GAIN"].front()));
- if (items.contains("REPLAYGAIN_TRACK_PEAK"))
- setValue(Qmmp::REPLAYGAIN_TRACK_PEAK,TStringToQString(items["REPLAYGAIN_TRACK_PEAK"].front()));
- if (items.contains("REPLAYGAIN_ALBUM_GAIN"))
- setValue(Qmmp::REPLAYGAIN_ALBUM_GAIN,TStringToQString(items["REPLAYGAIN_ALBUM_GAIN"].front()));
- if (items.contains("REPLAYGAIN_ALBUM_PEAK"))
- setValue(Qmmp::REPLAYGAIN_ALBUM_PEAK,TStringToQString(items["REPLAYGAIN_ALBUM_PEAK"].front()));
-}
-
-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/flac/replaygainreader.h b/src/plugins/Input/flac/replaygainreader.h
deleted file mode 100644
index 75f2037ba..000000000
--- a/src/plugins/Input/flac/replaygainreader.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/***************************************************************************
- * Copyright (C) 2009 by Ilya Kotov *
- * forkotov02@ya.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., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
- ***************************************************************************/
-
-#ifndef REPLAYGAINREADER_H
-#define REPLAYGAINREADER_H
-
-#include <QMap>
-#include <QString>
-#include <taglib/xiphcomment.h>
-#include <qmmp/qmmp.h>
-
-/**
- @author Ilya Kotov <forkotov02@ya.ru>
-*/
-class ReplayGainReader
-{
-public:
- ReplayGainReader(const QString &path);
- QMap <Qmmp::ReplayGainKey, double> replayGainInfo() const;
-
-private:
- void readVorbisComment(TagLib::Ogg::XiphComment *comment);
- void setValue(Qmmp::ReplayGainKey key, QString value);
- QMap <Qmmp::ReplayGainKey, double> m_values;
-};
-
-#endif // REPLAYGAINREADER_H