Switch to using QAtomicInc for abort flags.

This commit is contained in:
LoRd_MuldeR 2017-04-18 21:05:28 +02:00
parent 59d99afe8e
commit a0992d475e
81 changed files with 171 additions and 171 deletions

View File

@ -35,7 +35,7 @@
#define VER_LAMEXP_MINOR_LO 5 #define VER_LAMEXP_MINOR_LO 5
#define VER_LAMEXP_TYPE Beta #define VER_LAMEXP_TYPE Beta
#define VER_LAMEXP_PATCH 4 #define VER_LAMEXP_PATCH 4
#define VER_LAMEXP_BUILD 1978 #define VER_LAMEXP_BUILD 1981
#define VER_LAMEXP_CONFG 1934 #define VER_LAMEXP_CONFG 1934
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////

View File

@ -47,7 +47,7 @@ AACDecoder::~AACDecoder(void)
{ {
} }
bool AACDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool AACDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -67,7 +67,7 @@ bool AACDecoder::decode(const QString &sourceFile, const QString &outputFile, vo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
AACDecoder(void); AACDecoder(void);
~AACDecoder(void); ~AACDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -47,7 +47,7 @@ AC3Decoder::~AC3Decoder(void)
{ {
} }
bool AC3Decoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool AC3Decoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -67,7 +67,7 @@ bool AC3Decoder::decode(const QString &sourceFile, const QString &outputFile, vo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
AC3Decoder(void); AC3Decoder(void);
~AC3Decoder(void); ~AC3Decoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -47,7 +47,7 @@ ADPCMDecoder::~ADPCMDecoder(void)
{ {
} }
bool ADPCMDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool ADPCMDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -69,7 +69,7 @@ bool ADPCMDecoder::decode(const QString &sourceFile, const QString &outputFile,
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
ADPCMDecoder(void); ADPCMDecoder(void);
~ADPCMDecoder(void); ~ADPCMDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -48,7 +48,7 @@ ALACDecoder::~ALACDecoder(void)
{ {
} }
bool ALACDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool ALACDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -72,7 +72,7 @@ bool ALACDecoder::decode(const QString &sourceFile, const QString &outputFile, v
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
ALACDecoder(void); ALACDecoder(void);
~ALACDecoder(void); ~ALACDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -36,7 +36,7 @@ public:
typedef struct { const char *const name; const char *const *const exts; } supportedType_t; typedef struct { const char *const name; const char *const *const exts; } supportedType_t;
//Internal decoder API //Internal decoder API
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) = 0; virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag) = 0;
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static bool isDecoderAvailable(void); static bool isDecoderAvailable(void);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -48,7 +48,7 @@ AvisynthDecoder::~AvisynthDecoder(void)
{ {
} }
bool AvisynthDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool AvisynthDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -68,7 +68,7 @@ bool AvisynthDecoder::decode(const QString &sourceFile, const QString &outputFil
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
AvisynthDecoder(void); AvisynthDecoder(void);
~AvisynthDecoder(void); ~AvisynthDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -47,7 +47,7 @@ FLACDecoder::~FLACDecoder(void)
{ {
} }
bool FLACDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool FLACDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -68,7 +68,7 @@ bool FLACDecoder::decode(const QString &sourceFile, const QString &outputFile, v
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
FLACDecoder(void); FLACDecoder(void);
~FLACDecoder(void); ~FLACDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -47,7 +47,7 @@ MACDecoder::~MACDecoder(void)
{ {
} }
bool MACDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool MACDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -69,7 +69,7 @@ bool MACDecoder::decode(const QString &sourceFile, const QString &outputFile, vo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
MACDecoder(void); MACDecoder(void);
~MACDecoder(void); ~MACDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -48,7 +48,7 @@ MP3Decoder::~MP3Decoder(void)
{ {
} }
bool MP3Decoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool MP3Decoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -69,7 +69,7 @@ bool MP3Decoder::decode(const QString &sourceFile, const QString &outputFile, vo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
MP3Decoder(void); MP3Decoder(void);
~MP3Decoder(void); ~MP3Decoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -48,7 +48,7 @@ MusepackDecoder::~MusepackDecoder(void)
{ {
} }
bool MusepackDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool MusepackDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -70,7 +70,7 @@ bool MusepackDecoder::decode(const QString &sourceFile, const QString &outputFil
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
MusepackDecoder(void); MusepackDecoder(void);
~MusepackDecoder(void); ~MusepackDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -50,7 +50,7 @@ OpusDecoder::~OpusDecoder(void)
{ {
} }
bool OpusDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool OpusDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -76,7 +76,7 @@ bool OpusDecoder::decode(const QString &sourceFile, const QString &outputFile, v
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
OpusDecoder(void); OpusDecoder(void);
~OpusDecoder(void); ~OpusDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -48,7 +48,7 @@ ShortenDecoder::~ShortenDecoder(void)
{ {
} }
bool ShortenDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool ShortenDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -70,7 +70,7 @@ bool ShortenDecoder::decode(const QString &sourceFile, const QString &outputFile
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
ShortenDecoder(void); ShortenDecoder(void);
~ShortenDecoder(void); ~ShortenDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -47,7 +47,7 @@ SpeexDecoder::~SpeexDecoder(void)
{ {
} }
bool SpeexDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool SpeexDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -68,7 +68,7 @@ bool SpeexDecoder::decode(const QString &sourceFile, const QString &outputFile,
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
SpeexDecoder(void); SpeexDecoder(void);
~SpeexDecoder(void); ~SpeexDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -48,7 +48,7 @@ TTADecoder::~TTADecoder(void)
{ {
} }
bool TTADecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool TTADecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -69,7 +69,7 @@ bool TTADecoder::decode(const QString &sourceFile, const QString &outputFile, vo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
TTADecoder(void); TTADecoder(void);
~TTADecoder(void); ~TTADecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -47,7 +47,7 @@ VorbisDecoder::~VorbisDecoder(void)
{ {
} }
bool VorbisDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool VorbisDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -68,7 +68,7 @@ bool VorbisDecoder::decode(const QString &sourceFile, const QString &outputFile,
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
VorbisDecoder(void); VorbisDecoder(void);
~VorbisDecoder(void); ~VorbisDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -49,7 +49,7 @@ WMADecoder::~WMADecoder(void)
{ {
} }
bool WMADecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool WMADecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -69,7 +69,7 @@ bool WMADecoder::decode(const QString &sourceFile, const QString &outputFile, vo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -32,7 +32,7 @@ public:
WMADecoder(void); WMADecoder(void);
~WMADecoder(void); ~WMADecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -47,7 +47,7 @@ WavPackDecoder::~WavPackDecoder(void)
{ {
} }
bool WavPackDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool WavPackDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -69,7 +69,7 @@ bool WavPackDecoder::decode(const QString &sourceFile, const QString &outputFile
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
WavPackDecoder(void); WavPackDecoder(void);
~WavPackDecoder(void); ~WavPackDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -31,12 +31,12 @@
#include <QDir> #include <QDir>
//Type //Type
typedef struct _ProgressData typedef struct _callback_t
{ {
WaveDecoder *const instance; WaveDecoder *const pInstance;
volatile bool *const abrtFlag; QAtomicInt *const abortFlag;
} }
ProgressData; callback_t;
WaveDecoder::WaveDecoder(void) WaveDecoder::WaveDecoder(void)
{ {
@ -46,12 +46,12 @@ WaveDecoder::~WaveDecoder(void)
{ {
} }
bool WaveDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) bool WaveDecoder::decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag)
{ {
emit messageLogged(QString("Copy file \"%1\" to \"%2\"").arg(QDir::toNativeSeparators(sourceFile), QDir::toNativeSeparators(outputFile))); emit messageLogged(QString("Copy file \"%1\" to \"%2\"").arg(QDir::toNativeSeparators(sourceFile), QDir::toNativeSeparators(outputFile)));
emit statusUpdated(0); emit statusUpdated(0);
ProgressData progressData = { this, abortFlag }; callback_t progressData = { this, &abortFlag };
const bool okay = MUtils::OS::copy_file(sourceFile, outputFile, true, progressHandler, &progressData); const bool okay = MUtils::OS::copy_file(sourceFile, outputFile, true, progressHandler, &progressData);
emit statusUpdated(100); emit statusUpdated(100);
@ -68,13 +68,12 @@ bool WaveDecoder::decode(const QString &sourceFile, const QString &outputFile, v
return okay; return okay;
} }
bool WaveDecoder::progressHandler(const double &progress, void *const data) bool WaveDecoder::progressHandler(const double &progress, void *const userData)
{ {
if(data) if(const callback_t *const ptr = reinterpret_cast<callback_t*>(userData))
{ {
//qWarning("Copy progress: %.2f", progress); ptr->pInstance->updateProgress(progress);
reinterpret_cast<ProgressData*>(data)->instance->updateProgress(progress); return ptr->abortFlag->operator!();
return (!(*reinterpret_cast<ProgressData*>(data)->abrtFlag));
} }
return true; return true;
} }

View File

@ -30,7 +30,7 @@ public:
WaveDecoder(void); WaveDecoder(void);
~WaveDecoder(void); ~WaveDecoder(void);
virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); virtual bool decode(const QString &sourceFile, const QString &outputFile, QAtomicInt &abortFlag);
static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
static const supportedType_t *supportedTypes(void); static const supportedType_t *supportedTypes(void);

View File

@ -146,7 +146,7 @@ AACEncoder::~AACEncoder(void)
{ {
} }
bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -219,7 +219,7 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;
@ -331,7 +331,7 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -34,7 +34,7 @@ public:
AACEncoder(void); AACEncoder(void);
~AACEncoder(void); ~AACEncoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag); virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
virtual const bool needsTimingInfo(void); virtual const bool needsTimingInfo(void);

View File

@ -148,7 +148,7 @@ FDKAACEncoder::~FDKAACEncoder(void)
{ {
} }
bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -209,7 +209,7 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -34,7 +34,7 @@ public:
FDKAACEncoder(void); FDKAACEncoder(void);
~FDKAACEncoder(void); ~FDKAACEncoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag); virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
//Advanced options //Advanced options

View File

@ -146,7 +146,7 @@ FHGAACEncoder::~FHGAACEncoder(void)
{ {
} }
bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -204,7 +204,7 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if (checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -34,7 +34,7 @@ public:
FHGAACEncoder(void); FHGAACEncoder(void);
~FHGAACEncoder(void); ~FHGAACEncoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag); virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
virtual const unsigned int *supportedChannelCount(void); virtual const unsigned int *supportedChannelCount(void);
virtual const unsigned int *supportedBitdepths(void); virtual const unsigned int *supportedBitdepths(void);

View File

@ -157,7 +157,7 @@ QAACEncoder::~QAACEncoder(void)
{ {
} }
bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag)
{ {
const QString qaac_bin = m_binary_qaac64.isEmpty() ? m_binary_qaac32 : m_binary_qaac64; const QString qaac_bin = m_binary_qaac64.isEmpty() ? m_binary_qaac32 : m_binary_qaac64;
@ -230,7 +230,7 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if (checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -34,7 +34,7 @@ public:
QAACEncoder(void); QAACEncoder(void);
~QAACEncoder(void); ~QAACEncoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag); virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
//Advanced options //Advanced options

View File

@ -144,7 +144,7 @@ AC3Encoder::~AC3Encoder(void)
{ {
} }
bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -197,7 +197,7 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if (checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -34,7 +34,7 @@ public:
AC3Encoder(void); AC3Encoder(void);
~AC3Encoder(void); ~AC3Encoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag); virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
virtual const unsigned int *supportedChannelCount(void); virtual const unsigned int *supportedChannelCount(void);
virtual const unsigned int *supportedSamplerates(void); virtual const unsigned int *supportedSamplerates(void);

View File

@ -66,7 +66,7 @@ public:
virtual ~AbstractEncoder(void); virtual ~AbstractEncoder(void);
//Internal encoder API //Internal encoder API
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) = 0; virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag) = 0;
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion) = 0; virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion) = 0;
virtual const unsigned int *supportedSamplerates(void); virtual const unsigned int *supportedSamplerates(void);
virtual const unsigned int *supportedChannelCount(void); virtual const unsigned int *supportedChannelCount(void);

View File

@ -141,7 +141,7 @@ DCAEncoder::~DCAEncoder(void)
{ {
} }
bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -163,7 +163,7 @@ bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if (checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -34,7 +34,7 @@ public:
DCAEncoder(void); DCAEncoder(void);
~DCAEncoder(void); ~DCAEncoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag); virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
virtual const unsigned int *supportedChannelCount(void); virtual const unsigned int *supportedChannelCount(void);
virtual const unsigned int *supportedBitdepths(void); virtual const unsigned int *supportedBitdepths(void);

View File

@ -135,7 +135,7 @@ FLACEncoder::~FLACEncoder(void)
{ {
} }
bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -172,7 +172,7 @@ bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -34,7 +34,7 @@ public:
FLACEncoder(void); FLACEncoder(void);
~FLACEncoder(void); ~FLACEncoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag); virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
virtual const unsigned int *supportedChannelCount(void); virtual const unsigned int *supportedChannelCount(void);
virtual const unsigned int *supportedBitdepths(void); virtual const unsigned int *supportedBitdepths(void);

View File

@ -136,7 +136,7 @@ MACEncoder::~MACEncoder(void)
{ {
} }
bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -169,7 +169,7 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if (checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;
@ -250,7 +250,7 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -34,7 +34,7 @@ public:
MACEncoder(void); MACEncoder(void);
~MACEncoder(void); ~MACEncoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag); virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
//Encoder info //Encoder info

View File

@ -146,7 +146,7 @@ MP3Encoder::~MP3Encoder(void)
{ {
} }
bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -241,7 +241,7 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if (checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -34,7 +34,7 @@ public:
MP3Encoder(void); MP3Encoder(void);
~MP3Encoder(void); ~MP3Encoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag); virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
virtual const unsigned int *supportedChannelCount(void); virtual const unsigned int *supportedChannelCount(void);

View File

@ -140,7 +140,7 @@ OpusEncoder::~OpusEncoder(void)
{ {
} }
bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -214,7 +214,7 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if (checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -34,7 +34,7 @@ public:
OpusEncoder(void); OpusEncoder(void);
~OpusEncoder(void); ~OpusEncoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag); virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
virtual const unsigned int *supportedChannelCount(void); virtual const unsigned int *supportedChannelCount(void);
virtual const unsigned int *supportedBitdepths(void); virtual const unsigned int *supportedBitdepths(void);

View File

@ -141,7 +141,7 @@ VorbisEncoder::~VorbisEncoder(void)
{ {
} }
bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -204,7 +204,7 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -34,7 +34,7 @@ public:
VorbisEncoder(void); VorbisEncoder(void);
~VorbisEncoder(void); ~VorbisEncoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag); virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
virtual void setBitrateLimits(int minimumBitrate, int maximumBitrate); virtual void setBitrateLimits(int minimumBitrate, int maximumBitrate);

View File

@ -30,8 +30,8 @@
typedef struct _callback_t typedef struct _callback_t
{ {
WaveEncoder *pInstance; WaveEncoder *const pInstance;
volatile bool *abortFlag; QAtomicInt *const abortFlag;
} }
callback_t; callback_t;
@ -132,13 +132,11 @@ WaveEncoder::~WaveEncoder(void)
{ {
} }
bool WaveEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag) bool WaveEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag)
{ {
emit messageLogged(QString("Copy file \"%1\" to \"%2\"\n").arg(sourceFile, outputFile)); emit messageLogged(QString("Copy file \"%1\" to \"%2\"\n").arg(sourceFile, outputFile));
callback_t callbackData; callback_t callbackData = { this, &abortFlag };
callbackData.abortFlag = abortFlag;
callbackData.pInstance = this;
emit statusUpdated(0); emit statusUpdated(0);
const bool success = MUtils::OS::copy_file(sourceFile, outputFile, true, progressCallback, &callbackData); const bool success = MUtils::OS::copy_file(sourceFile, outputFile, true, progressCallback, &callbackData);
@ -150,7 +148,7 @@ bool WaveEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
} }
else else
{ {
emit messageLogged((*abortFlag) ? L1S("Operation cancelled by user!") : L1S("Error: Failed to copy file!")); emit messageLogged(checkFlag(abortFlag) ? L1S("Operation cancelled by user!") : L1S("Error: Failed to copy file!"));
} }
return success; return success;
@ -158,12 +156,11 @@ bool WaveEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
bool WaveEncoder::progressCallback(const double &progress, void *const userData) bool WaveEncoder::progressCallback(const double &progress, void *const userData)
{ {
const callback_t *const ptr = reinterpret_cast<callback_t*>(userData); if (const callback_t *const ptr = reinterpret_cast<callback_t*>(userData))
if (*(ptr->abortFlag))
{ {
return false; /*user aborted*/
}
ptr->pInstance->updateProgress(progress); ptr->pInstance->updateProgress(progress);
return ptr->abortFlag->operator!();
}
return true; return true;
} }

View File

@ -34,7 +34,7 @@ public:
WaveEncoder(void); WaveEncoder(void);
~WaveEncoder(void); ~WaveEncoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, volatile bool *abortFlag); virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const unsigned int channels, const QString &outputFile, QAtomicInt &abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
//Encoder info //Encoder info

View File

@ -43,6 +43,6 @@ public:
}; };
//Internal decoder API //Internal decoder API
virtual FilterResult apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, volatile bool *abortFlag) = 0; virtual FilterResult apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, QAtomicInt &abortFlag) = 0;
}; };

View File

@ -51,7 +51,7 @@ DownmixFilter::~DownmixFilter(void)
{ {
} }
AbstractFilter::FilterResult DownmixFilter::apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, volatile bool *abortFlag) AbstractFilter::FilterResult DownmixFilter::apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, QAtomicInt &abortFlag)
{ {
unsigned int channels = formatInfo->audioChannels(); unsigned int channels = formatInfo->audioChannels();
emit messageLogged(QString().sprintf("--> Number of channels is: %d\n", channels)); emit messageLogged(QString().sprintf("--> Number of channels is: %d\n", channels));
@ -112,7 +112,7 @@ AbstractFilter::FilterResult DownmixFilter::apply(const QString &sourceFile, con
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -32,7 +32,7 @@ public:
DownmixFilter(void); DownmixFilter(void);
~DownmixFilter(void); ~DownmixFilter(void);
virtual FilterResult apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, volatile bool *abortFlag); virtual FilterResult apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, QAtomicInt &abortFlag);
private: private:
const QString m_binary; const QString m_binary;

View File

@ -57,7 +57,7 @@ NormalizeFilter::~NormalizeFilter(void)
{ {
} }
AbstractFilter::FilterResult NormalizeFilter::apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, volatile bool *abortFlag) AbstractFilter::FilterResult NormalizeFilter::apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -96,7 +96,7 @@ AbstractFilter::FilterResult NormalizeFilter::apply(const QString &sourceFile, c
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
NormalizeFilter(const int &peakVolume = -50, const bool &dnyAudNorm = false, const bool &channelsCoupled = true, const int &filterSize = 31); NormalizeFilter(const int &peakVolume = -50, const bool &dnyAudNorm = false, const bool &channelsCoupled = true, const int &filterSize = 31);
~NormalizeFilter(void); ~NormalizeFilter(void);
virtual FilterResult apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, volatile bool *abortFlag); virtual FilterResult apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, QAtomicInt &abortFlag);
private: private:
const QString m_binary; const QString m_binary;

View File

@ -61,7 +61,7 @@ ResampleFilter::~ResampleFilter(void)
{ {
} }
AbstractFilter::FilterResult ResampleFilter::apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, volatile bool *abortFlag) AbstractFilter::FilterResult ResampleFilter::apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -109,7 +109,7 @@ AbstractFilter::FilterResult ResampleFilter::apply(const QString &sourceFile, co
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
ResampleFilter(int samplingRate = 0, int bitDepth = 0); ResampleFilter(int samplingRate = 0, int bitDepth = 0);
~ResampleFilter(void); ~ResampleFilter(void);
virtual FilterResult apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, volatile bool *abortFlag); virtual FilterResult apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, QAtomicInt &abortFlag);
private: private:
const QString m_binary; const QString m_binary;

View File

@ -51,7 +51,7 @@ ToneAdjustFilter::~ToneAdjustFilter(void)
{ {
} }
AbstractFilter::FilterResult ToneAdjustFilter::apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, volatile bool *abortFlag) AbstractFilter::FilterResult ToneAdjustFilter::apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -82,7 +82,7 @@ AbstractFilter::FilterResult ToneAdjustFilter::apply(const QString &sourceFile,
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -30,7 +30,7 @@ public:
ToneAdjustFilter(int bass = 0, int treble = 0); ToneAdjustFilter(int bass = 0, int treble = 0);
~ToneAdjustFilter(void); ~ToneAdjustFilter(void);
virtual FilterResult apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, volatile bool *abortFlag); virtual FilterResult apply(const QString &sourceFile, const QString &outputFile, AudioFileModel_TechInfo *const formatInfo, QAtomicInt &abortFlag);
private: private:
const QString m_binary; const QString m_binary;

View File

@ -47,6 +47,9 @@
#include <float.h> #include <float.h>
#include <limits> #include <limits>
//Utils
#define IS_ABORTED (!(!m_abortFlag))
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
// Constructor // Constructor
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
@ -95,7 +98,6 @@ void CueSplitter::run()
{ {
m_bSuccess = false; m_bSuccess = false;
m_bAborted = false; m_bAborted = false;
m_abortFlag = false;
m_nTracksSuccess = 0; m_nTracksSuccess = 0;
m_nTracksSkipped = 0; m_nTracksSkipped = 0;
m_decompressedFiles.clear(); m_decompressedFiles.clear();
@ -130,7 +132,7 @@ void CueSplitter::run()
QString tempFile = QString("%1/~%2.wav").arg(m_outputDir, MUtils::next_rand_str()); QString tempFile = QString("%1/~%2.wav").arg(m_outputDir, MUtils::next_rand_str());
connect(decoder, SIGNAL(statusUpdated(int)), this, SLOT(handleUpdate(int)), Qt::DirectConnection); connect(decoder, SIGNAL(statusUpdated(int)), this, SLOT(handleUpdate(int)), Qt::DirectConnection);
if(decoder->decode(inputFileList.at(i), tempFile, &m_abortFlag)) if(decoder->decode(inputFileList.at(i), tempFile, m_abortFlag))
{ {
m_decompressedFiles.insert(inputFileList.at(i), tempFile); m_decompressedFiles.insert(inputFileList.at(i), tempFile);
m_tempFiles.append(tempFile); m_tempFiles.append(tempFile);
@ -154,7 +156,7 @@ void CueSplitter::run()
m_decompressedFiles.insert(inputFileList.at(i), inputFileList.at(i)); m_decompressedFiles.insert(inputFileList.at(i), inputFileList.at(i));
} }
if(m_abortFlag) if(IS_ABORTED)
{ {
m_bAborted = true; m_bAborted = true;
qWarning("The user has requested to abort the process!"); qWarning("The user has requested to abort the process!");
@ -219,7 +221,7 @@ void CueSplitter::run()
splitFile(outputFile, trackNo, trackFile, trackOffset, trackLength, trackMetaInfo, nTracksComplete); splitFile(outputFile, trackNo, trackFile, trackOffset, trackLength, trackMetaInfo, nTracksComplete);
emit progressValChanged(nTracksComplete += 10); emit progressValChanged(nTracksComplete += 10);
if(m_abortFlag) if(IS_ABORTED)
{ {
m_bAborted = true; m_bAborted = true;
qWarning("The user has requested to abort the process!"); qWarning("The user has requested to abort the process!");
@ -320,7 +322,7 @@ void CueSplitter::splitFile(const QString &output, const int trackNo, const QStr
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(m_abortFlag) if(IS_ABORTED)
{ {
process.kill(); process.kill();
qWarning("Process was aborted on user request!"); qWarning("Process was aborted on user request!");

View File

@ -61,7 +61,7 @@ private slots:
void handleUpdate(int progress); void handleUpdate(int progress);
public slots: public slots:
void abortProcess(void) { m_abortFlag = true; } void abortProcess(void) { m_abortFlag.ref(); }
private: private:
void splitFile(const QString &output, const int trackNo, const QString &file, const double offset, const double length, const AudioFileModel_MetaInfo &metaInfo, const int baseProgress); void splitFile(const QString &output, const int trackNo, const QString &file, const double offset, const double length, const AudioFileModel_MetaInfo &metaInfo, const int baseProgress);
@ -79,7 +79,7 @@ private:
bool m_bAborted; bool m_bAborted;
bool m_bSuccess; bool m_bSuccess;
volatile bool m_abortFlag; QAtomicInt m_abortFlag;
CueSheetModel *m_model; CueSheetModel *m_model;
QMap<QString,AudioFileModel> m_inputFilesInfo; QMap<QString,AudioFileModel> m_inputFilesInfo;

View File

@ -56,6 +56,9 @@ static inline void SAFE_APPEND_STRING(QStringList &list, const QString &str)
} }
} }
//Utils
#define IS_ABORTED (!(!m_bAborted))
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
// Constructor // Constructor
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
@ -68,9 +71,6 @@ FileAnalyzer::FileAnalyzer(const QStringList &inputFiles)
m_templateFile(NULL), m_templateFile(NULL),
m_pool(NULL) m_pool(NULL)
{ {
m_bSuccess = false;
m_bAborted = false;
m_filesAccepted = 0; m_filesAccepted = 0;
m_filesRejected = 0; m_filesRejected = 0;
m_filesDenied = 0; m_filesDenied = 0;
@ -144,7 +144,7 @@ const char *FileAnalyzer::g_tags_aud[] =
void FileAnalyzer::run() void FileAnalyzer::run()
{ {
m_bSuccess = false; m_bSuccess.fetchAndStoreOrdered(0);
m_tasksCounterNext = 0; m_tasksCounterNext = 0;
m_tasksCounterDone = 0; m_tasksCounterDone = 0;
@ -207,7 +207,7 @@ void FileAnalyzer::run()
m_pool->waitForDone(); m_pool->waitForDone();
//Was opertaion aborted? //Was opertaion aborted?
if(m_bAborted) if(IS_ABORTED)
{ {
qWarning("Operation cancelled by user!"); qWarning("Operation cancelled by user!");
return; return;
@ -228,8 +228,7 @@ void FileAnalyzer::run()
} }
qDebug("All files added.\n"); qDebug("All files added.\n");
m_bSuccess = true; m_bSuccess.fetchAndStoreOrdered(1);
QThread::msleep(333); QThread::msleep(333);
} }
@ -239,7 +238,7 @@ void FileAnalyzer::run()
bool FileAnalyzer::analyzeNextFile(void) bool FileAnalyzer::analyzeNextFile(void)
{ {
if(!(m_inputFiles.isEmpty() || m_bAborted)) if(!(m_inputFiles.isEmpty() || IS_ABORTED))
{ {
const unsigned int taskId = m_tasksCounterNext++; const unsigned int taskId = m_tasksCounterNext++;
const QString currentFile = QDir::fromNativeSeparators(m_inputFiles.takeFirst()); const QString currentFile = QDir::fromNativeSeparators(m_inputFiles.takeFirst());
@ -250,7 +249,7 @@ bool FileAnalyzer::analyzeNextFile(void)
m_timer->restart(); m_timer->restart();
} }
AnalyzeTask *task = new AnalyzeTask(taskId, currentFile, m_templateFile->filePath(), &m_bAborted); AnalyzeTask *task = new AnalyzeTask(taskId, currentFile, m_templateFile->filePath(), m_bAborted);
connect(task, SIGNAL(fileAnalyzed(const unsigned int, const int, AudioFileModel)), this, SLOT(taskFileAnalyzed(unsigned int, const int, AudioFileModel)), Qt::QueuedConnection); connect(task, SIGNAL(fileAnalyzed(const unsigned int, const int, AudioFileModel)), this, SLOT(taskFileAnalyzed(unsigned int, const int, AudioFileModel)), Qt::QueuedConnection);
connect(task, SIGNAL(taskCompleted(const unsigned int)), this, SLOT(taskThreadFinish(const unsigned int)), Qt::QueuedConnection); connect(task, SIGNAL(taskCompleted(const unsigned int)), this, SLOT(taskThreadFinish(const unsigned int)), Qt::QueuedConnection);
m_runningTaskIds.insert(taskId); m_pool->start(task); m_runningTaskIds.insert(taskId); m_pool->start(task);

View File

@ -49,7 +49,7 @@ public:
FileAnalyzer(const QStringList &inputFiles); FileAnalyzer(const QStringList &inputFiles);
~FileAnalyzer(void); ~FileAnalyzer(void);
void run(); void run();
bool getSuccess(void) { return (!isRunning()) && (!m_bAborted) && m_bSuccess; } bool getSuccess(void) { return (!isRunning()) && (!m_bAborted) && (!(!m_bSuccess)); }
unsigned int filesAccepted(void); unsigned int filesAccepted(void);
unsigned int filesRejected(void); unsigned int filesRejected(void);
@ -64,7 +64,7 @@ signals:
void progressMaxChanged(unsigned int); void progressMaxChanged(unsigned int);
public slots: public slots:
void abortProcess(void) { m_bAborted = true; exit(-1); } void abortProcess(void) { m_bAborted.ref(); exit(-1); }
private slots: private slots:
void initializeTasks(void); void initializeTasks(void);
@ -99,6 +99,6 @@ private:
static const char *g_tags_gen[]; static const char *g_tags_gen[];
static const char *g_tags_aud[]; static const char *g_tags_aud[];
volatile bool m_bAborted; QAtomicInt m_bAborted;
volatile bool m_bSuccess; QAtomicInt m_bSuccess;
}; };

View File

@ -54,12 +54,13 @@
#define IS_KEY(KEY) (key.compare(KEY, Qt::CaseInsensitive) == 0) #define IS_KEY(KEY) (key.compare(KEY, Qt::CaseInsensitive) == 0)
#define IS_SEC(SEC) (key.startsWith((SEC "_"), Qt::CaseInsensitive)) #define IS_SEC(SEC) (key.startsWith((SEC "_"), Qt::CaseInsensitive))
#define FIRST_TOK(STR) (STR.split(" ", QString::SkipEmptyParts).first()) #define FIRST_TOK(STR) (STR.split(" ", QString::SkipEmptyParts).first())
#define IS_ABORTED (!(!m_abortFlag))
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
// Constructor // Constructor
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
AnalyzeTask::AnalyzeTask(const int taskId, const QString &inputFile, const QString &templateFile, volatile bool *abortFlag) AnalyzeTask::AnalyzeTask(const int taskId, const QString &inputFile, const QString &templateFile, QAtomicInt &abortFlag)
: :
m_taskId(taskId), m_taskId(taskId),
m_inputFile(inputFile), m_inputFile(inputFile),
@ -109,7 +110,7 @@ void AnalyzeTask::run_ex(void)
AudioFileModel file = analyzeFile(currentFile, &fileType); AudioFileModel file = analyzeFile(currentFile, &fileType);
if(*m_abortFlag) if(IS_ABORTED)
{ {
qWarning("Operation cancelled by user!"); qWarning("Operation cancelled by user!");
return; return;
@ -203,7 +204,7 @@ const AudioFileModel AnalyzeTask::analyzeFile(const QString &filePath, int *type
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*m_abortFlag) if(IS_ABORTED)
{ {
process.kill(); process.kill();
qWarning("Process was aborted on user request!"); qWarning("Process was aborted on user request!");
@ -530,7 +531,7 @@ bool AnalyzeTask::analyzeAvisynthFile(const QString &filePath, AudioFileModel &i
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*m_abortFlag) if(IS_ABORTED)
{ {
process.kill(); process.kill();
qWarning("Process was aborted on user request!"); qWarning("Process was aborted on user request!");

View File

@ -45,7 +45,7 @@ class AnalyzeTask: public QObject, public QRunnable
Q_OBJECT Q_OBJECT
public: public:
AnalyzeTask(const int taskId, const QString &inputFile, const QString &templateFile, volatile bool *abortFlag); AnalyzeTask(const int taskId, const QString &inputFile, const QString &templateFile, QAtomicInt &abortFlag);
~AnalyzeTask(void); ~AnalyzeTask(void);
enum fileType_t enum fileType_t
@ -81,5 +81,5 @@ private:
const QString m_templateFile; const QString m_templateFile;
const QString m_inputFile; const QString m_inputFile;
volatile bool *m_abortFlag; QAtomicInt &m_abortFlag;
}; };

View File

@ -56,6 +56,7 @@
#define DIFF(X,Y) ((X > Y) ? (X-Y) : (Y-X)) #define DIFF(X,Y) ((X > Y) ? (X-Y) : (Y-X))
#define IS_WAVE(X) ((X.containerType().compare("Wave", Qt::CaseInsensitive) == 0) && (X.audioType().compare("PCM", Qt::CaseInsensitive) == 0)) #define IS_WAVE(X) ((X.containerType().compare("Wave", Qt::CaseInsensitive) == 0) && (X.audioType().compare("PCM", Qt::CaseInsensitive) == 0))
#define IS_ABORTED (!(!m_aborted))
#define STRDEF(STR,DEF) ((!STR.isEmpty()) ? STR : DEF) #define STRDEF(STR,DEF) ((!STR.isEmpty()) ? STR : DEF)
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
@ -74,7 +75,6 @@ ProcessThread::ProcessThread(const AudioFileModel &audioFile, const QString &out
m_overwriteMode(OverwriteMode_KeepBoth), m_overwriteMode(OverwriteMode_KeepBoth),
m_keepDateTime(false), m_keepDateTime(false),
m_initialized(-1), m_initialized(-1),
m_aborted(false),
m_propDetect(new WaveProperties()) m_propDetect(new WaveProperties())
{ {
connect(m_encoder, SIGNAL(statusUpdated(int)), this, SLOT(handleUpdate(int)), Qt::DirectConnection); connect(m_encoder, SIGNAL(statusUpdated(int)), this, SLOT(handleUpdate(int)), Qt::DirectConnection);
@ -110,10 +110,8 @@ ProcessThread::~ProcessThread(void)
bool ProcessThread::init(void) bool ProcessThread::init(void)
{ {
if(m_initialized < 0) if(m_initialized.testAndSetOrdered((-1), 0))
{ {
m_initialized = 0;
//Initialize job status //Initialize job status
qDebug("Process thread %s has started.", m_jobId.toString().toLatin1().constData()); qDebug("Process thread %s has started.", m_jobId.toString().toLatin1().constData());
emit processStateInitialized(m_jobId, QFileInfo(m_audioFile.filePath()).fileName(), tr("Starting..."), ProgressModel::JobRunning); emit processStateInitialized(m_jobId, QFileInfo(m_audioFile.filePath()).fileName(), tr("Starting..."), ProgressModel::JobRunning);
@ -132,16 +130,15 @@ bool ProcessThread::init(void)
bool ProcessThread::start(QThreadPool *const pool) bool ProcessThread::start(QThreadPool *const pool)
{ {
//Make sure object was initialized correctly //Make sure object was initialized correctly
if(m_initialized < 0) if (m_initialized < 0)
{ {
MUTILS_THROW("Object not initialized yet!"); MUTILS_THROW("Object not initialized yet!");
} }
if(m_initialized < 1) if (m_initialized.testAndSetOrdered(0, 1))
{ {
m_initialized = 1;
m_outFileName.clear(); m_outFileName.clear();
m_aborted.fetchAndStoreOrdered(0);
bool bSuccess = false; bool bSuccess = false;
//Generate output file name //Generate output file name
@ -228,7 +225,7 @@ void ProcessThread::processFile()
connect(decoder, SIGNAL(statusUpdated(int)), this, SLOT(handleUpdate(int)), Qt::DirectConnection); connect(decoder, SIGNAL(statusUpdated(int)), this, SLOT(handleUpdate(int)), Qt::DirectConnection);
connect(decoder, SIGNAL(messageLogged(QString)), this, SLOT(handleMessage(QString)), Qt::DirectConnection); connect(decoder, SIGNAL(messageLogged(QString)), this, SLOT(handleMessage(QString)), Qt::DirectConnection);
bSuccess = decoder->decode(sourceFile, tempFile, &m_aborted); bSuccess = decoder->decode(sourceFile, tempFile, m_aborted);
MUTILS_DELETE(decoder); MUTILS_DELETE(decoder);
if(bSuccess) if(bSuccess)
@ -259,12 +256,12 @@ void ProcessThread::processFile()
// Update audio properties after decode // Update audio properties after decode
//----------------------------------------------------- //-----------------------------------------------------
if(bSuccess && !m_aborted && IS_WAVE(m_audioFile.techInfo())) if(bSuccess && (!m_aborted) && IS_WAVE(m_audioFile.techInfo()))
{ {
if(m_encoder->supportedSamplerates() || m_encoder->supportedBitdepths() || m_encoder->supportedChannelCount() || m_encoder->needsTimingInfo() || !m_filters.isEmpty()) if(m_encoder->supportedSamplerates() || m_encoder->supportedBitdepths() || m_encoder->supportedChannelCount() || m_encoder->needsTimingInfo() || !m_filters.isEmpty())
{ {
m_currentStep = AnalyzeStep; m_currentStep = AnalyzeStep;
bSuccess = m_propDetect->detect(sourceFile, &m_audioFile.techInfo(), &m_aborted); bSuccess = m_propDetect->detect(sourceFile, &m_audioFile.techInfo(), m_aborted);
if(bSuccess) if(bSuccess)
{ {
@ -301,7 +298,7 @@ void ProcessThread::processFile()
connect(poFilter, SIGNAL(statusUpdated(int)), this, SLOT(handleUpdate(int)), Qt::DirectConnection); connect(poFilter, SIGNAL(statusUpdated(int)), this, SLOT(handleUpdate(int)), Qt::DirectConnection);
connect(poFilter, SIGNAL(messageLogged(QString)), this, SLOT(handleMessage(QString)), Qt::DirectConnection); connect(poFilter, SIGNAL(messageLogged(QString)), this, SLOT(handleMessage(QString)), Qt::DirectConnection);
const AbstractFilter::FilterResult filterResult = poFilter->apply(sourceFile, tempFile, &m_audioFile.techInfo(), &m_aborted); const AbstractFilter::FilterResult filterResult = poFilter->apply(sourceFile, tempFile, &m_audioFile.techInfo(), m_aborted);
switch (filterResult) switch (filterResult)
{ {
case AbstractFilter::FILTER_SUCCESS: case AbstractFilter::FILTER_SUCCESS:
@ -320,14 +317,14 @@ void ProcessThread::processFile()
// Encode audio file // Encode audio file
//----------------------------------------------------- //-----------------------------------------------------
if(bSuccess && !m_aborted) if(bSuccess && (!m_aborted))
{ {
m_currentStep = EncodingStep; m_currentStep = EncodingStep;
bSuccess = m_encoder->encode(sourceFile, m_audioFile.metaInfo(), m_audioFile.techInfo().duration(), m_audioFile.techInfo().audioChannels(), m_outFileName, &m_aborted); bSuccess = m_encoder->encode(sourceFile, m_audioFile.metaInfo(), m_audioFile.techInfo().duration(), m_audioFile.techInfo().audioChannels(), m_outFileName, m_aborted);
} }
//Clean-up //Clean-up
if((!bSuccess) || m_aborted) if((!bSuccess) || IS_ABORTED)
{ {
QFileInfo fileInfo(m_outFileName); QFileInfo fileInfo(m_outFileName);
if(fileInfo.exists() && (fileInfo.size() < 1024)) if(fileInfo.exists() && (fileInfo.size() < 1024))
@ -355,7 +352,7 @@ void ProcessThread::processFile()
MUtils::OS::sleep_ms(12); MUtils::OS::sleep_ms(12);
//Report result //Report result
emit processStateChanged(m_jobId, (m_aborted ? tr("Aborted!") : (bSuccess ? tr("Done.") : tr("Failed!"))), ((bSuccess && !m_aborted) ? ProgressModel::JobComplete : ProgressModel::JobFailed)); emit processStateChanged(m_jobId, (IS_ABORTED ? tr("Aborted!") : (bSuccess ? tr("Done.") : tr("Failed!"))), ((bSuccess && (!m_aborted)) ? ProgressModel::JobComplete : ProgressModel::JobFailed));
emit processStateFinished(m_jobId, m_outFileName, (bSuccess ? 1 : 0)); emit processStateFinished(m_jobId, m_outFileName, (bSuccess ? 1 : 0));
qDebug("Process thread is done."); qDebug("Process thread is done.");

View File

@ -54,7 +54,7 @@ public:
void addFilter(AbstractFilter *filter); void addFilter(AbstractFilter *filter);
public slots: public slots:
void abort(void) { m_aborted = true; } void abort(void) { m_aborted.ref(); }
private slots: private slots:
void handleUpdate(int progress); void handleUpdate(int progress);
@ -96,8 +96,8 @@ private:
bool insertDownsampleFilter(const unsigned int *const supportedSamplerates, const unsigned int *const supportedBitdepths); bool insertDownsampleFilter(const unsigned int *const supportedSamplerates, const unsigned int *const supportedBitdepths);
bool updateFileTime(const QString &originalFile, const QString &modifiedFile); bool updateFileTime(const QString &originalFile, const QString &modifiedFile);
volatile bool m_aborted; QAtomicInt m_aborted;
volatile int m_initialized; QAtomicInt m_initialized;
const QUuid m_jobId; const QUuid m_jobId;
AudioFileModel m_audioFile; AudioFileModel m_audioFile;

View File

@ -51,6 +51,11 @@ signals:
protected: protected:
static const int m_processTimeoutInterval = 600000; static const int m_processTimeoutInterval = 600000;
static __forceinline bool checkFlag(QAtomicInt &flag)
{
return (!(!flag));
}
private: private:
static QScopedPointer<MUtils::JobObject> s_jobObjectInstance; static QScopedPointer<MUtils::JobObject> s_jobObjectInstance;
static QScopedPointer<QElapsedTimer> s_startProcessTimer; static QScopedPointer<QElapsedTimer> s_startProcessTimer;

View File

@ -47,7 +47,7 @@ WaveProperties::~WaveProperties(void)
{ {
} }
bool WaveProperties::detect(const QString &sourceFile, AudioFileModel_TechInfo *info, volatile bool *abortFlag) bool WaveProperties::detect(const QString &sourceFile, AudioFileModel_TechInfo *info, QAtomicInt &abortFlag)
{ {
QProcess process; QProcess process;
QStringList args; QStringList args;
@ -72,7 +72,7 @@ bool WaveProperties::detect(const QString &sourceFile, AudioFileModel_TechInfo *
while(process.state() != QProcess::NotRunning) while(process.state() != QProcess::NotRunning)
{ {
if(*abortFlag) if(checkFlag(abortFlag))
{ {
process.kill(); process.kill();
bAborted = true; bAborted = true;

View File

@ -33,7 +33,7 @@ public:
WaveProperties(void); WaveProperties(void);
~WaveProperties(void); ~WaveProperties(void);
bool detect(const QString &sourceFile, AudioFileModel_TechInfo *info, volatile bool *abortFlag); bool detect(const QString &sourceFile, AudioFileModel_TechInfo *info, QAtomicInt &abortFlag);
private: private:
const QString m_binary; const QString m_binary;