From d2aaad3398708bf98ef1954f3cef9ee35c630b37 Mon Sep 17 00:00:00 2001 From: lordmulder Date: Tue, 18 Jan 2011 22:07:30 +0100 Subject: [PATCH] Added support for The True Audio input. --- LameXP.vcproj | 8 +++ etc/Translation/Blank.ts | 4 ++ etc/Translation/LameXP_DE.ts | 4 ++ etc/Translation/LameXP_ES.ts | 4 ++ etc/Translation/LameXP_FR.ts | 4 ++ etc/Translation/LameXP_IT.ts | 4 ++ etc/Translation/update.lst | 2 + res/tools/ttaenc.exe | Bin 18432 -> 61952 bytes src/Config.h | 2 +- src/Decoder_TTA.cpp | 127 ++++++++++++++++++++++++++++++++++ src/Decoder_TTA.h | 38 ++++++++++ src/Dialog_About.cpp | 7 ++ src/Registry_Decoder.cpp | 9 ++- src/Thread_Initialization.cpp | 2 +- 14 files changed, 210 insertions(+), 5 deletions(-) create mode 100644 src/Decoder_TTA.cpp create mode 100644 src/Decoder_TTA.h diff --git a/LameXP.vcproj b/LameXP.vcproj index 0f7f6953..99533c97 100644 --- a/LameXP.vcproj +++ b/LameXP.vcproj @@ -318,6 +318,10 @@ RelativePath=".\src\Decoder_MP3.cpp" > + + @@ -542,6 +546,10 @@ RelativePath=".\src\Decoder_MP3.h" > + + diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts index ea7f8dcb..3ff42489 100644 --- a/etc/Translation/Blank.ts +++ b/etc/Translation/Blank.ts @@ -127,6 +127,10 @@ Freely available source code, simple SDK and non-restrictive licensing. + + The True Audio - Lossless Audio Codec + + MediaInfo - Media File Analysis Tool diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts index 13b36cb9..37bd1a1d 100644 --- a/etc/Translation/LameXP_DE.ts +++ b/etc/Translation/LameXP_DE.ts @@ -155,6 +155,10 @@ Completely open audio compression format. Komplett offenes Audio Kompressionsformat. + + The True Audio - Lossless Audio Codec + + AudioFileModel diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts index c1fd534e..f8ee38b7 100644 --- a/etc/Translation/LameXP_ES.ts +++ b/etc/Translation/LameXP_ES.ts @@ -156,6 +156,10 @@ Completely open audio compression format. Formato de comresiĆ³n de audio completamente abierto. + + The True Audio - Lossless Audio Codec + + AudioFileModel diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts index 785463c1..c1c00636 100644 --- a/etc/Translation/LameXP_FR.ts +++ b/etc/Translation/LameXP_FR.ts @@ -158,6 +158,10 @@ Completely open audio compression format. + + The True Audio - Lossless Audio Codec + + AudioFileModel diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts index cd6422de..de560a9f 100644 --- a/etc/Translation/LameXP_IT.ts +++ b/etc/Translation/LameXP_IT.ts @@ -155,6 +155,10 @@ Completely open audio compression format. + + The True Audio - Lossless Audio Codec + + AudioFileModel diff --git a/etc/Translation/update.lst b/etc/Translation/update.lst index 54ddaf07..9b0a21e7 100644 --- a/etc/Translation/update.lst +++ b/etc/Translation/update.lst @@ -13,6 +13,7 @@ ..\..\src\Decoder_FLAC.cpp ..\..\src\Decoder_MAC.cpp ..\..\src\Decoder_MP3.cpp +..\..\src\Decoder_TTA.cpp ..\..\src\Decoder_Vorbis.cpp ..\..\src\Decoder_Wave.cpp ..\..\src\Decoder_WavPack.cpp @@ -60,6 +61,7 @@ ..\..\src\Decoder_FLAC.h ..\..\src\Decoder_MAC.h ..\..\src\Decoder_MP3.h +..\..\src\Decoder_TTA.h ..\..\src\Decoder_Vorbis.h ..\..\src\Decoder_Wave.h ..\..\src\Decoder_WavPack.h diff --git a/res/tools/ttaenc.exe b/res/tools/ttaenc.exe index 598e21d17d979d066c51b8f09016c2a7e5f4cffb..685d176cf71552268966d04597d0b67d48fbd91f 100644 GIT binary patch literal 61952 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 z%0D4CnA(hCixyg~ZVQ?{r%WZUe{<#Xz^3&W6bZtWfn2v|c4%ZI1ehFgwV)EKMav1K z6RAocec8wOd^73<**W?y0kB-*ZjXF=v?|k6Hqb4yHPnFRRljcPU)fH!#RlOWNL|DX8 zq9G$D=>mxybJyRAlN(LWIqbSL>rQlauv?)SQY`4BseGoQ+))cfT(Ao!jFV0in;3}M zO+W`GI09&vw5;R(2c?8+9CvH{6f;M@jmcbbmn2L+cY5zFzL^9)&yn@p*)Z~J`yR&gmxpV-T92Fq^ zoA~=K$z3aegyN?I}6d;_p&f7qeRx|8G_$!5of(Tf2-#oIf7qfp*?|a6=JY;zz zuWkCa{C9(ue-nVpegXjf?`HhJz{CD%KmY}B z4f>3KO8zr`GNgbI5Ssf(1|SH$9yVkym&S}@q+pYoj0CQ&2A`9# zolA+OG09v5CY{1zaaqwk0}6||oy=t#CK_viw$TK7G>yv(pmDf#R)VdDv7wR14slT| z)`rL7b9t@_(X9VNHPe6O19Ng|6h4Q}OZlUN1)U9twwn)@LZgy6^h7#?7DMCyEAiix z9h1SVJa9+cX^Aujma(z4)gW_S6B1eRG>!(APbW||Ebg`%(PRdfrm@2Y_b=`LocUk+ z|3>^TrQ6{C)4tl^{&mn`b{pJ3&*u&j;h)!MWBoHz3YZ1`f8~%_Qh*%jwLxzIdI!+^ zfPTZdIr?}yx^J|zy1N5_JBv(pr~ffOgX+$-Kb;BwI%*VcyN9Mt`{o(O-+`TvXmchA880Qhw@fdBvi literal 18432 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 +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +// +// http://www.gnu.org/licenses/gpl-2.0.txt +/////////////////////////////////////////////////////////////////////////////// + +#include "Decoder_TTA.h" + +#include "Global.h" + +#include +#include +#include +#include + +TTADecoder::TTADecoder(void) +: + m_binary(lamexp_lookup_tool("ttaenc.exe")) +{ + if(m_binary.isEmpty()) + { + throw "Error initializing TTA decoder. Tool 'ttaenc.exe' is not registred!"; + } +} + +TTADecoder::~TTADecoder(void) +{ +} + +bool TTADecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag) +{ + QProcess process; + QStringList args; + + args << "-d"; + args << "-o" << QDir::toNativeSeparators(outputFile); + args << QDir::toNativeSeparators(sourceFile); + + if(!startProcess(process, m_binary, args)) + { + return false; + } + + bool bTimeout = false; + bool bAborted = false; + + //The TTA Decoder doesn't actually send any status updates :-[ + emit statusUpdated(20 + (QUuid::createUuid().data1 % 80)); + + while(process.state() != QProcess::NotRunning) + { + if(*abortFlag) + { + process.kill(); + bAborted = true; + emit messageLogged("\nABORTED BY USER !!!"); + break; + } + process.waitForReadyRead(180000); + if(!process.bytesAvailable() && process.state() == QProcess::Running) + { + process.kill(); + qWarning("TTAEnc process timed out <-- killing!"); + bTimeout = true; + break; + } + while(process.bytesAvailable() > 0) + { + QByteArray line = process.readLine(); + QString text = QString::fromUtf8(line.constData()).simplified(); + if(!text.isEmpty()) + { + emit messageLogged(text); + } + } + } + + process.waitForFinished(); + if(process.state() != QProcess::NotRunning) + { + process.kill(); + process.waitForFinished(-1); + } + + emit statusUpdated(100); + emit messageLogged(QString().sprintf("\nExited with code: 0x%04X", process.exitCode())); + + if(bTimeout || bAborted || process.exitStatus() != QProcess::NormalExit || QFileInfo(outputFile).size() == 0) + { + return false; + } + + return true; +} + +bool TTADecoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion) +{ + if(containerType.compare("TTA", Qt::CaseInsensitive) == 0) + { + if(formatType.compare("TTA", Qt::CaseInsensitive) == 0) + { + return true; + } + } + + return false; +} + +QStringList TTADecoder::supportedTypes(void) +{ + return QStringList() << "The True Audio (*.tta)"; +} diff --git a/src/Decoder_TTA.h b/src/Decoder_TTA.h new file mode 100644 index 00000000..12663eb5 --- /dev/null +++ b/src/Decoder_TTA.h @@ -0,0 +1,38 @@ +/////////////////////////////////////////////////////////////////////////////// +// LameXP - Audio Encoder Front-End +// Copyright (C) 2004-2011 LoRd_MuldeR +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +// +// http://www.gnu.org/licenses/gpl-2.0.txt +/////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include "Decoder_Abstract.h" + +class TTADecoder : public AbstractDecoder +{ +public: + TTADecoder(void); + ~TTADecoder(void); + + virtual bool decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag); + static bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); + static QStringList supportedTypes(void); + +private: + const QString m_binary; +}; diff --git a/src/Dialog_About.cpp b/src/Dialog_About.cpp index fa90031e..e9ac5cab 100644 --- a/src/Dialog_About.cpp +++ b/src/Dialog_About.cpp @@ -296,6 +296,13 @@ void AboutDialog::showMoreAbout(void) "http://www.monkeysaudio.com/" ); moreAboutText += makeToolText + ( + tr("The True Audio - Lossless Audio Codec"), + "ttaenc.exe", "v?.?.?", + tr("Released under the terms of the GNU Lesser General Public License."), + "http://tta.sourceforge.net/" + ); + moreAboutText += makeToolText ( tr("MediaInfo - Media File Analysis Tool"), "mediainfo_i386.exe", "v?.?.??", diff --git a/src/Registry_Decoder.cpp b/src/Registry_Decoder.cpp index a0d55cde..52776106 100644 --- a/src/Registry_Decoder.cpp +++ b/src/Registry_Decoder.cpp @@ -22,15 +22,16 @@ #include "Registry_Decoder.h" #include "Decoder_AAC.h" +#include "Decoder_AC3.h" #include "Decoder_ADPCM.h" +#include "Decoder_FLAC.h" #include "Decoder_MAC.h" #include "Decoder_MP3.h" +#include "Decoder_TTA.h" #include "Decoder_Vorbis.h" -#include "Decoder_FLAC.h" -#include "Decoder_AC3.h" -#include "Decoder_WMA.h" #include "Decoder_Wave.h" #include "Decoder_WavPack.h" +#include "Decoder_WMA.h" #include #include @@ -48,6 +49,7 @@ AbstractDecoder *DecoderRegistry::lookup(const QString &containerType, const QSt PROBE_DECODER(FLACDecoder); PROBE_DECODER(WavPackDecoder); PROBE_DECODER(MACDecoder); + PROBE_DECODER(TTADecoder); PROBE_DECODER(WMADecoder); PROBE_DECODER(ADPCMDecoder); PROBE_DECODER(WaveDecoder); @@ -67,6 +69,7 @@ QStringList DecoderRegistry::getSupportedTypes(void) types << GET_FILETYPES(FLACDecoder); types << GET_FILETYPES(WavPackDecoder); types << GET_FILETYPES(MACDecoder); + types << GET_FILETYPES(TTADecoder); types << GET_FILETYPES(WMADecoder); types << GET_FILETYPES(ADPCMDecoder); diff --git a/src/Thread_Initialization.cpp b/src/Thread_Initialization.cpp index bb24fcbe..1279704e 100644 --- a/src/Thread_Initialization.cpp +++ b/src/Thread_Initialization.cpp @@ -68,7 +68,7 @@ static const struct lamexp_tool_t g_lamexp_tools[] = {"2d08c3586f9cf99f2e4c89ac54eeb595f63aef61", "sox.exe", 1431}, {"346ce516281c97e92e1b8957ddeca52edcf2d056", "speexdec.exe", UINT_MAX}, {"8a74b767cfe88bf88c068fdae0de02d65589d25e", "takc.exe", UINT_MAX}, - {"1c5cedb56358a0e8c4590a863a97c94d7d7e98b2", "ttaenc.exe", UINT_MAX}, + {"d6e0de1e7a2d9dee10d06ae0b6b4f93b63205920", "ttaenc.exe", 341}, {"8c842eef65248b46fa6cb9a9e5714f575672d999", "valdec.exe", 31}, {"8159f4e824b3e343ece95ba6dbb5e16da9c4866e", "volumax.exe", UINT_MAX}, {"62e2805d1b2eb2a4d86a5ca6e6ea58010d05d2a7", "wget.exe", UINT_MAX},