aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/Input/Input.pro2
-rw-r--r--src/plugins/Input/opus/decoderopusfactory.cpp4
-rw-r--r--src/plugins/Input/opus/decoderopusfactory.h2
-rw-r--r--src/plugins/Input/opus/opusmetadatamodel.cpp38
-rw-r--r--src/plugins/Input/opus/opusmetadatamodel.h12
5 files changed, 27 insertions, 31 deletions
diff --git a/src/plugins/Input/Input.pro b/src/plugins/Input/Input.pro
index 6ca225333..c05586521 100644
--- a/src/plugins/Input/Input.pro
+++ b/src/plugins/Input/Input.pro
@@ -28,7 +28,7 @@ contains(CONFIG, GME_PLUGIN){
}
contains(CONFIG, OPUS_PLUGIN){
-# SUBDIRS += opus
+ SUBDIRS += opus
}
contains(CONFIG, CDAUDIO_PLUGIN){
diff --git a/src/plugins/Input/opus/decoderopusfactory.cpp b/src/plugins/Input/opus/decoderopusfactory.cpp
index 6e98e85ea..9b86e046a 100644
--- a/src/plugins/Input/opus/decoderopusfactory.cpp
+++ b/src/plugins/Input/opus/decoderopusfactory.cpp
@@ -55,9 +55,9 @@ Decoder *DecoderOpusFactory::create(const QString &url, QIODevice *input)
return new DecoderOpus(url, input);
}
-MetaDataModel* DecoderOpusFactory::createMetaDataModel(const QString &path, QObject *parent)
+MetaDataModel* DecoderOpusFactory::createMetaDataModel(const QString &path, bool readOnly, QObject *parent)
{
- return new OpusMetaDataModel(path, parent);
+ return new OpusMetaDataModel(path, readOnly, parent);
}
QList<TrackInfo *> DecoderOpusFactory::createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *)
diff --git a/src/plugins/Input/opus/decoderopusfactory.h b/src/plugins/Input/opus/decoderopusfactory.h
index 2e1b2e3a8..ea41d3dd8 100644
--- a/src/plugins/Input/opus/decoderopusfactory.h
+++ b/src/plugins/Input/opus/decoderopusfactory.h
@@ -36,7 +36,7 @@ public:
bool canDecode(QIODevice *input) const;
DecoderProperties properties() const;
Decoder *create(const QString &path, QIODevice *input);
- MetaDataModel* createMetaDataModel(const QString &path, QObject *parent = 0);
+ MetaDataModel* createMetaDataModel(const QString &path, bool readOnly = true, QObject *parent = 0);
QList<TrackInfo *> createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *);
QObject* showDetails(QWidget *parent, const QString &path);
void showSettings(QWidget *parent);
diff --git a/src/plugins/Input/opus/opusmetadatamodel.cpp b/src/plugins/Input/opus/opusmetadatamodel.cpp
index cd0f2be5f..bf8196951 100644
--- a/src/plugins/Input/opus/opusmetadatamodel.cpp
+++ b/src/plugins/Input/opus/opusmetadatamodel.cpp
@@ -26,10 +26,12 @@
#include <taglib/tmap.h>
#include "opusmetadatamodel.h"
-OpusMetaDataModel::OpusMetaDataModel(const QString &path, QObject *parent) : MetaDataModel(parent)
+OpusMetaDataModel::OpusMetaDataModel(const QString &path, bool readOnly, QObject *parent)
+ : MetaDataModel(readOnly, parent)
{
m_path = path;
- m_file = new TagLib::Ogg::Opus::File(QStringToFileName(m_path));
+ m_stream = new TagLib::FileStream(QStringToFileName(path), readOnly);
+ m_file = new TagLib::Ogg::Opus::File(m_stream);
m_tags << new VorbisCommentModel(m_file);
}
@@ -37,36 +39,28 @@ OpusMetaDataModel::~OpusMetaDataModel()
{
while(!m_tags.isEmpty())
delete m_tags.takeFirst();
- if(m_file)
- {
- delete m_file;
- m_file = 0;
- }
+
+ delete m_file;
+ delete m_stream;
}
-QHash<QString, QString> OpusMetaDataModel::audioProperties()
+QList<MetaDataItem> OpusMetaDataModel::extraProperties() const
{
- QHash<QString, QString> ap;
- TagLib::Ogg::Opus::File f (QStringToFileName(m_path));
- if(m_file && m_file->isValid())
+ QList<MetaDataItem> ep;
+ TagLib::Ogg::Opus::Properties *ap = m_file->audioProperties();
+ if(ap)
{
- QString text = QString("%1").arg(m_file->audioProperties()->length()/60);
- text +=":"+QString("%1").arg(m_file->audioProperties()->length()%60,2,10,QChar('0'));
- ap.insert(tr("Length"), text);
- ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(m_file->audioProperties()->sampleRate()));
- ap.insert(tr("Channels"), QString("%1").arg(m_file->audioProperties()->channels()));
- ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(m_file->audioProperties()->bitrate()));
- ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(m_file->length()/1024));
+ ep << MetaDataItem(tr("Version"), ap->opusVersion());
}
- return ap;
+ return ep;
}
-QList<TagModel* > OpusMetaDataModel::tags()
+QList<TagModel* > OpusMetaDataModel::tags() const
{
return m_tags;
}
-QPixmap OpusMetaDataModel::cover()
+QPixmap OpusMetaDataModel::cover() const
{
if(!m_file || !m_file->isValid())
return QPixmap();
@@ -106,7 +100,7 @@ QPixmap OpusMetaDataModel::cover()
return QPixmap();
}
-ulong OpusMetaDataModel::readPictureBlockField(QByteArray data, int offset)
+ulong OpusMetaDataModel::readPictureBlockField(QByteArray data, int offset) const
{
return (((uchar)data.data()[offset] & 0xff) << 24) |
(((uchar)data.data()[offset+1] & 0xff) << 16) |
diff --git a/src/plugins/Input/opus/opusmetadatamodel.h b/src/plugins/Input/opus/opusmetadatamodel.h
index 2d2a7a917..20b7b5cd3 100644
--- a/src/plugins/Input/opus/opusmetadatamodel.h
+++ b/src/plugins/Input/opus/opusmetadatamodel.h
@@ -23,23 +23,25 @@
#include <taglib/opusfile.h>
#include <taglib/xiphcomment.h>
+#include <taglib/tfilestream.h>
#include <qmmp/metadatamodel.h>
class OpusMetaDataModel : public MetaDataModel
{
Q_OBJECT
public:
- OpusMetaDataModel(const QString &path, QObject *parent);
+ OpusMetaDataModel(const QString &path, bool readOnly, QObject *parent);
~OpusMetaDataModel();
- QHash<QString, QString> audioProperties();
- QList<TagModel* > tags();
- QPixmap cover();
+ QList<MetaDataItem> extraProperties() const override;
+ QList<TagModel* > tags() const override;
+ QPixmap cover() const override;
private:
+ ulong readPictureBlockField(QByteArray data, int offset) const;
QString m_path;
QList<TagModel* > m_tags;
TagLib::Ogg::Opus::File *m_file;
- ulong readPictureBlockField(QByteArray data, int offset);
+ TagLib::FileStream *m_stream;
};
class VorbisCommentModel : public TagModel