aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/aac
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-05-30 19:08:56 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2018-05-30 19:08:56 +0000
commit9c93c34ea142a0ecb63996312735773ec6212072 (patch)
tree693719943d93a152c3544723d0da92d6d7c07b64 /src/plugins/Input/aac
parent234d9ee71a9ed4ed9af8f9f7d384e7a13333ad96 (diff)
downloadqmmp-9c93c34ea142a0ecb63996312735773ec6212072.tar.gz
qmmp-9c93c34ea142a0ecb63996312735773ec6212072.tar.bz2
qmmp-9c93c34ea142a0ecb63996312735773ec6212072.zip
enabled aac plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7979 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/aac')
-rw-r--r--src/plugins/Input/aac/aacfile.cpp24
-rw-r--r--src/plugins/Input/aac/aacfile.h16
-rw-r--r--src/plugins/Input/aac/aacmetadatamodel.cpp6
-rw-r--r--src/plugins/Input/aac/aacmetadatamodel.h2
-rw-r--r--src/plugins/Input/aac/decoder_aac.cpp4
-rw-r--r--src/plugins/Input/aac/decoder_aac.h2
-rw-r--r--src/plugins/Input/aac/decoderaacfactory.cpp32
-rw-r--r--src/plugins/Input/aac/decoderaacfactory.h15
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);