diff options
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/Input/aac/aacfile.cpp | 25 | ||||
| -rw-r--r-- | src/plugins/Input/aac/decoderaacfactory.cpp | 40 | ||||
| -rw-r--r-- | src/plugins/Input/cue/cuemetadatamodel.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/Input/cue/cueparser.cpp | 9 | ||||
| -rw-r--r-- | src/plugins/Input/cue/cueparser.h | 4 | ||||
| -rw-r--r-- | src/plugins/Input/cue/decoder_cue.cpp | 2 | ||||
| -rw-r--r-- | src/plugins/Input/cue/decodercuefactory.cpp | 3 | ||||
| -rw-r--r-- | src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp | 17 | ||||
| -rw-r--r-- | src/plugins/Input/opus/decoderopusfactory.cpp | 12 |
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()) |
