aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/ffmpeg/ffmpegmetadatamodel.cpp
Commit message (Expand)AuthorAgeFilesLines
* ffmpeg plugin: cleanuptrialuser022013-02-121-5/+0
* removed legacy code from ffmpeg plugintrialuser022013-02-101-56/+1
* fixed libav 0.8.x supporttrialuser022013-02-101-1/+1
* fixed FSF headerstrialuser022012-07-311-1/+1
* fixed FSF address (trunk)trialuser022012-07-311-1/+1
* legacy ffmpeg supporttrialuser022012-01-171-1/+56
* fixed ffmpeg 0.9.1 supporttrialuser022012-01-171-1/+1
* ffmpeg plugin: latest api support (Closes issue 512)trialuser022011-12-171-3/+5
* ffmpeg plugin: ffmpeg 0.8.x support, removed previous versions supporttrialuser022011-12-011-5/+1
* fixed recent ffmpeg supporttrialuser022011-05-101-1/+6
* added latest ffmpeg support, fixed bug with ape seeking, removed legacytrialuser022011-04-151-12/+1
* fixed typotrialuser022009-09-291-1/+1
* ported ffmpeg plugin (Closes issue 170)trialuser022009-09-231-0/+76
rialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> 2008-03-06 14:13:41 +0000 added wavpack plugin' href='/qmmp/commit/src/plugins/Input/wavpack/decoderwavpackfactory.cpp?id=892d61b4dc43869940959a82197d865390c04509'>892d61b4d
e48a196c8
37ec3ed3b
892d61b4d


e1c05b3f0
892d61b4d
e1c05b3f0
892d61b4d

26724c66d
892d61b4d
e48a196c8
892d61b4d
37ec3ed3b


26724c66d
892d61b4d

e48a196c8
892d61b4d
37ec3ed3b
26724c66d

37ec3ed3b






















b4acea470

37ec3ed3b



b4acea470

37ec3ed3b






26724c66d
892d61b4d
e48a196c8
892d61b4d

e1c05b3f0
892d61b4d
d460e7652



892d61b4d
















f0a1d05ed
892d61b4d



a52daae90
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
                                                                            
                                                                            

















                                                                             

                
                                 

                                  
                      


















                                                                 
                                                 
                                
                                     

                                   
                              
                                         


                      
                                                                     
 
                                 

 
                                                                                                  
 
                           
                 


                                                                                                      
             

                                                          
                    
     
                                  

                    






















                                                                       

                                                                        



                                                                             

                                                                                  






                                                                                   
     
                           
                

 
                                                                                               
 



                                                              
















                                                                                   
                                              



                                                            
                                               
/***************************************************************************
 *   Copyright (C) 2008-2009 by Ilya Kotov                                 *
 *   forkotov02@hotmail.ru                                                 *
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 *   This program is distributed in the hope that it will be useful,       *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
 *   GNU General Public License for more details.                          *
 *                                                                         *
 *   You should have received a copy of the GNU General Public License     *
 *   along with this program; if not, write to the                         *
 *   Free Software Foundation, Inc.,                                       *
 *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
 ***************************************************************************/

#include <QtGui>

#include "wavpackmetadatamodel.h"
#include "decoder_wavpack.h"
#include "decoderwavpackfactory.h"
#include "cueparser.h"

// DecoderWavPackFactory

bool DecoderWavPackFactory::supports(const QString &source) const
{

    return (source.right(3).toLower() == ".wv");
}

bool DecoderWavPackFactory::canDecode(QIODevice *) const
{
    return FALSE;
}

const DecoderProperties DecoderWavPackFactory::properties() const
{
    DecoderProperties properties;
    properties.name = tr("WavPack Plugin");
    properties.filter = "*.wv";
    properties.description = tr("WavPack Files");
    //properties.contentType = ;
    properties.shortName = "wavpack";
    properties.hasAbout = TRUE;
    properties.hasSettings = FALSE;
    properties.noInput = TRUE;
    properties.protocols = "file wvpack";
    return properties;
}

Decoder *DecoderWavPackFactory::create(const QString &p, QIODevice *)
{
    return new DecoderWavPack(p);
}

QList<FileInfo *> DecoderWavPackFactory::createPlayList(const QString &fileName, bool useMetaData)
{
    QList <FileInfo*> list;
    char err[80];
    int cue_len=0;
    FileInfo *info;
    WavpackContext *ctx = WavpackOpenFileInput (fileName.toLocal8Bit(), err, OPEN_WVC | OPEN_TAGS, 0);
    if (!ctx)
    {
        qWarning("DecoderWavPackFactory: error: %s", err);
        return list;
    }
    info = new FileInfo(fileName);
    if (useMetaData)
    {
        cue_len = WavpackGetTagItem (ctx, "cuesheet", NULL, 0);
        char *value;
        if (cue_len)
        {
            value = (char*)malloc (cue_len * 2 + 1);
            WavpackGetTagItem (ctx, "cuesheet", value, cue_len + 1);
            CUEParser parser(value, fileName);
            list = parser.createPlayList();
        }
        else
        {

            char value[200];
            WavpackGetTagItem (ctx, "Album", value, sizeof(value));
            info->setMetaData(Qmmp::ALBUM, QString::fromUtf8(value));
            WavpackGetTagItem (ctx, "Artist", value, sizeof(value));
            info->setMetaData(Qmmp::ARTIST, QString::fromUtf8(value));
            WavpackGetTagItem (ctx, "Comment", value, sizeof(value));
            info->setMetaData(Qmmp::COMMENT, QString::fromUtf8(value));
            WavpackGetTagItem (ctx, "Genre", value, sizeof(value));
            info->setMetaData(Qmmp::GENRE, QString::fromUtf8(value));
            WavpackGetTagItem (ctx, "Title", value, sizeof(value));
            info->setMetaData(Qmmp::TITLE, QString::fromUtf8(value));
            WavpackGetTagItem (ctx, "Composer", value, sizeof(value));
            info->setMetaData(Qmmp::COMPOSER, QString::fromUtf8(value));
            WavpackGetTagItem (ctx, "Year", value, sizeof(value));
            info->setMetaData(Qmmp::YEAR, QString::fromUtf8(value).toInt());
            WavpackGetTagItem (ctx, "Track", value, sizeof(value));
            info->setMetaData(Qmmp::TRACK, QString::fromUtf8(value).toInt());
            WavpackGetTagItem (ctx, "Disc", value, sizeof(value));
            info->setMetaData(Qmmp::DISCNUMBER, QString::fromUtf8(value).toInt());
        }
    }

    if (cue_len==0)
    {
        info->setLength((int) WavpackGetNumSamples(ctx)/WavpackGetSampleRate(ctx));
        list << info;
    }
    WavpackCloseFile (ctx);
    return list;
}

MetaDataModel* DecoderWavPackFactory::createMetaDataModel(const QString &path, QObject *parent)
{
    if (!path.contains("://") || path.startsWith("wvpack://"))
        return new WavPackMetaDataModel(path, parent);
    else
        return 0;
}

void DecoderWavPackFactory::showSettings(QWidget *)
{}

void DecoderWavPackFactory::showAbout(QWidget *parent)
{
    QMessageBox::about (parent, tr("About WavPack Audio Plugin"),
                        tr("Qmmp WavPack Audio Plugin")+"\n"+
                        tr("WavPack library version:") +
                        QString(" %1").arg(WavpackGetLibraryVersionString ())+"\n"+
                        tr("Writen by: Ilya Kotov <forkotov02@hotmail.ru>"));
}

QTranslator *DecoderWavPackFactory::createTranslator(QObject *parent)
{
    QTranslator *translator = new QTranslator(parent);
    QString locale = Qmmp::systemLanguageID();
    translator->load(QString(":/wavpack_plugin_") + locale);
    return translator;
}

Q_EXPORT_PLUGIN2(wavpack,DecoderWavPackFactory)