File: CodecManager.h

package info (click to toggle)
kwave 25.04.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 23,272 kB
  • sloc: cpp: 56,173; xml: 817; perl: 688; sh: 57; makefile: 11
file content (134 lines) | stat: -rw-r--r-- 4,920 bytes parent folder | download
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
/***************************************************************************
         CodecManager.h  -  manager for Kwave's coders and decoders
                             -------------------
    begin                : Mar 10 2002
    copyright            : (C) 2002 by Thomas Eschenbacher
    email                : Thomas Eschenbacher <thomas.eschenbacher@gmx.de>
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   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.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef CODEC_MANAGER_H
#define CODEC_MANAGER_H

#include "config.h"
#include "libkwave_export.h"

#include <QtGlobal>
#include <QList>
#include <QObject>
#include <QString>
#include <QStringList>

namespace Kwave
{

    class Decoder;
    class Encoder;

    class LIBKWAVE_EXPORT CodecManager: public QObject
    {
        Q_OBJECT
    public:

        /** Constructor */
        CodecManager();

        /** Destructor */
        virtual ~CodecManager() override;

        /**
         * Registers a new encoder.
         * @param encoder a KwaveEncoder that will be used as template for
         *                creating new encoder instances (used as factory)
         */
        static void registerEncoder(Kwave::Encoder &encoder);

        /**
         * Un-registers an encoder previously registered with registerEncoder.
         * @param encoder a KwaveEncoder
         */
        static void unregisterEncoder(Kwave::Encoder *encoder);

        /**
         * Registers a new decoder.
         * @param decoder a KwaveDecoder that will be used as template for
         *                creating new decoder instances (used as factory)
         */
        static void registerDecoder(Kwave::Decoder &decoder);

        /**
         * Un-registers an decoder previously registered with registerDecoder.
         * @param decoder a KwaveDecoder
         */
        static void unregisterDecoder(Kwave::Decoder *decoder);

        /**
         * Returns true if a decoder for the given mime type is known.
         * @param mimetype_name name of the mime type
         * @return true if format is supported, false if not
         */
        static bool canDecode(const QString &mimetype_name);

        /**
         * Tries to find a decoder that matches to a given mime type.
         * @param mimetype_name name of the mime type
         * @return a new decoder for the mime type or null if none found.
         */
        static Kwave::Decoder *decoder(const QString &mimetype_name);

        /**
         * Tries to find an encoder that matches to a given mime type.
         * @param mimetype_name name of the mime type of the destination
         * @return a new encoder for the mime type or null if none found.
         */
        static Kwave::Encoder *encoder(const QString &mimetype_name);

        /**
         * Returns a string with a list of all file types that can be used
         * for saving. The string is localized and can be used as a filter
         * for a KFileDialog. The entries are unique (by file extension) but
         * not sorted alphabetically.
         */
        static QString encodingFilter();

        /**
         * Returns a string with a list of all file types that can be used
         * for loading. The string is localized and can be used as a filter
         * for a KFileDialog. The entries are unique (by file extension) but
         * not sorted alphabetically.
         */
        static QString decodingFilter();

        /**
         * Tries to find the name of a mime type of a decoder by a URL.
         * If not found, it returns the default mime type, never an empty
         * string.
         * @param url a QUrl, only the filename's extension will be inspected
         * @return name of the mime type or the default mime type
         */
        static QString mimeTypeOf(const QUrl &url);

        /** Returns a list of supported mime types for encoding */
        static QStringList encodingMimeTypes();

    private:
        /** list of all encoders */
        static QList<Kwave::Encoder *> m_encoders;

        /** list of decoders */
        static QList<Kwave::Decoder *> m_decoders;
    };
}

#endif /* CODEC_MANAGER_H */

//***************************************************************************
//***************************************************************************