diff options
Diffstat (limited to 'src/plugins/Input/aac')
| -rw-r--r-- | src/plugins/Input/aac/aacfile.cpp | 24 | ||||
| -rw-r--r-- | src/plugins/Input/aac/aacfile.h | 16 | ||||
| -rw-r--r-- | src/plugins/Input/aac/aacmetadatamodel.cpp | 6 | ||||
| -rw-r--r-- | src/plugins/Input/aac/aacmetadatamodel.h | 2 | ||||
| -rw-r--r-- | src/plugins/Input/aac/decoder_aac.cpp | 4 | ||||
| -rw-r--r-- | src/plugins/Input/aac/decoder_aac.h | 2 | ||||
| -rw-r--r-- | src/plugins/Input/aac/decoderaacfactory.cpp | 32 | ||||
| -rw-r--r-- | src/plugins/Input/aac/decoderaacfactory.h | 15 |
8 files changed, 50 insertions, 51 deletions
diff --git a/src/plugins/Input/aac/aacfile.cpp b/src/plugins/Input/aac/aacfile.cpp index 48f659890..ad0eef4d2 100644 --- a/src/plugins/Input/aac/aacfile.cpp +++ b/src/plugins/Input/aac/aacfile.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 * @@ -34,7 +34,7 @@ static int adts_sample_rates[] = {96000,88200,64000,48000,44100,32000,24000,2205 AACFile::AACFile(QIODevice *input, bool metaData, bool adts) { m_isValid = false; - m_length = 0; + m_duration = 0; m_bitrate = 0; m_samplerate = 0; m_input = input; @@ -121,9 +121,9 @@ AACFile::AACFile(QIODevice *input, bool metaData, bool adts) (buf[7 + skip_size] & 0xE0); if (!input->isSequential ()) - m_length = (qint64) (((float)input->size()*8.f)/((float)m_bitrate) + 0.5f); + m_duration = (qint64) (((float)input->size()*8000.f)/((float)m_bitrate) + 0.5f); else - m_length = 0; + m_duration = 0; m_bitrate = (int)((float)m_bitrate/1000.0f + 0.5f); m_isValid = true; } @@ -132,17 +132,17 @@ AACFile::AACFile(QIODevice *input, bool metaData, bool adts) AACFile::~AACFile() {} -qint64 AACFile::length() +qint64 AACFile::duration() const { - return m_length; + return m_duration; } -quint32 AACFile::bitrate() +quint32 AACFile::bitrate() const { return m_bitrate; } -quint32 AACFile::samplerate() +quint32 AACFile::samplerate() const { return m_samplerate; } @@ -152,12 +152,12 @@ int AACFile::offset() const return m_offset; } -bool AACFile::isValid() +bool AACFile::isValid() const { return m_isValid; } -const QMap<Qmmp::MetaData, QString> AACFile::metaData() +const QMap<Qmmp::MetaData, QString> &AACFile::metaData() { return m_metaData; } @@ -228,9 +228,9 @@ void AACFile::parseADTS() m_bitrate = (quint32)(8. * bytes_per_frame * frames_per_sec + 0.5); if (frames_per_sec != 0) - m_length = frames/frames_per_sec; + m_duration = frames * 1000 / frames_per_sec; else - m_length = 1; + m_duration = 1000; m_input->seek(0); //restore inital position } diff --git a/src/plugins/Input/aac/aacfile.h b/src/plugins/Input/aac/aacfile.h index 101b1f56b..62de0fc54 100644 --- a/src/plugins/Input/aac/aacfile.h +++ b/src/plugins/Input/aac/aacfile.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 * @@ -46,17 +46,17 @@ public: ~AACFile(); - qint64 length(); - quint32 bitrate(); - quint32 samplerate(); + qint64 duration() const; + quint32 bitrate() const; + quint32 samplerate() const; int offset() const; - bool isValid(); - const QMap<Qmmp::MetaData, QString> metaData(); + bool isValid() const; + const QMap<Qmmp::MetaData, QString> &metaData(); private: void parseADTS(); void parseID3v2(const QByteArray &data); - qint64 m_length; + qint64 m_duration; quint32 m_bitrate; int m_offset; QIODevice *m_input; @@ -71,7 +71,7 @@ public: ID3v2Tag(const QByteArray &array); protected: - void read (); + void read(); private: QByteArray m_buf; diff --git a/src/plugins/Input/aac/aacmetadatamodel.cpp b/src/plugins/Input/aac/aacmetadatamodel.cpp index 98b830613..c6adcc2c1 100644 --- a/src/plugins/Input/aac/aacmetadatamodel.cpp +++ b/src/plugins/Input/aac/aacmetadatamodel.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * + * Copyright (C) 2009-2018 by Ilya Kotov * * forkotov02@ya.ru * * * * This program is free software; you can redistribute it and/or modify * @@ -38,8 +38,8 @@ QHash<QString, QString> AACMetaDataModel::audioProperties() return ap; AACFile f(&input); QString text; - text = QString("%1").arg(f.length()/60); - text +=":"+QString("%1").arg(f.length()%60,2,10,QChar('0')); + text = QString("%1").arg(f.duration()/60000); + text +=":"+QString("%1").arg((f.duration()/1000)%60,2,10,QChar('0')); ap.insert(tr("Length"), text); text = QString("%1").arg(f.samplerate()); ap.insert(tr("Sample rate"), text+" "+tr("Hz")); diff --git a/src/plugins/Input/aac/aacmetadatamodel.h b/src/plugins/Input/aac/aacmetadatamodel.h index 5c26791ab..1a07b2dea 100644 --- a/src/plugins/Input/aac/aacmetadatamodel.h +++ b/src/plugins/Input/aac/aacmetadatamodel.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2009 by Ilya Kotov * + * Copyright (C) 2009-2018 by Ilya Kotov * * forkotov02@ya.ru * * * * This program is free software; you can redistribute it and/or modify * diff --git a/src/plugins/Input/aac/decoder_aac.cpp b/src/plugins/Input/aac/decoder_aac.cpp index 1f5f0d7be..bd6708b6e 100644 --- a/src/plugins/Input/aac/decoder_aac.cpp +++ b/src/plugins/Input/aac/decoder_aac.cpp @@ -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 * @@ -90,7 +90,7 @@ bool DecoderAAC::initialize() input()->read(data, aac_file.offset()); } - m_totalTime = aac_file.length() * 1000; + m_totalTime = aac_file.duration(); m_bitrate = aac_file.bitrate(); if (!m_data) diff --git a/src/plugins/Input/aac/decoder_aac.h b/src/plugins/Input/aac/decoder_aac.h index 903d37cb5..da1dee793 100644 --- a/src/plugins/Input/aac/decoder_aac.h +++ b/src/plugins/Input/aac/decoder_aac.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 * diff --git a/src/plugins/Input/aac/decoderaacfactory.cpp b/src/plugins/Input/aac/decoderaacfactory.cpp index 34afec646..5f53437de 100644 --- a/src/plugins/Input/aac/decoderaacfactory.cpp +++ b/src/plugins/Input/aac/decoderaacfactory.cpp @@ -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 * @@ -53,21 +53,29 @@ Decoder *DecoderAACFactory::create(const QString &, QIODevice *input) return new DecoderAAC(input); } -QList<FileInfo *> DecoderAACFactory::createPlayList(const QString &fileName, bool useMetaData, QStringList *) +QList<TrackInfo *> DecoderAACFactory::createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *) { - FileInfo *info = new FileInfo(fileName); - - QFile file(fileName); + QFile file(path); if (file.open(QIODevice::ReadOnly)) { - AACFile aac_file(&file, useMetaData); - if (useMetaData) - info->setMetaData(aac_file.metaData()); - info->setLength(aac_file.length()); + TrackInfo *info = new TrackInfo(path); + AACFile aac_file(&file, parts); + + 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; } - QList <FileInfo*> list; - list << info; - return list; + return QList<TrackInfo *>(); } MetaDataModel* DecoderAACFactory::createMetaDataModel(const QString &path, QObject *parent) diff --git a/src/plugins/Input/aac/decoderaacfactory.h b/src/plugins/Input/aac/decoderaacfactory.h index 54b2a9014..f9a4dae66 100644 --- a/src/plugins/Input/aac/decoderaacfactory.h +++ b/src/plugins/Input/aac/decoderaacfactory.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,18 +20,9 @@ #ifndef DECODERAACFACTORY_H #define DECODERAACFACTORY_H -#include <QObject> -#include <QString> -#include <QIODevice> -#include <QWidget> - -#include <qmmp/decoder.h> -#include <qmmp/output.h> #include <qmmp/decoderfactory.h> -#include <qmmp/fileinfo.h> -class DecoderAACFactory : public QObject, - DecoderFactory +class DecoderAACFactory : public QObject, DecoderFactory { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qmmp.qmmp.DecoderFactoryInterface.1.0") @@ -41,7 +32,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 *); + QList<TrackInfo *> createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *); MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0); void showSettings(QWidget *parent); void showAbout(QWidget *parent); |
