aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-06-08 20:59:57 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-06-08 20:59:57 +0000
commitce79cbc21b6559f54d11da95fef7364616c3d872 (patch)
treefabf04494ba44e2b08a7d74842064727858a4d03 /src
parentc8488b0a00f62504667eb9d3a6f4074e1f424980 (diff)
downloadqmmp-ce79cbc21b6559f54d11da95fef7364616c3d872.tar.gz
qmmp-ce79cbc21b6559f54d11da95fef7364616c3d872.tar.bz2
qmmp-ce79cbc21b6559f54d11da95fef7364616c3d872.zip
optimization
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@8007 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src')
-rw-r--r--src/plugins/Input/aac/aacfile.cpp25
-rw-r--r--src/plugins/Input/aac/decoderaacfactory.cpp40
-rw-r--r--src/plugins/Input/cue/cuemetadatamodel.cpp2
-rw-r--r--src/plugins/Input/cue/cueparser.cpp9
-rw-r--r--src/plugins/Input/cue/cueparser.h4
-rw-r--r--src/plugins/Input/cue/decoder_cue.cpp2
-rw-r--r--src/plugins/Input/cue/decodercuefactory.cpp3
-rw-r--r--src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp17
-rw-r--r--src/plugins/Input/opus/decoderopusfactory.cpp12
9 files changed, 59 insertions, 55 deletions
diff --git a/src/plugins/Input/aac/aacfile.cpp b/src/plugins/Input/aac/aacfile.cpp
index ad0eef4d2..8e138b41c 100644
--- a/src/plugins/Input/aac/aacfile.cpp
+++ b/src/plugins/Input/aac/aacfile.cpp
@@ -20,7 +20,6 @@
#include <QIODevice>
#include <QBuffer>
-#include <QTextCodec>
#include <taglib/id3v2tag.h>
#include <neaacdec.h>
@@ -247,23 +246,13 @@ void AACFile::parseID3v2(const QByteArray &data)
TagLib::String genre = taglib_tag.genre();
TagLib::String title = taglib_tag.title();
- QTextCodec *codec = QTextCodec::codecForName ("UTF-8");
- bool utf = true;
-
- m_metaData.insert(Qmmp::ALBUM,
- codec->toUnicode(album.toCString(utf)).trimmed());
- m_metaData.insert(Qmmp::ARTIST,
- codec->toUnicode(artist.toCString(utf)).trimmed());
- m_metaData.insert(Qmmp::COMMENT,
- codec->toUnicode(comment.toCString(utf)).trimmed());
- m_metaData.insert(Qmmp::GENRE,
- codec->toUnicode(genre.toCString(utf)).trimmed());
- m_metaData.insert(Qmmp::TITLE,
- codec->toUnicode(title.toCString(utf)).trimmed());
- m_metaData.insert(Qmmp::YEAR,
- QString::number(taglib_tag.year()));
- m_metaData.insert(Qmmp::TRACK,
- QString::number(taglib_tag.track()));
+ m_metaData.insert(Qmmp::ALBUM, TStringToQString(album).trimmed());
+ m_metaData.insert(Qmmp::ARTIST, TStringToQString(artist).trimmed());
+ m_metaData.insert(Qmmp::COMMENT, TStringToQString(comment).trimmed());
+ m_metaData.insert(Qmmp::GENRE, TStringToQString(genre).trimmed());
+ m_metaData.insert(Qmmp::TITLE, TStringToQString(title).trimmed());
+ m_metaData.insert(Qmmp::YEAR, QString::number(taglib_tag.year()));
+ m_metaData.insert(Qmmp::TRACK, QString::number(taglib_tag.track()));
}
ID3v2Tag::ID3v2Tag(const QByteArray &array) : TagLib::ID3v2::Tag()
diff --git a/src/plugins/Input/aac/decoderaacfactory.cpp b/src/plugins/Input/aac/decoderaacfactory.cpp
index 5f53437de..e641db1c7 100644
--- a/src/plugins/Input/aac/decoderaacfactory.cpp
+++ b/src/plugins/Input/aac/decoderaacfactory.cpp
@@ -55,27 +55,39 @@ Decoder *DecoderAACFactory::create(const QString &, QIODevice *input)
QList<TrackInfo *> DecoderAACFactory::createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *)
{
+ TrackInfo *info = new TrackInfo(path);
+
+ if(parts == TrackInfo::NoParts)
+ return QList<TrackInfo*>() << info;
+
QFile file(path);
- if (file.open(QIODevice::ReadOnly))
+ if(!file.open(QIODevice::ReadOnly))
{
- TrackInfo *info = new TrackInfo(path);
- AACFile aac_file(&file, parts);
+ delete info;
+ return QList<TrackInfo*>() << info;
+ }
- if(parts & TrackInfo::MetaData)
- info->setValues(aac_file.metaData());
+ AACFile aac_file(&file, parts & TrackInfo::MetaData);
- if(parts & TrackInfo::Properties)
- {
- info->setValue(Qmmp::BITRATE, aac_file.bitrate());
- info->setValue(Qmmp::SAMPLERATE, aac_file.samplerate());
- //info->setValue(Qmmp::CHANNELS, aac_file.
- info->setValue(Qmmp::FORMAT_NAME, "AAC");
- }
+ if(!aac_file.isValid())
+ {
+ delete info;
+ return QList<TrackInfo *>();
+ }
+
+ if(parts & TrackInfo::MetaData)
+ info->setValues(aac_file.metaData());
+ if(parts & TrackInfo::Properties)
+ {
+ info->setValue(Qmmp::BITRATE, aac_file.bitrate());
+ info->setValue(Qmmp::SAMPLERATE, aac_file.samplerate());
+ //info->setValue(Qmmp::CHANNELS, aac_file.
+ info->setValue(Qmmp::FORMAT_NAME, "AAC");
info->setDuration(aac_file.duration());
- return QList<TrackInfo*>() << info;
}
- return QList<TrackInfo *>();
+
+ return QList<TrackInfo*>() << info;
}
MetaDataModel* DecoderAACFactory::createMetaDataModel(const QString &path, QObject *parent)
diff --git a/src/plugins/Input/cue/cuemetadatamodel.cpp b/src/plugins/Input/cue/cuemetadatamodel.cpp
index 4043a955c..d875ad993 100644
--- a/src/plugins/Input/cue/cuemetadatamodel.cpp
+++ b/src/plugins/Input/cue/cuemetadatamodel.cpp
@@ -24,7 +24,7 @@
CUEMetaDataModel::CUEMetaDataModel(const QString &url, QObject *parent) : MetaDataModel(parent)
{
- m_parser = new CUEParser(url, TrackInfo::AllParts);
+ m_parser = new CUEParser(url);
if (m_parser->count() == 0)
{
qWarning("CUEMetaDataModel: invalid cue file");
diff --git a/src/plugins/Input/cue/cueparser.cpp b/src/plugins/Input/cue/cueparser.cpp
index b3b393c87..350d6f76e 100644
--- a/src/plugins/Input/cue/cueparser.cpp
+++ b/src/plugins/Input/cue/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 *
@@ -31,7 +31,7 @@
#endif
#include "cueparser.h"
-CUEParser::CUEParser(const QString &path, TrackInfo::Parts parts)
+CUEParser::CUEParser(const QString &path)
{
QString fileName = path;
if(path.contains("://"))
@@ -179,13 +179,12 @@ CUEParser::CUEParser(const QString &path, TrackInfo::Parts parts)
if(i == 0 || m_tracks[i - 1]->file != m_tracks[i]->file)
{
qDeleteAll(f_list);
- f_list = MetaDataManager::instance()->createPlayList(m_tracks[i]->file, (parts & TrackInfo::Properties)
- ? TrackInfo::NoParts : TrackInfo::Properties);
+ f_list = MetaDataManager::instance()->createPlayList(m_tracks[i]->file, TrackInfo::Properties);
}
if(!f_list.isEmpty())
m_tracks[i]->info.setValues(f_list.first()->properties());
- if((i < m_tracks.count() - 1) && ( m_tracks[i]->file == m_tracks[i+1]->file))
+ if((i < m_tracks.count() - 1) && (m_tracks[i]->file == m_tracks[i+1]->file))
m_tracks[i]->info.setDuration(m_tracks[i+1]->offset - m_tracks[i]->offset);
else if(!f_list.isEmpty())
m_tracks[i]->info.setDuration(qMax(0LL, f_list.first()->duration() - m_tracks[i]->offset));
diff --git a/src/plugins/Input/cue/cueparser.h b/src/plugins/Input/cue/cueparser.h
index 88d9b452b..5c0d24c8a 100644
--- a/src/plugins/Input/cue/cueparser.h
+++ b/src/plugins/Input/cue/cueparser.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2008-2015 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 *
@@ -34,7 +34,7 @@
class CUEParser
{
public:
- CUEParser(const QString &path, TrackInfo::Parts parts);
+ CUEParser(const QString &path);
~CUEParser();
diff --git a/src/plugins/Input/cue/decoder_cue.cpp b/src/plugins/Input/cue/decoder_cue.cpp
index 2ba4626e5..e21dfdca5 100644
--- a/src/plugins/Input/cue/decoder_cue.cpp
+++ b/src/plugins/Input/cue/decoder_cue.cpp
@@ -58,7 +58,7 @@ DecoderCUE::~DecoderCUE()
bool DecoderCUE::initialize()
{
- m_parser = new CUEParser(m_path, TrackInfo::MetaData);
+ m_parser = new CUEParser(m_path);
if (m_parser->count() == 0)
{
qWarning("DecoderCUE: invalid cue file");
diff --git a/src/plugins/Input/cue/decodercuefactory.cpp b/src/plugins/Input/cue/decodercuefactory.cpp
index 1997e24c4..e9e63c02b 100644
--- a/src/plugins/Input/cue/decodercuefactory.cpp
+++ b/src/plugins/Input/cue/decodercuefactory.cpp
@@ -55,7 +55,8 @@ Decoder *DecoderCUEFactory::create(const QString &path, QIODevice *input)
QList<TrackInfo *> DecoderCUEFactory::createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *ignoredPaths)
{
- CUEParser parser(path, parts);
+ Q_UNUSED(parts);
+ CUEParser parser(path);
if(path.contains("://"))
{
QList<TrackInfo *> list;
diff --git a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
index c1ea7c370..944ac98ec 100644
--- a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
+++ b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp
@@ -156,7 +156,11 @@ Decoder *DecoderFFmpegFactory::create(const QString &path, QIODevice *input)
QList<TrackInfo *> DecoderFFmpegFactory::createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *)
{
- QList <TrackInfo*> list;
+ TrackInfo *info = new TrackInfo(path);
+
+ if(parts == TrackInfo::NoParts)
+ return QList<TrackInfo*>() << info;
+
AVFormatContext *in = 0;
#ifdef Q_OS_WIN
@@ -166,9 +170,10 @@ QList<TrackInfo *> DecoderFFmpegFactory::createPlayList(const QString &path, Tra
#endif
{
qDebug("DecoderFFmpegFactory: unable to open file");
- return list;
+ delete info;
+ return QList<TrackInfo*>();
}
- TrackInfo *info = new TrackInfo(path);
+
avformat_find_stream_info(in, 0);
if(parts & TrackInfo::MetaData)
@@ -225,14 +230,12 @@ QList<TrackInfo *> DecoderFFmpegFactory::createPlayList(const QString &path, Tra
info->setValue(Qmmp::BITS_PER_SAMPLE, c->bits_per_raw_sample);
//info->setValue(Qmmp::FORMAT_NAME, QString::fromLatin1(avcodec_get_name(c->codec_id)));
-
+ info->setDuration(in->duration * 1000 / AV_TIME_BASE);
}
}
- info->setDuration(in->duration * 1000 / AV_TIME_BASE);
avformat_close_input(&in);
- list << info;
- return list;
+ return QList<TrackInfo*>() << info;
}
MetaDataModel* DecoderFFmpegFactory::createMetaDataModel(const QString &path, QObject *parent)
diff --git a/src/plugins/Input/opus/decoderopusfactory.cpp b/src/plugins/Input/opus/decoderopusfactory.cpp
index 859175beb..d24d57a79 100644
--- a/src/plugins/Input/opus/decoderopusfactory.cpp
+++ b/src/plugins/Input/opus/decoderopusfactory.cpp
@@ -65,11 +65,10 @@ QList<TrackInfo *> DecoderOpusFactory::createPlayList(const QString &path, Track
{
TrackInfo *info = new TrackInfo(path);
- TagLib::Ogg::Opus::File fileRef(QStringToFileName(path));
-
+ if(parts == TrackInfo::NoParts)
+ return QList<TrackInfo*>() << info;
- if(fileRef.audioProperties())
- info->setDuration(fileRef.audioProperties()->lengthInMilliseconds());
+ TagLib::Ogg::Opus::File fileRef(QStringToFileName(path));
if((parts & TrackInfo::MetaData) && fileRef.tag() && !fileRef.tag()->isEmpty())
{
@@ -88,8 +87,9 @@ QList<TrackInfo *> DecoderOpusFactory::createPlayList(const QString &path, Track
info->setValue(Qmmp::BITRATE, fileRef.audioProperties()->bitrate());
info->setValue(Qmmp::SAMPLERATE, fileRef.audioProperties()->sampleRate());
info->setValue(Qmmp::CHANNELS, fileRef.audioProperties()->channels());
- info->setValue(Qmmp::BITS_PER_SAMPLE, 16);
- info->setValue(Qmmp::FORMAT_NAME, "Ogg Vorbis");
+ info->setValue(Qmmp::BITS_PER_SAMPLE, 32); //float
+ info->setValue(Qmmp::FORMAT_NAME, "Ogg Opus");
+ info->setDuration(fileRef.audioProperties()->lengthInMilliseconds());
}
if((parts & TrackInfo::ReplayGainInfo) && fileRef.tag() && !fileRef.tag()->isEmpty())