///////////////////////////////////////////////////////////////////////////////
// LameXP - Audio Encoder Front-End
-// Copyright (C) 2004-2010 LoRd_MuldeR <MuldeR2@GMX.de>
+// Copyright (C) 2004-2013 LoRd_MuldeR <MuldeR2@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
#pragma once
+#include "Tool_Abstract.h"
#include "Model_AudioFile.h"
-#include <QObject>
-
class QProcess;
class QStringList;
class QMutex;
-class AbstractEncoder : public QObject
+class AbstractEncoder : public AbstractTool
{
Q_OBJECT
public:
AbstractEncoder(void);
- ~AbstractEncoder(void);
+ virtual ~AbstractEncoder(void);
//Internal encoder API
- virtual bool encode(const AudioFileModel &sourceFile, const QString &outputFile, volatile bool *abortFlag) = 0;
+ virtual bool encode(const QString &sourceFile, const AudioFileModel &metaInfo, const QString &outputFile, volatile bool *abortFlag) = 0;
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion) = 0;
virtual QString extension(void) = 0;
+ virtual const unsigned int *supportedSamplerates(void);
+ virtual const unsigned int *supportedChannelCount(void);
+ virtual const unsigned int *supportedBitdepths(void);
+ virtual const bool needsTimingInfo(void);
//Common setter methods
void setBitrate(int bitrate);
void setRCMode(int mode);
-
- //Auxiliary functions
- bool startProcess(QProcess &process, const QString &program, const QStringList &args);
- static QString commandline2string(const QString &program, const QStringList &arguments);
-
-signals:
- void statusUpdated(int progress);
- void messageLogged(const QString &line);
+ void setCustomParams(const QString &customParams);
protected:
int m_configBitrate;
int m_configRCMode;
+ QString m_configCustomParams;
-private:
- static QMutex *m_mutex_startProcess;
- static void *m_handle_jobObject;
+ //Helper functions
+ bool isUnicode(const QString &text);
+ QString cleanTag(const QString &text);
};