Switch to using QAtomicInc for abort flags.
This commit is contained in:
parent
59d99afe8e
commit
a0992d475e
@ -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
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
return ptr->abortFlag->operator!();
|
||||||
}
|
}
|
||||||
ptr->pInstance->updateProgress(progress);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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!");
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
@ -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!");
|
||||||
|
@ -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;
|
||||||
};
|
};
|
||||||
|
@ -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.");
|
||||||
|
@ -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;
|
||||||
|
@ -50,6 +50,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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
Loading…
Reference in New Issue
Block a user