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