diff options
| author | vovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-02-07 13:36:34 +0000 |
|---|---|---|
| committer | vovanec <vovanec@90c681e8-e032-0410-971d-27865f9a5e38> | 2008-02-07 13:36:34 +0000 |
| commit | 06d1877811fa6aa97dddc0e03bcde4e766928c87 (patch) | |
| tree | c25462d0e58c3d58c728664440412bf4f16a49ec /src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp | |
| parent | 3f6b60f23c44a8ba8dd97ca6f41a16e2af7ef2f7 (diff) | |
| download | qmmp-06d1877811fa6aa97dddc0e03bcde4e766928c87.tar.gz qmmp-06d1877811fa6aa97dddc0e03bcde4e766928c87.tar.bz2 qmmp-06d1877811fa6aa97dddc0e03bcde4e766928c87.zip | |
new directory structure
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@232 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp')
| -rw-r--r-- | src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp new file mode 100644 index 000000000..789635a15 --- /dev/null +++ b/src/plugins/Input/ffmpeg/decoderffmpegfactory.cpp @@ -0,0 +1,93 @@ +#include <QtGui> + +extern "C"{ +#include <ffmpeg/avformat.h> +#include <ffmpeg/avcodec.h> +} + +#include "detailsdialog.h" +#include "decoder_ffmpeg.h" +#include "decoderffmpegfactory.h" + + +// DecoderFFmpegFactory + +bool DecoderFFmpegFactory::supports(const QString &source) const +{ + + return (source.right(4).toLower() == ".wma" || source.right(4).toLower() == ".wav"); +} + +bool DecoderFFmpegFactory::canDecode(QIODevice *) const +{ + return FALSE; +} + +const DecoderProperties DecoderFFmpegFactory::properties() const +{ + DecoderProperties properties; + properties.name = tr("WMA Files"); + properties.filter = "*.wma *.wav"; + properties.description = tr("WMA Files"); + //properties.contentType = ""; + properties.hasAbout = TRUE; + properties.hasSettings = FALSE; + return properties; +} + +Decoder *DecoderFFmpegFactory::create(QObject *parent, QIODevice *input, + Output *output) +{ + return new DecoderFFmpeg(parent, this, input, output); +} + +FileTag *DecoderFFmpegFactory::createTag(const QString &source) +{ + FileTag *ftag = new FileTag(); + avcodec_init(); + avcodec_register_all(); + av_register_all(); + AVFormatContext *in; + + if (av_open_input_file(&in, source.toLocal8Bit(), NULL,0, NULL) < 0) + return ftag; + av_find_stream_info(in); + ftag->setValue(FileTag::ALBUM, QString::fromUtf8(in->album).trimmed()); + ftag->setValue(FileTag::ARTIST, QString::fromUtf8(in->author).trimmed()); + ftag->setValue(FileTag::COMMENT, QString::fromUtf8(in->comment).trimmed()); + ftag->setValue(FileTag::GENRE, QString::fromUtf8(in->genre).trimmed()); + ftag->setValue(FileTag::TITLE, QString::fromUtf8(in->title).trimmed()); + ftag->setValue(FileTag::YEAR, in->year); + ftag->setValue(FileTag::TRACK, in->track); + ftag->setValue(FileTag::LENGTH ,int(in->duration/AV_TIME_BASE)); + av_close_input_file(in); + return ftag; +} + +QObject* DecoderFFmpegFactory::showDetails(QWidget *parent, const QString &path) +{ + DetailsDialog *d = new DetailsDialog(parent, path); + d -> show(); + return d; +} + +void DecoderFFmpegFactory::showSettings(QWidget *) +{} + +void DecoderFFmpegFactory::showAbout(QWidget *parent) +{ + QMessageBox::about (parent, tr("About FFmpeg Audio Plugin"), + tr("Qmmp FFmpeg Audio Plugin")+"\n"+ + tr("Suppored formats: WMA")+"\n"+ + tr("Writen by: Ilya Kotov <forkotov02@hotmail.ru>")); +} + +QTranslator *DecoderFFmpegFactory::createTranslator(QObject *parent) +{ + QTranslator *translator = new QTranslator(parent); + QString locale = QLocale::system().name(); + translator->load(QString(":/ffmpeg_plugin_") + locale); + return translator; +} + +Q_EXPORT_PLUGIN(DecoderFFmpegFactory) |
