aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-11-28 15:46:53 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2008-11-28 15:46:53 +0000
commit26724c66d4764a77ca653ce6c0a1573e9e97e97c (patch)
treef238f84ed390de31471cb95a20e3775f2ea7e3e7 /src
parentd02787b92ad9a220539498ebbc9f1745a075d10d (diff)
downloadqmmp-26724c66d4764a77ca653ce6c0a1573e9e97e97c.tar.gz
qmmp-26724c66d4764a77ca653ce6c0a1573e9e97e97c.tar.bz2
qmmp-26724c66d4764a77ca653ce6c0a1573e9e97e97c.zip
changed decoder api; fixed flac plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@646 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/plugins/Input/aac/decoderaacfactory.cpp7
-rw-r--r--src/plugins/Input/aac/decoderaacfactory.h2
-rw-r--r--src/plugins/Input/cue/cueparser.cpp2
-rw-r--r--src/plugins/Input/cue/decodercuefactory.cpp3
-rw-r--r--src/plugins/Input/cue/decodercuefactory.h2
-rw-r--r--src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp22
-rw-r--r--src/plugins/Input/ffmpeg/decoderffmpegfactory.h2
-rw-r--r--src/plugins/Input/flac/cueparser.cpp10
-rw-r--r--src/plugins/Input/flac/decoder_flac.cpp22
-rw-r--r--src/plugins/Input/flac/decoder_flac.h1
-rw-r--r--src/plugins/Input/flac/decoderflacfactory.cpp7
-rw-r--r--src/plugins/Input/flac/decoderflacfactory.h2
-rw-r--r--src/plugins/Input/mad/decodermadfactory.cpp135
-rw-r--r--src/plugins/Input/mad/decodermadfactory.h2
-rw-r--r--src/plugins/Input/modplug/decodermodplugfactory.cpp4
-rw-r--r--src/plugins/Input/modplug/decodermodplugfactory.h2
-rw-r--r--src/plugins/Input/mpc/decodermpcfactory.cpp4
-rw-r--r--src/plugins/Input/mpc/decodermpcfactory.h2
-rw-r--r--src/plugins/Input/sndfile/decodersndfilefactory.cpp50
-rw-r--r--src/plugins/Input/sndfile/decodersndfilefactory.h2
-rw-r--r--src/plugins/Input/vorbis/decodervorbisfactory.cpp4
-rw-r--r--src/plugins/Input/vorbis/decodervorbisfactory.h2
-rw-r--r--src/plugins/Input/wavpack/decoderwavpackfactory.cpp44
-rw-r--r--src/plugins/Input/wavpack/decoderwavpackfactory.h2
-rw-r--r--src/qmmp/decoder.cpp4
-rw-r--r--src/qmmp/decoder.h2
-rw-r--r--src/qmmp/decoderfactory.h2
-rw-r--r--src/qmmp/soundcore.cpp2
28 files changed, 173 insertions, 172 deletions
diff --git a/src/plugins/Input/aac/decoderaacfactory.cpp b/src/plugins/Input/aac/decoderaacfactory.cpp
index d55f64fdc..73d52087a 100644
--- a/src/plugins/Input/aac/decoderaacfactory.cpp
+++ b/src/plugins/Input/aac/decoderaacfactory.cpp
@@ -59,15 +59,16 @@ Decoder *DecoderAACFactory::create(QObject *parent, QIODevice *input,
return new DecoderAAC(parent, this, input, output);
}
-QList<FileInfo *> DecoderAACFactory::createPlayList(const QString &fileName)
+QList<FileInfo *> DecoderAACFactory::createPlayList(const QString &fileName, bool useMetaData)
{
FileInfo *info = new FileInfo(fileName);
QFile file(fileName);
if (file.open(QIODevice::ReadOnly))
{
- AACFile aac_file(&file);
- info->setMetaData(aac_file.metaData());
+ AACFile aac_file(&file, useMetaData);
+ if (useMetaData)
+ info->setMetaData(aac_file.metaData());
info->setLength(aac_file.length());
}
QList <FileInfo*> list;
diff --git a/src/plugins/Input/aac/decoderaacfactory.h b/src/plugins/Input/aac/decoderaacfactory.h
index eb4fb6276..41af2151d 100644
--- a/src/plugins/Input/aac/decoderaacfactory.h
+++ b/src/plugins/Input/aac/decoderaacfactory.h
@@ -44,7 +44,7 @@ public:
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
Decoder *create(QObject *, QIODevice *, Output *, const QString &);
- QList<FileInfo *> createPlayList(const QString &fileName);
+ QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/plugins/Input/cue/cueparser.cpp b/src/plugins/Input/cue/cueparser.cpp
index 440c5fb54..f9827fafa 100644
--- a/src/plugins/Input/cue/cueparser.cpp
+++ b/src/plugins/Input/cue/cueparser.cpp
@@ -103,7 +103,7 @@ CUEParser::CUEParser(const QString &fileName)
m_infoList[i].setLength(m_infoList[i+1].length() - m_infoList[i].length());
//calculate last item length
QList <FileInfo *> f_list;
- f_list = Decoder::createPlayList(m_filePath);
+ f_list = Decoder::createPlayList(m_filePath, FALSE);
qint64 l = f_list.isEmpty() ? 0 : f_list.at(0)->length();
if (l > m_infoList.last().length())
m_infoList.last().setLength(l - m_infoList.last().length());
diff --git a/src/plugins/Input/cue/decodercuefactory.cpp b/src/plugins/Input/cue/decodercuefactory.cpp
index d1baf3fcf..893154694 100644
--- a/src/plugins/Input/cue/decodercuefactory.cpp
+++ b/src/plugins/Input/cue/decodercuefactory.cpp
@@ -61,8 +61,9 @@ Decoder *DecoderCUEFactory::create(QObject *parent, QIODevice *input,
return new DecoderCUE(parent, this, url);
}
-QList<FileInfo *> DecoderCUEFactory::createPlayList(const QString &fileName)
+QList<FileInfo *> DecoderCUEFactory::createPlayList(const QString &fileName, bool useMetaData)
{
+ Q_UNUSED(useMetaData);
CUEParser parser(fileName);
return parser.createPlayList();
}
diff --git a/src/plugins/Input/cue/decodercuefactory.h b/src/plugins/Input/cue/decodercuefactory.h
index 2375fc896..a79cb0429 100644
--- a/src/plugins/Input/cue/decodercuefactory.h
+++ b/src/plugins/Input/cue/decodercuefactory.h
@@ -40,7 +40,7 @@ public:
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
Decoder *create(QObject *, QIODevice *, Output *, const QString &);
- QList<FileInfo *> createPlayList(const QString &fileName);
+ QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
index 41a968634..35abd0eac 100644
--- a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
+++ b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
@@ -20,7 +20,8 @@
#include <QtGui>
-extern "C"{
+extern "C"
+{
#if defined HAVE_FFMPEG_LIBAVFORMAT_AVFORMAT_H
#include <ffmpeg/libavformat/avformat.h>
#elif defined HAVE_FFMPEG_AVFORMAT_H
@@ -81,7 +82,7 @@ Decoder *DecoderFFmpegFactory::create(QObject *parent, QIODevice *input,
return new DecoderFFmpeg(parent, this, output, path);
}
-QList<FileInfo *> DecoderFFmpegFactory::createPlayList(const QString &fileName)
+QList<FileInfo *> DecoderFFmpegFactory::createPlayList(const QString &fileName, bool useMetaData)
{
QList <FileInfo*> list;
avcodec_init();
@@ -93,13 +94,16 @@ QList<FileInfo *> DecoderFFmpegFactory::createPlayList(const QString &fileName)
return list;
FileInfo *info = new FileInfo(fileName);
av_find_stream_info(in);
- info->setMetaData(Qmmp::ALBUM, QString::fromUtf8(in->album).trimmed());
- info->setMetaData(Qmmp::ARTIST, QString::fromUtf8(in->author).trimmed());
- info->setMetaData(Qmmp::COMMENT, QString::fromUtf8(in->comment).trimmed());
- info->setMetaData(Qmmp::GENRE, QString::fromUtf8(in->genre).trimmed());
- info->setMetaData(Qmmp::TITLE, QString::fromUtf8(in->title).trimmed());
- info->setMetaData(Qmmp::YEAR, in->year);
- info->setMetaData(Qmmp::TRACK, in->track);
+ if (useMetaData)
+ {
+ info->setMetaData(Qmmp::ALBUM, QString::fromUtf8(in->album).trimmed());
+ info->setMetaData(Qmmp::ARTIST, QString::fromUtf8(in->author).trimmed());
+ info->setMetaData(Qmmp::COMMENT, QString::fromUtf8(in->comment).trimmed());
+ info->setMetaData(Qmmp::GENRE, QString::fromUtf8(in->genre).trimmed());
+ info->setMetaData(Qmmp::TITLE, QString::fromUtf8(in->title).trimmed());
+ info->setMetaData(Qmmp::YEAR, in->year);
+ info->setMetaData(Qmmp::TRACK, in->track);
+ }
info->setLength(in->duration/AV_TIME_BASE);
av_close_input_file(in);
list << info;
diff --git a/src/plugins/Input/ffmpeg/decoderffmpegfactory.h b/src/plugins/Input/ffmpeg/decoderffmpegfactory.h
index c8bb2ef62..0ee85a8b9 100644
--- a/src/plugins/Input/ffmpeg/decoderffmpegfactory.h
+++ b/src/plugins/Input/ffmpeg/decoderffmpegfactory.h
@@ -44,7 +44,7 @@ public:
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
Decoder *create(QObject *, QIODevice *, Output *, const QString &);
- QList<FileInfo *> createPlayList(const QString &fileName);
+ QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/plugins/Input/flac/cueparser.cpp b/src/plugins/Input/flac/cueparser.cpp
index 64870c97f..1441a999b 100644
--- a/src/plugins/Input/flac/cueparser.cpp
+++ b/src/plugins/Input/flac/cueparser.cpp
@@ -44,12 +44,7 @@ CUEParser::CUEParser(const QByteArray &array, const QString &fileName)
if (words.size() < 2)
continue;
- if (words[0] == "FILE")
- {
- //m_filePath = QUrl(fileName).path ();
- //m_filePath = QFileInfo(m_filePath).dir().filePath(words[1]);
- }
- else if (words[0] == "PERFORMER")
+ if (words[0] == "PERFORMER")
{
if (m_infoList.isEmpty())
{
@@ -97,8 +92,7 @@ CUEParser::CUEParser(const QByteArray &array, const QString &fileName)
for (int i = 0; i < m_infoList.size() - 1; ++i)
m_infoList[i].setLength(m_infoList[i+1].length() - m_infoList[i].length());
//calculate last item length
- QList <FileInfo *> f_list;
- //f_list = Decoder::createPlayList(m_filePath);
+ QList <FileInfo *> f_list = Decoder::createPlayList(m_filePath, FALSE);
qint64 l = f_list.isEmpty() ? 0 : f_list.at(0)->length();
if (l > m_infoList.last().length())
m_infoList.last().setLength(l - m_infoList.last().length());
diff --git a/src/plugins/Input/flac/decoder_flac.cpp b/src/plugins/Input/flac/decoder_flac.cpp
index 44618c919..ec6cb6755 100644
--- a/src/plugins/Input/flac/decoder_flac.cpp
+++ b/src/plugins/Input/flac/decoder_flac.cpp
@@ -281,7 +281,6 @@ DecoderFLAC::DecoderFLAC(QObject *parent, DecoderFactory *d, QIODevice *i, Outpu
m_offset = 0;
m_length = 0;
- m_cue = FALSE;
m_data = new flac_data;
m_data->decoder = NULL;
data()->input = i;
@@ -362,7 +361,6 @@ bool DecoderFLAC::initialize()
seekTime = -1.0;
totalTime = 0.0;
-
if (!data()->input)
{
QString p = m_path;
@@ -374,20 +372,18 @@ bool DecoderFLAC::initialize()
qWarning("DecoderFLAC: invalid url.");
return FALSE;
}
- qDebug("DecoderFLAC: using embeded cue");
TagLib::FLAC::File fileRef(p.toLocal8Bit ());
//looking for cuesheet comment
TagLib::Ogg::XiphComment *xiph_comment = fileRef.xiphComment();
QList <FileInfo*> list;
if (xiph_comment && xiph_comment->fieldListMap().contains("CUESHEET"))
{
- qDebug("DecoderFLAC: found cuesheet xiph comment");
- CUEParser parser(xiph_comment->fieldListMap()["CUESHEET"].toString().toCString(TRUE), m_path);
+ qDebug("DecoderFLAC: using cuesheet xiph comment.");
+ CUEParser parser(xiph_comment->fieldListMap()["CUESHEET"].toString().toCString(TRUE), p);
int track = m_path.section("#", -1).toInt();
m_offset = parser.offset(track);
m_length = parser.length(track);
data()->input = new QFile(p);
- m_cue = TRUE;
}
else
{
@@ -501,9 +497,10 @@ void DecoderFLAC::deinit()
len = freq = bitrate = 0;
stat = chan = 0;
output_size = 0;
- if (!input() && data()->input)
+ if (!input() && data()->input) //delete internal input only
{
data()->input->close();
+ delete data()->input;
data()->input = 0;
};
}
@@ -519,7 +516,7 @@ void DecoderFLAC::run()
}
mutex()->unlock();
- while (! done && ! m_finish)
+ while (!done && !m_finish)
{
mutex()->lock ();
// decode
@@ -566,22 +563,17 @@ void DecoderFLAC::run()
}
done = TRUE;
- if (! user_stop)
- {
- m_finish = TRUE;
- }
+ m_finish = !user_stop;
}
else
{
- // error in read
+ // error while read
qWarning("DecoderFLAC: Error while decoding stream, File appears to be "
"corrupted");
m_finish = TRUE;
}
-
if (m_length && (StateHandler::instance()->elapsed() >= m_length))
m_finish = TRUE;
-
mutex()->unlock();
}
diff --git a/src/plugins/Input/flac/decoder_flac.h b/src/plugins/Input/flac/decoder_flac.h
index cef0cd561..f2e002487 100644
--- a/src/plugins/Input/flac/decoder_flac.h
+++ b/src/plugins/Input/flac/decoder_flac.h
@@ -102,7 +102,6 @@ private:
QString m_path;
qint64 m_offset;
qint64 m_length;
- bool m_cue;
};
diff --git a/src/plugins/Input/flac/decoderflacfactory.cpp b/src/plugins/Input/flac/decoderflacfactory.cpp
index 2da4c69de..df3ef6dd3 100644
--- a/src/plugins/Input/flac/decoderflacfactory.cpp
+++ b/src/plugins/Input/flac/decoderflacfactory.cpp
@@ -64,12 +64,12 @@ Decoder *DecoderFLACFactory::create(QObject *parent, QIODevice *input,
return new DecoderFLAC(parent, this, input, output, path);
}
-QList<FileInfo *> DecoderFLACFactory::createPlayList(const QString &fileName)
+QList<FileInfo *> DecoderFLACFactory::createPlayList(const QString &fileName, bool useMetaData)
{
FileInfo *info = new FileInfo(fileName);
TagLib::FLAC::File fileRef(fileName.toLocal8Bit ());
- TagLib::Tag *tag = fileRef.tag();
+ TagLib::Tag *tag = useMetaData ? fileRef.tag() : 0;
if (tag && !tag->isEmpty())
{
@@ -91,11 +91,10 @@ QList<FileInfo *> DecoderFLACFactory::createPlayList(const QString &fileName)
info->setLength(fileRef.audioProperties()->length());
//looking for cuesheet comment
- TagLib::Ogg::XiphComment *xiph_comment = fileRef.xiphComment();
+ TagLib::Ogg::XiphComment *xiph_comment = useMetaData ? fileRef.xiphComment() : 0;
QList <FileInfo*> list;
if (xiph_comment && xiph_comment->fieldListMap().contains("CUESHEET"))
{
- qDebug(xiph_comment->fieldListMap()["CUESHEET"].toString().toCString(TRUE));
CUEParser parser(xiph_comment->fieldListMap()["CUESHEET"].toString().toCString(TRUE), fileName);
list = parser.createPlayList();
delete info;
diff --git a/src/plugins/Input/flac/decoderflacfactory.h b/src/plugins/Input/flac/decoderflacfactory.h
index 983355d23..7fd7dcb42 100644
--- a/src/plugins/Input/flac/decoderflacfactory.h
+++ b/src/plugins/Input/flac/decoderflacfactory.h
@@ -40,7 +40,7 @@ public:
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
Decoder *create(QObject *, QIODevice *, Output *, const QString &);
- QList<FileInfo *> createPlayList(const QString &fileName);
+ QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/plugins/Input/mad/decodermadfactory.cpp b/src/plugins/Input/mad/decodermadfactory.cpp
index ef8de8d45..9ede2f1d8 100644
--- a/src/plugins/Input/mad/decodermadfactory.cpp
+++ b/src/plugins/Input/mad/decodermadfactory.cpp
@@ -100,87 +100,90 @@ Decoder *DecoderMADFactory::create(QObject *parent, QIODevice *input, Output *ou
}
//FileInfo *DecoderMADFactory::createFileInfo(const QString &source)
-QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName)
+QList<FileInfo *> DecoderMADFactory::createPlayList(const QString &fileName, bool useMetaData)
{
FileInfo *info = new FileInfo(fileName);
TagLib::Tag *tag = 0;
TagLib::MPEG::File fileRef(fileName.toLocal8Bit ());
- QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
- settings.beginGroup("MAD");
+ if (useMetaData)
+ {
+ QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
+ settings.beginGroup("MAD");
- QTextCodec *codec = 0;
+ QTextCodec *codec = 0;
- uint tag_array[3];
- tag_array[0] = settings.value("tag_1", SettingsDialog::ID3v2).toInt();
- tag_array[1] = settings.value("tag_2", SettingsDialog::Disabled).toInt();
- tag_array[2] = settings.value("tag_3", SettingsDialog::Disabled).toInt();
+ uint tag_array[3];
+ tag_array[0] = settings.value("tag_1", SettingsDialog::ID3v2).toInt();
+ tag_array[1] = settings.value("tag_2", SettingsDialog::Disabled).toInt();
+ tag_array[2] = settings.value("tag_3", SettingsDialog::Disabled).toInt();
- for (int i = 0; i < 3; ++i)
- {
- switch ((uint) tag_array[i])
+ for (int i = 0; i < 3; ++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"))
+ 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");
+ else
+ codec = QTextCodec::codecForName(name);
+ tag = fileRef.ID3v2Tag();
+ break;
+ }
+ case SettingsDialog::APE:
+ {
codec = QTextCodec::codecForName ("UTF-8");
- else
- codec = QTextCodec::codecForName(name);
- tag = fileRef.ID3v2Tag();
- break;
+ tag = fileRef.APETag();
+ break;
+ }
+ case SettingsDialog::Disabled:
+ {
+ break;
+ }
+ }
+ if (tag && !tag->isEmpty())
+ break;
}
- case SettingsDialog::APE:
- {
+ settings.endGroup();
+
+ if (!codec)
codec = QTextCodec::codecForName ("UTF-8");
- tag = fileRef.APETag();
- break;
- }
- case SettingsDialog::Disabled:
+
+ if (tag && codec)
{
- break;
+ bool utf = codec->name ().contains("UTF");
+ TagLib::String album = tag->album();
+ TagLib::String artist = tag->artist();
+ TagLib::String comment = tag->comment();
+ TagLib::String genre = tag->genre();
+ TagLib::String title = tag->title();
+
+ info->setMetaData(Qmmp::ALBUM,
+ codec->toUnicode(album.toCString(utf)).trimmed());
+ info->setMetaData(Qmmp::ARTIST,
+ codec->toUnicode(artist.toCString(utf)).trimmed());
+ info->setMetaData(Qmmp::COMMENT,
+ codec->toUnicode(comment.toCString(utf)).trimmed());
+ info->setMetaData(Qmmp::GENRE,
+ codec->toUnicode(genre.toCString(utf)).trimmed());
+ info->setMetaData(Qmmp::TITLE,
+ codec->toUnicode(title.toCString(utf)).trimmed());
+ info->setMetaData(Qmmp::YEAR,
+ tag->year());
+ info->setMetaData(Qmmp::TRACK,
+ tag->track());
}
- }
- if (tag && !tag->isEmpty())
- break;
- }
- settings.endGroup();
-
- if (!codec)
- codec = QTextCodec::codecForName ("UTF-8");
-
- if (tag && codec)
- {
- bool utf = codec->name ().contains("UTF");
- TagLib::String album = tag->album();
- TagLib::String artist = tag->artist();
- TagLib::String comment = tag->comment();
- TagLib::String genre = tag->genre();
- TagLib::String title = tag->title();
-
- info->setMetaData(Qmmp::ALBUM,
- codec->toUnicode(album.toCString(utf)).trimmed());
- info->setMetaData(Qmmp::ARTIST,
- codec->toUnicode(artist.toCString(utf)).trimmed());
- info->setMetaData(Qmmp::COMMENT,
- codec->toUnicode(comment.toCString(utf)).trimmed());
- info->setMetaData(Qmmp::GENRE,
- codec->toUnicode(genre.toCString(utf)).trimmed());
- info->setMetaData(Qmmp::TITLE,
- codec->toUnicode(title.toCString(utf)).trimmed());
- info->setMetaData(Qmmp::YEAR,
- tag->year());
- info->setMetaData(Qmmp::TRACK,
- tag->track());
}
if (fileRef.audioProperties())
info->setLength(fileRef.audioProperties()->length());
diff --git a/src/plugins/Input/mad/decodermadfactory.h b/src/plugins/Input/mad/decodermadfactory.h
index a4d4d57ad..c749cd86d 100644
--- a/src/plugins/Input/mad/decodermadfactory.h
+++ b/src/plugins/Input/mad/decodermadfactory.h
@@ -44,7 +44,7 @@ public:
const DecoderProperties properties() const;
Decoder *create(QObject *, QIODevice *, Output *, const QString &);
//FileInfo *createFileInfo(const QString &source);
- QList<FileInfo *> createPlayList(const QString &fileName);
+ QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/plugins/Input/modplug/decodermodplugfactory.cpp b/src/plugins/Input/modplug/decodermodplugfactory.cpp
index 9e13c0b74..a0cd1bd7a 100644
--- a/src/plugins/Input/modplug/decodermodplugfactory.cpp
+++ b/src/plugins/Input/modplug/decodermodplugfactory.cpp
@@ -77,11 +77,11 @@ Decoder *DecoderModPlugFactory::create(QObject *parent, QIODevice *input,
return new DecoderModPlug(parent, this, output, path);
}
-QList<FileInfo *> DecoderModPlugFactory::createPlayList(const QString &fileName)
+QList<FileInfo *> DecoderModPlugFactory::createPlayList(const QString &fileName, bool useMetaData)
{
QList <FileInfo*> list;
QSettings settings(QDir::homePath()+"/.qmmp/qmmprc", QSettings::IniFormat);
- if (settings.value("UseFileName", FALSE).toBool())
+ if (!useMetaData || settings.value("UseFileName", FALSE).toBool())
{
list << new FileInfo(fileName);
list.at(0)->setMetaData(Qmmp::TITLE, fileName.section('/',-1));
diff --git a/src/plugins/Input/modplug/decodermodplugfactory.h b/src/plugins/Input/modplug/decodermodplugfactory.h
index 8581e0d99..333ff1a56 100644
--- a/src/plugins/Input/modplug/decodermodplugfactory.h
+++ b/src/plugins/Input/modplug/decodermodplugfactory.h
@@ -42,7 +42,7 @@ public:
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
Decoder *create(QObject *, QIODevice *, Output *, const QString &);
- QList<FileInfo *> createPlayList(const QString &fileName);
+ QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/plugins/Input/mpc/decodermpcfactory.cpp b/src/plugins/Input/mpc/decodermpcfactory.cpp
index 9b6368efe..a62f3a096 100644
--- a/src/plugins/Input/mpc/decodermpcfactory.cpp
+++ b/src/plugins/Input/mpc/decodermpcfactory.cpp
@@ -58,12 +58,12 @@ Decoder *DecoderMPCFactory::create(QObject *parent, QIODevice *input,
return new DecoderMPC(parent, this, input, output);
}
-QList<FileInfo *> DecoderMPCFactory::createPlayList(const QString &fileName)
+QList<FileInfo *> DecoderMPCFactory::createPlayList(const QString &fileName, bool useMetaData)
{
FileInfo *info = new FileInfo(fileName);
TagLib::FileRef fileRef(fileName.toLocal8Bit ());
- TagLib::Tag *tag = fileRef.tag();
+ TagLib::Tag *tag = useMetaData ? fileRef.tag() : 0;
if (tag && !tag->isEmpty())
{
info->setMetaData(Qmmp::ALBUM,
diff --git a/src/plugins/Input/mpc/decodermpcfactory.h b/src/plugins/Input/mpc/decodermpcfactory.h
index 740a5f362..76ca2b0f4 100644
--- a/src/plugins/Input/mpc/decodermpcfactory.h
+++ b/src/plugins/Input/mpc/decodermpcfactory.h
@@ -44,7 +44,7 @@ public:
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
Decoder *create(QObject *, QIODevice *, Output *, const QString &);
- QList<FileInfo *> createPlayList(const QString &fileName);
+ QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/plugins/Input/sndfile/decodersndfilefactory.cpp b/src/plugins/Input/sndfile/decodersndfilefactory.cpp
index 1828b8292..38278f8dc 100644
--- a/src/plugins/Input/sndfile/decodersndfilefactory.cpp
+++ b/src/plugins/Input/sndfile/decodersndfilefactory.cpp
@@ -18,7 +18,8 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
***************************************************************************/
#include <QtGui>
-extern "C"{
+extern "C"
+{
#include <sndfile.h>
}
@@ -32,20 +33,20 @@ bool DecoderSndFileFactory::supports(const QString &source) const
{
if ((source.right(3).toLower() == ".au") ||
- (source.right(4).toLower() == ".snd") ||
- (source.right(4).toLower() == ".aif") ||
- (source.right(5).toLower() == ".aiff") ||
- (source.right(5).toLower() == ".8svx") ||
- (source.right(4).toLower() == ".sph") ||
- (source.right(3).toLower() == ".sf") ||
- (source.right(4).toLower() == ".voc"))
+ (source.right(4).toLower() == ".snd") ||
+ (source.right(4).toLower() == ".aif") ||
+ (source.right(5).toLower() == ".aiff") ||
+ (source.right(5).toLower() == ".8svx") ||
+ (source.right(4).toLower() == ".sph") ||
+ (source.right(3).toLower() == ".sf") ||
+ (source.right(4).toLower() == ".voc"))
return TRUE;
else if (source.right(4).toLower() == ".wav")
{
//try top open the file
SF_INFO snd_info;
SNDFILE *sndfile = sf_open(source.toLocal8Bit(), SFM_READ, &snd_info);
- if(!sndfile)
+ if (!sndfile)
return FALSE;
sf_close (sndfile);
sndfile = 0;
@@ -80,7 +81,7 @@ Decoder *DecoderSndFileFactory::create(QObject *parent, QIODevice *input,
return new DecoderSndFile(parent, this, output, path);
}
-QList<FileInfo *> DecoderSndFileFactory::createPlayList(const QString &fileName)
+QList<FileInfo *> DecoderSndFileFactory::createPlayList(const QString &fileName, bool useMetaData)
{
QList <FileInfo *> list;
SF_INFO snd_info;
@@ -92,20 +93,23 @@ QList<FileInfo *> DecoderSndFileFactory::createPlayList(const QString &fileName)
return list;
list << new FileInfo(fileName);
- if (sf_get_string(sndfile, SF_STR_TITLE))
- {
- char* title = strdup(sf_get_string(sndfile, SF_STR_TITLE));
- list.at(0)->setMetaData(Qmmp::TITLE, QString::fromUtf8(title).trimmed());
- }
- if (sf_get_string(sndfile, SF_STR_ARTIST))
- {
- char* artist = strdup(sf_get_string(sndfile, SF_STR_ARTIST));
- list.at(0)->setMetaData(Qmmp::ARTIST, QString::fromUtf8(artist).trimmed());
- }
- if (sf_get_string(sndfile, SF_STR_COMMENT))
+ if (useMetaData)
{
- char* comment = strdup(sf_get_string(sndfile, SF_STR_COMMENT));
- list.at(0)->setMetaData(Qmmp::COMMENT, QString::fromUtf8(comment).trimmed());
+ if (sf_get_string(sndfile, SF_STR_TITLE))
+ {
+ char* title = strdup(sf_get_string(sndfile, SF_STR_TITLE));
+ list.at(0)->setMetaData(Qmmp::TITLE, QString::fromUtf8(title).trimmed());
+ }
+ if (sf_get_string(sndfile, SF_STR_ARTIST))
+ {
+ char* artist = strdup(sf_get_string(sndfile, SF_STR_ARTIST));
+ list.at(0)->setMetaData(Qmmp::ARTIST, QString::fromUtf8(artist).trimmed());
+ }
+ if (sf_get_string(sndfile, SF_STR_COMMENT))
+ {
+ char* comment = strdup(sf_get_string(sndfile, SF_STR_COMMENT));
+ list.at(0)->setMetaData(Qmmp::COMMENT, QString::fromUtf8(comment).trimmed());
+ }
}
list.at(0)->setLength(int(snd_info.frames / snd_info.samplerate));
diff --git a/src/plugins/Input/sndfile/decodersndfilefactory.h b/src/plugins/Input/sndfile/decodersndfilefactory.h
index aab996d98..0a5b160e5 100644
--- a/src/plugins/Input/sndfile/decodersndfilefactory.h
+++ b/src/plugins/Input/sndfile/decodersndfilefactory.h
@@ -44,7 +44,7 @@ public:
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
Decoder *create(QObject *, QIODevice *, Output *, const QString &path);
- QList<FileInfo *> createPlayList(const QString &fileName);
+ QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/plugins/Input/vorbis/decodervorbisfactory.cpp b/src/plugins/Input/vorbis/decodervorbisfactory.cpp
index deca4f510..c19bd4882 100644
--- a/src/plugins/Input/vorbis/decodervorbisfactory.cpp
+++ b/src/plugins/Input/vorbis/decodervorbisfactory.cpp
@@ -64,12 +64,12 @@ Decoder *DecoderVorbisFactory::create(QObject *parent, QIODevice *input,
}
//FileInfo *DecoderVorbisFactory::createFileInfo(const QString &source)
-QList<FileInfo *> DecoderVorbisFactory::createPlayList(const QString &fileName)
+QList<FileInfo *> DecoderVorbisFactory::createPlayList(const QString &fileName, bool useMetaData)
{
FileInfo *info = new FileInfo(fileName);
TagLib::FileRef fileRef(fileName.toLocal8Bit ());
- TagLib::Tag *tag = fileRef.tag();
+ TagLib::Tag *tag = useMetaData ? fileRef.tag() : 0;
if (tag && !tag->isEmpty())
{
diff --git a/src/plugins/Input/vorbis/decodervorbisfactory.h b/src/plugins/Input/vorbis/decodervorbisfactory.h
index 05c1d0ea6..5a80c26d8 100644
--- a/src/plugins/Input/vorbis/decodervorbisfactory.h
+++ b/src/plugins/Input/vorbis/decodervorbisfactory.h
@@ -45,7 +45,7 @@ public:
const DecoderProperties properties() const;
Decoder *create(QObject *, QIODevice *, Output *, const QString &);
//FileInfo *createFileInfo(const QString &source);
- QList<FileInfo *> createPlayList(const QString &fileName);
+ QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/plugins/Input/wavpack/decoderwavpackfactory.cpp b/src/plugins/Input/wavpack/decoderwavpackfactory.cpp
index 114cd5366..14138be1e 100644
--- a/src/plugins/Input/wavpack/decoderwavpackfactory.cpp
+++ b/src/plugins/Input/wavpack/decoderwavpackfactory.cpp
@@ -20,7 +20,8 @@
#include <QtGui>
-extern "C"{
+extern "C"
+{
#include <wavpack/wavpack.h>
}
@@ -57,39 +58,42 @@ const DecoderProperties DecoderWavPackFactory::properties() const
}
Decoder *DecoderWavPackFactory::create(QObject *parent, QIODevice *input,
- Output *output, const QString &path)
+ Output *output, const QString &path)
{
Q_UNUSED(input);
return new DecoderWavPack(parent, this, output, path);
}
-QList<FileInfo *> DecoderWavPackFactory::createPlayList(const QString &fileName)
+QList<FileInfo *> DecoderWavPackFactory::createPlayList(const QString &fileName, bool useMetaData)
{
QList <FileInfo*> list;
char err[80];
WavpackContext *ctx = WavpackOpenFileInput (fileName.toLocal8Bit(), err,
- OPEN_WVC | OPEN_TAGS, 0);
- if(!ctx)
+ OPEN_WVC | OPEN_TAGS, 0);
+ if (!ctx)
{
qWarning("DecoderWavPackFactory: error: %s", err);
return list;
}
FileInfo *info = new FileInfo(fileName);
- char value[200];
- WavpackGetTagItem (ctx, "Album", value, sizeof(value));
- info->setMetaData(Qmmp::ALBUM, QString::fromUtf8(value));
- WavpackGetTagItem (ctx, "Artist", value, sizeof(value));
- info->setMetaData(Qmmp::ARTIST, QString::fromUtf8(value));
- WavpackGetTagItem (ctx, "Comment", value, sizeof(value));
- info->setMetaData(Qmmp::COMMENT, QString::fromUtf8(value));
- WavpackGetTagItem (ctx, "Genre", value, sizeof(value));
- info->setMetaData(Qmmp::GENRE, QString::fromUtf8(value));
- WavpackGetTagItem (ctx, "Title", value, sizeof(value));
- info->setMetaData(Qmmp::TITLE, QString::fromUtf8(value));
- WavpackGetTagItem (ctx, "Year", value, sizeof(value));
- info->setMetaData(Qmmp::YEAR, QString::fromUtf8(value).toInt());
- WavpackGetTagItem (ctx, "Track", value, sizeof(value));
- info->setMetaData(Qmmp::TRACK, QString::fromUtf8(value).toInt());
+ if (useMetaData)
+ {
+ char value[200];
+ WavpackGetTagItem (ctx, "Album", value, sizeof(value));
+ info->setMetaData(Qmmp::ALBUM, QString::fromUtf8(value));
+ WavpackGetTagItem (ctx, "Artist", value, sizeof(value));
+ info->setMetaData(Qmmp::ARTIST, QString::fromUtf8(value));
+ WavpackGetTagItem (ctx, "Comment", value, sizeof(value));
+ info->setMetaData(Qmmp::COMMENT, QString::fromUtf8(value));
+ WavpackGetTagItem (ctx, "Genre", value, sizeof(value));
+ info->setMetaData(Qmmp::GENRE, QString::fromUtf8(value));
+ WavpackGetTagItem (ctx, "Title", value, sizeof(value));
+ info->setMetaData(Qmmp::TITLE, QString::fromUtf8(value));
+ WavpackGetTagItem (ctx, "Year", value, sizeof(value));
+ info->setMetaData(Qmmp::YEAR, QString::fromUtf8(value).toInt());
+ WavpackGetTagItem (ctx, "Track", value, sizeof(value));
+ info->setMetaData(Qmmp::TRACK, QString::fromUtf8(value).toInt());
+ }
info->setLength((int) WavpackGetNumSamples(ctx)/WavpackGetSampleRate(ctx));
WavpackCloseFile (ctx);
list << info;
diff --git a/src/plugins/Input/wavpack/decoderwavpackfactory.h b/src/plugins/Input/wavpack/decoderwavpackfactory.h
index 1213dd92a..212a240d2 100644
--- a/src/plugins/Input/wavpack/decoderwavpackfactory.h
+++ b/src/plugins/Input/wavpack/decoderwavpackfactory.h
@@ -42,7 +42,7 @@ public:
bool canDecode(QIODevice *input) const;
const DecoderProperties properties() const;
Decoder *create(QObject *, QIODevice *, Output *, const QString &);
- QList<FileInfo *> createPlayList(const QString &fileName);
+ QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
void showAbout(QWidget *parent);
diff --git a/src/qmmp/decoder.cpp b/src/qmmp/decoder.cpp
index 02f07211f..13cbd51a2 100644
--- a/src/qmmp/decoder.cpp
+++ b/src/qmmp/decoder.cpp
@@ -411,14 +411,14 @@ bool Decoder::isEnabled(DecoderFactory* factory)
return 0;
}*/
-QList <FileInfo *> Decoder::createPlayList(const QString &fileName)
+QList <FileInfo *> Decoder::createPlayList(const QString &fileName, bool useMetaData)
{
QList <FileInfo *> list;
if (QFile::exists(fileName)) //is it file?
{
DecoderFactory *fact = Decoder::findByPath(fileName);
if (fact)
- list << fact->createPlayList(fileName);
+ list << fact->createPlayList(fileName, useMetaData);
}
else
//TODO do this according supported protocols
diff --git a/src/qmmp/decoder.h b/src/qmmp/decoder.h
index 1e4d56481..4a4a9ab98 100644
--- a/src/qmmp/decoder.h
+++ b/src/qmmp/decoder.h
@@ -67,7 +67,7 @@ public:
static DecoderFactory *findByContent(QIODevice *);
static DecoderFactory *findByURL(const QUrl &url);
//static FileInfo *createFileInfo(const QString &fileName);
- static QList <FileInfo *> createPlayList(const QString &fileName);
+ static QList <FileInfo *> createPlayList(const QString &fileName, bool useMetaData = TRUE);
//static QList <FileInfo *> createPlayList(const QStringList &fileList);
static QStringList filters();
static QStringList nameFilters();
diff --git a/src/qmmp/decoderfactory.h b/src/qmmp/decoderfactory.h
index 80b2008ee..b36b48815 100644
--- a/src/qmmp/decoderfactory.h
+++ b/src/qmmp/decoderfactory.h
@@ -65,7 +65,7 @@ public:
virtual Decoder *create(QObject *, QIODevice *input = 0,
Output *output = 0, const QString &path = QString()) = 0;
//virtual FileInfo *createFileInfo(const QString &source) = 0;
- virtual QList<FileInfo *> createPlayList(const QString &fileName) = 0;
+ virtual QList<FileInfo *> createPlayList(const QString &fileName, bool useMetaData) = 0;
virtual QObject* showDetails(QWidget *parent, const QString &path) = 0;
virtual void showSettings(QWidget *parent) = 0;
virtual void showAbout(QWidget *parent) = 0;
diff --git a/src/qmmp/soundcore.cpp b/src/qmmp/soundcore.cpp
index bd8275b32..2474092c0 100644
--- a/src/qmmp/soundcore.cpp
+++ b/src/qmmp/soundcore.cpp
@@ -401,7 +401,7 @@ bool SoundCore::decode()
{
if (QFile::exists(m_source)) //send metadata for local files
{
- QList <FileInfo *> list = m_factory->createPlayList(m_source);
+ QList <FileInfo *> list = m_factory->createPlayList(m_source, TRUE);
if (!list.isEmpty())
{
m_handler->dispatch(list[0]->metaData());