diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-05-29 21:30:24 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2018-05-29 21:30:24 +0000 |
| commit | 0027a3d62ef3d8cfadc6105b14f1136da7702d34 (patch) | |
| tree | 2b118ecab0e80d6fbdc8d18ebe1057b9bfdd928c /src/plugins | |
| parent | 9d81081004c265c4c27af54da2361d75aa3f789c (diff) | |
| download | qmmp-0027a3d62ef3d8cfadc6105b14f1136da7702d34.tar.gz qmmp-0027a3d62ef3d8cfadc6105b14f1136da7702d34.tar.bz2 qmmp-0027a3d62ef3d8cfadc6105b14f1136da7702d34.zip | |
enabled ffmpeg plugin
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@7974 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
| -rw-r--r-- | src/plugins/Input/Input.pro | 2 | ||||
| -rw-r--r-- | src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp | 1 | ||||
| -rw-r--r-- | src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp | 47 | ||||
| -rw-r--r-- | src/plugins/Input/ffmpeg/decoderffmpegfactory.h | 14 |
4 files changed, 37 insertions, 27 deletions
diff --git a/src/plugins/Input/Input.pro b/src/plugins/Input/Input.pro index 6298e042a..f244f1a2a 100644 --- a/src/plugins/Input/Input.pro +++ b/src/plugins/Input/Input.pro @@ -20,7 +20,7 @@ contains(CONFIG, MODPLUG_PLUGIN){ } contains(CONFIG, FFMPEG_PLUGIN){ - #SUBDIRS += ffmpeg + SUBDIRS += ffmpeg } contains(CONFIG, GME_PLUGIN){ diff --git a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp b/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp index 5361a56ce..cf414f61c 100644 --- a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp +++ b/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp @@ -200,7 +200,6 @@ bool DecoderFFmpeg::initialize() metaData.insert(Qmmp::YEAR, year->value); if(track) metaData.insert(Qmmp::TRACK, track->value); - metaData.insert(Qmmp::URL, m_path); addMetaData(metaData); } diff --git a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp index eaf4d9edf..d0d772c91 100644 --- a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp +++ b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp @@ -154,24 +154,24 @@ Decoder *DecoderFFmpegFactory::create(const QString &path, QIODevice *input) return new DecoderFFmpeg(path, input); } -QList<FileInfo *> DecoderFFmpegFactory::createPlayList(const QString &fileName, bool useMetaData, QStringList *) +QList<TrackInfo *> DecoderFFmpegFactory::createPlayList(const QString &path, TrackInfo::Parts parts, QStringList *) { - QList <FileInfo*> list; + QList <TrackInfo*> list; AVFormatContext *in = 0; #ifdef Q_OS_WIN - if (avformat_open_input(&in,fileName.toUtf8().constData(), 0, 0) < 0) + if(avformat_open_input(&in, path.toUtf8().constData(), 0, 0) < 0) #else - if (avformat_open_input(&in,fileName.toLocal8Bit().constData(), 0, 0) < 0) + if(avformat_open_input(&in, path.toLocal8Bit().constData(), 0, 0) < 0) #endif { qDebug("DecoderFFmpegFactory: unable to open file"); return list; } - FileInfo *info = new FileInfo(fileName); + TrackInfo *info = new TrackInfo(path); avformat_find_stream_info(in, 0); - if (useMetaData) + if(parts & TrackInfo::MetaData) { AVDictionaryEntry *album = av_dict_get(in->metadata,"album",0,0); if(!album) @@ -194,21 +194,40 @@ QList<FileInfo *> DecoderFFmpegFactory::createPlayList(const QString &fileName, track = av_dict_get(in->metadata,"WM/TrackNumber",0,0); if(album) - info->setMetaData(Qmmp::ALBUM, QString::fromUtf8(album->value).trimmed()); + info->setValue(Qmmp::ALBUM, QString::fromUtf8(album->value)); if(artist) - info->setMetaData(Qmmp::ARTIST, QString::fromUtf8(artist->value).trimmed()); + info->setValue(Qmmp::ARTIST, QString::fromUtf8(artist->value)); if(comment) - info->setMetaData(Qmmp::COMMENT, QString::fromUtf8(comment->value).trimmed()); + info->setValue(Qmmp::COMMENT, QString::fromUtf8(comment->value)); if(genre) - info->setMetaData(Qmmp::GENRE, QString::fromUtf8(genre->value).trimmed()); + info->setValue(Qmmp::GENRE, QString::fromUtf8(genre->value)); if(title) - info->setMetaData(Qmmp::TITLE, QString::fromUtf8(title->value).trimmed()); + info->setValue(Qmmp::TITLE, QString::fromUtf8(title->value)); if(year) - info->setMetaData(Qmmp::YEAR, year->value); + info->setValue(Qmmp::YEAR, year->value); if(track) - info->setMetaData(Qmmp::TRACK, track->value); + info->setValue(Qmmp::TRACK, track->value); } - info->setLength(in->duration/AV_TIME_BASE); + + if(parts & TrackInfo::Properties) + { + int idx = av_find_best_stream(in, AVMEDIA_TYPE_AUDIO, -1, -1, 0, 0); + if(idx >= 0) + { + #if (LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57,48,0)) //ffmpeg-3.1: 57.48.101 + AVCodecParameters *c = in->streams[idx]->codecpar; + #else + AVCodecContext *c = in->streams[idx]->codec; + #endif + info->setValue(Qmmp::BITRATE, c->bit_rate); + info->setValue(Qmmp::SAMPLERATE, c->sample_rate); + info->setValue(Qmmp::CHANNELS, c->channels); + 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); avformat_close_input(&in); list << info; return list; diff --git a/src/plugins/Input/ffmpeg/decoderffmpegfactory.h b/src/plugins/Input/ffmpeg/decoderffmpegfactory.h index 74b68fb52..ce2caa166 100644 --- a/src/plugins/Input/ffmpeg/decoderffmpegfactory.h +++ b/src/plugins/Input/ffmpeg/decoderffmpegfactory.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,10 @@ #ifndef DECODERFFMPEGFACTORY_H #define DECODERFFMPEGFACTORY_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 DecoderFFmpegFactory : public QObject, - DecoderFactory +class DecoderFFmpegFactory : public QObject, DecoderFactory { Q_OBJECT Q_PLUGIN_METADATA(IID "org.qmmp.qmmp.DecoderFactoryInterface.1.0") @@ -42,7 +34,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); |
