Experimental support for dcaenc, by Alexander E. Patrakov <patrakov@gmail.com>.

This commit is contained in:
LoRd_MuldeR 2011-12-22 21:53:25 +01:00
parent a392864916
commit a0a29b9551
35 changed files with 1252 additions and 932 deletions

View File

@ -275,6 +275,7 @@ del "$(TargetDir)imageformats\q???d4.dll"
<ClCompile Include="src\Encoder_AAC_QAAC.cpp" />
<ClCompile Include="src\Encoder_Abstract.cpp" />
<ClCompile Include="src\Encoder_AC3.cpp" />
<ClCompile Include="src\Encoder_DCA.cpp" />
<ClCompile Include="src\Encoder_FLAC.cpp" />
<ClCompile Include="src\Encoder_MP3.cpp" />
<ClCompile Include="src\Encoder_Vorbis.cpp" />
@ -327,6 +328,7 @@ del "$(TargetDir)imageformats\q???d4.dll"
<ClCompile Include="tmp\MOC_Encoder_AAC_QAAC.cpp" />
<ClCompile Include="tmp\MOC_Encoder_Abstract.cpp" />
<ClCompile Include="tmp\MOC_Encoder_AC3.cpp" />
<ClCompile Include="tmp\MOC_Encoder_DCA.cpp" />
<ClCompile Include="tmp\MOC_Encoder_FLAC.cpp" />
<ClCompile Include="tmp\MOC_Encoder_MP3.cpp" />
<ClCompile Include="tmp\MOC_Encoder_Vorbis.cpp" />
@ -451,6 +453,17 @@ del "$(TargetDir)imageformats\q???d4.dll"
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
</CustomBuild>
<CustomBuild Include="src\Encoder_DCA.h">
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
</CustomBuild>
<ClInclude Include="src\Tools.h" />
<CustomBuild Include="src\Tool_WaveProperties.h">
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>

View File

@ -346,6 +346,12 @@
<ClCompile Include="tmp\MOC_Tool_WaveProperties.cpp">
<Filter>Generated Files\MOC</Filter>
</ClCompile>
<ClCompile Include="src\Encoder_DCA.cpp">
<Filter>Source Files\Encoders</Filter>
</ClCompile>
<ClCompile Include="tmp\MOC_Encoder_DCA.cpp">
<Filter>Generated Files\MOC</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\Config.h">
@ -644,6 +650,9 @@
<CustomBuild Include="src\Tool_WaveProperties.h">
<Filter>Header Files\Misc</Filter>
</CustomBuild>
<CustomBuild Include="src\Encoder_DCA.h">
<Filter>Header Files\Encoders</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<None Include="res\MainIcon.ico" />

View File

@ -19,6 +19,7 @@ a:visited { color: #0000EE; }
<a name="4.04"></a>Changes between v4.03 and v4.04:<br><ul>
<li>Added support for the QAAC Encoder, requires QuickTime v7.7.1 or newer (see <a href="FAQ.html#71a113b0" target="_blank">FAQ doc</a> for details)
<li>Added Chinese and Taiwanese translations, thanks to 456Vv &lt;123@456vv.com&gt;
<li>Added experimental support for dcaenc, created by Alexander E. Patrakov &lt;patrakov@gmail.com&gt;
<li>Updated Qt runtime libraries to v4.8.0 (2011-12-15), compiled with MSVC 10.0
<li>Updated LAME encoder to v3.99.2 Final (2011-11-18), compiled with ICL 12.1.7 and MSVC 10.0 (<a href="http://lame.cvs.sourceforge.net/viewvc/lame/lame/doc/html/history.html?revision=1.134" target="_blank">details</a>)
<li>Updated MediaInfo to v0.7.52 (2011-12-19), compiled with ICL 12.1.6 and MSVC 10.0

File diff suppressed because it is too large Load Diff

View File

@ -87,10 +87,6 @@
<source>Open and patent-free lossless audio compression technology.</source>
<translation>Offene und patentfreie Technlogie zur verlustfreien Audiokompression.</translation>
</message>
<message>
<source>By Mark James, released under the Creative Commons &apos;by&apos; License.</source>
<translation>Von Mark James, veröffentlicht unter der Creative Commons &apos;by&apos; Lizenz.</translation>
</message>
<message>
<source>About Third-party Software</source>
<translation>Über Drittsoftware</translation>
@ -191,10 +187,6 @@
<source>GNU Wget - Software for retrieving files using HTTP</source>
<translation>GNU Wget - Software für den Datei-Download über HTTP</translation>
</message>
<message>
<source>Silk Icons - Over 700 icons in PNG format</source>
<translation>Silk Icons - Über 700 Symbole im PNG Format</translation>
</message>
<message>
<source>Note: This demo (pre-release) version of LameXP will expire at %1. Still %2 days left.</source>
<translation>Hinweise: Diese Demo (Test) Version von LameXP läuft am %1 ab. Noch %2 Tage übrig.</translation>
@ -227,6 +219,14 @@
<source>avs2wav - Avisynth to Wave Audio converter</source>
<translation>avs2wav - Avisynth zu Wave Audio Konverter</translation>
</message>
<message>
<source>dcaenc</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1730,6 +1730,10 @@
<source>Skipping update check this time, please be patient...</source>
<translation>Update-Überprüfung wird übersprungen, bitte warten...</translation>
</message>
<message>
<source>DCA Enc</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -87,10 +87,6 @@
<source>Open and patent-free lossless audio compression technology.</source>
<translation>Tecnología de codificación de audio sin pérdidas, abierta y libre de patentes.</translation>
</message>
<message>
<source>By Mark James, released under the Creative Commons &apos;by&apos; License.</source>
<translation>Por Mark James, distribuido bajo Licencia Creative Commons.</translation>
</message>
<message>
<source>About Third-party Software</source>
<translation>Acerca del Software de terceros</translation>
@ -167,10 +163,6 @@
<source>GnuPG - The GNU Privacy Guard</source>
<translation>GnuPG - Guardián de privacidad GNU</translation>
</message>
<message>
<source>Silk Icons - Over 700 icons in PNG format</source>
<translation>Silk Icons - Más de 700 iconos en formato PNG</translation>
</message>
<message>
<source>Nero AAC Reference MPEG-4 Encoder</source>
<translation>Codificador MPEG-4 Nero AAC</translation>
@ -227,6 +219,14 @@
<source>avs2wav - Avisynth to Wave Audio converter</source>
<translation>avs2wav - Conversor de Avisynth a WAV</translation>
</message>
<message>
<source>dcaenc</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1729,6 +1729,10 @@
<source>Skipping update check this time, please be patient...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA Enc</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -88,10 +88,6 @@
<source>Open and patent-free lossless audio compression technology.</source>
<translation>Technologie de compression audio sans perte ouverte et libre de brevets.</translation>
</message>
<message>
<source>By Mark James, released under the Creative Commons &apos;by&apos; License.</source>
<translation>Par Mark James, publié sous licence Creative Commons.</translation>
</message>
<message>
<source>About Third-party Software</source>
<translation>A propos des logiciels tiers</translation>
@ -171,10 +167,6 @@
<source>GnuPG - The GNU Privacy Guard</source>
<translation>GnuPG - The GNU Privacy Guard</translation>
</message>
<message>
<source>Silk Icons - Over 700 icons in PNG format</source>
<translation>Silk Icons - Plus de 700 icônes au format PNG</translation>
</message>
<message>
<source>Nero AAC Reference MPEG-4 Encoder</source>
<translation>Encodeur de référence MPEG-4 Nero AAC</translation>
@ -231,6 +223,14 @@
<source>avs2wav - Avisynth to Wave Audio converter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>dcaenc</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1739,6 +1739,10 @@ Ouvrir le dossier récursivement...</translation>
<source>Skipping update check this time, please be patient...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA Enc</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -87,10 +87,6 @@
<source>Open and patent-free lossless audio compression technology.</source>
<translation>Tecnologia di compressione audio libera e non vincolata da brevetti.</translation>
</message>
<message>
<source>By Mark James, released under the Creative Commons &apos;by&apos; License.</source>
<translation>Di Mark James, rilasciato sotto Licenza &apos;by&apos; Creative Commons.</translation>
</message>
<message>
<source>About Third-party Software</source>
<translation>Riguardo Software Terze Parti</translation>
@ -167,10 +163,6 @@
<source>GnuPG - The GNU Privacy Guard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Silk Icons - Over 700 icons in PNG format</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Nero AAC Reference MPEG-4 Encoder</source>
<translation type="unfinished"></translation>
@ -227,6 +219,14 @@
<source>avs2wav - Avisynth to Wave Audio converter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>dcaenc</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1730,6 +1730,10 @@
<source>Skipping update check this time, please be patient...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA Enc</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -175,14 +175,6 @@
<source>GNU Wget - Software for retrieving files using HTTP</source>
<translation type="unfinished">GNU Wget - HTTP를 </translation>
</message>
<message>
<source>Silk Icons - Over 700 icons in PNG format</source>
<translation type="unfinished">Silk Icons - PNG 700 </translation>
</message>
<message>
<source>By Mark James, released under the Creative Commons &apos;by&apos; License.</source>
<translation type="unfinished">By Mark James, &apos;by&apos; .</translation>
</message>
<message>
<source>LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.</source>
<translation type="unfinished">LameXP LoRd_MuldeR에게 . LameXP에 .</translation>
@ -227,6 +219,14 @@
<source>avs2wav - Avisynth to Wave Audio converter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>dcaenc</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1729,6 +1729,10 @@
<source>Skipping update check this time, please be patient...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA Enc</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

File diff suppressed because it is too large Load Diff

View File

@ -175,14 +175,6 @@
<source>GNU Wget - Software for retrieving files using HTTP</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Silk Icons - Over 700 icons in PNG format</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>By Mark James, released under the Creative Commons &apos;by&apos; License.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.</source>
<translation type="unfinished">LameXP защищена авторским правом LoRd_MuldeR. Авторское право на программное обеспечение третьих сторон, используемое в LameXP, принадлежит индивидуальным авторам.</translation>
@ -227,6 +219,14 @@
<source>avs2wav - Avisynth to Wave Audio converter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>dcaenc</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1735,6 +1735,10 @@
<source>Skipping update check this time, please be patient...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA Enc</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -87,10 +87,6 @@
<source>Open and patent-free lossless audio compression technology.</source>
<translation>.</translation>
</message>
<message>
<source>By Mark James, released under the Creative Commons &apos;by&apos; License.</source>
<translation>By Mark James,.</translation>
</message>
<message>
<source>About Third-party Software</source>
<translation></translation>
@ -163,10 +159,6 @@
<source>GnuPG - The GNU Privacy Guard</source>
<translation>GnuPG - GNU </translation>
</message>
<message>
<source>Silk Icons - Over 700 icons in PNG format</source>
<translation>Silk Icons - 700 PNG </translation>
</message>
<message>
<source>Nero AAC Reference MPEG-4 Encoder</source>
<translation>Nero AAC MPEG-4 </translation>
@ -227,6 +219,14 @@
<source>LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.</source>
<translation>LameXP是作為一個整體版權由 LoRd_MuldeR . LameXP 使.</translation>
</message>
<message>
<source>dcaenc</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1729,6 +1729,10 @@
<source>Skipping update check this time, please be patient...</source>
<translation>,...</translation>
</message>
<message>
<source>DCA Enc</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -175,14 +175,6 @@
<source>GNU Wget - Software for retrieving files using HTTP</source>
<translation>GNU Wget - Software for retrieving files using HTTP</translation>
</message>
<message>
<source>Silk Icons - Over 700 icons in PNG format</source>
<translation>Silk Icons - Більш ніж 700 іконок в форматі PNG</translation>
</message>
<message>
<source>By Mark James, released under the Creative Commons &apos;by&apos; License.</source>
<translation>Створено Mark James, випущено під ліцензією Creative Commons &apos;by&apos; License.</translation>
</message>
<message>
<source>LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.</source>
<translation>Всі права на LameXP належать LoRd_MuldeR. Права на стороннє ПЗ, що використовується в LameXP, належать авторам цього ПЗ.</translation>
@ -228,6 +220,14 @@
<source>avs2wav - Avisynth to Wave Audio converter</source>
<translation>avs2wav - аудіоконвертер у Wave аудіо, що базується на Avisynth</translation>
</message>
<message>
<source>dcaenc</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1730,6 +1730,10 @@
<source>Skipping update check this time, please be patient...</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA Enc</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -87,10 +87,6 @@
<source>Open and patent-free lossless audio compression technology.</source>
<translation>.</translation>
</message>
<message>
<source>By Mark James, released under the Creative Commons &apos;by&apos; License.</source>
<translation>By Mark James,.</translation>
</message>
<message>
<source>About Third-party Software</source>
<translation></translation>
@ -163,10 +159,6 @@
<source>GnuPG - The GNU Privacy Guard</source>
<translation>GnuPG - GNU </translation>
</message>
<message>
<source>Silk Icons - Over 700 icons in PNG format</source>
<translation>Silk Icons - 700 PNG </translation>
</message>
<message>
<source>Nero AAC Reference MPEG-4 Encoder</source>
<translation>Nero AAC MPEG-4 </translation>
@ -227,6 +219,14 @@
<source>LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.</source>
<translation>LameXP是作为一个整体版权由 LoRd_MuldeR . LameXP 使.</translation>
</message>
<message>
<source>dcaenc</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1729,6 +1729,10 @@
<source>Skipping update check this time, please be patient...</source>
<translation>,...</translation>
</message>
<message>
<source>DCA Enc</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -770,7 +770,7 @@
</property>
</widget>
</item>
<item row="0" column="6">
<item row="0" column="7">
<widget class="QRadioButton" name="radioButtonEncoderPCM">
<property name="text">
<string>Wave (PCM)</string>
@ -807,6 +807,13 @@
</property>
</widget>
</item>
<item row="0" column="6">
<widget class="QRadioButton" name="radioButtonEncoderDCA">
<property name="text">
<string>DCA Enc</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
@ -1099,8 +1106,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>602</width>
<height>1515</height>
<width>604</width>
<height>1524</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_22">

View File

@ -4,6 +4,7 @@
<file>tools/aften.i386.exe</file>
<file>tools/aften.sse2.exe</file>
<file>tools/aften.x64.exe</file>
<file>tools/dcaenc.exe</file>
<file>tools/flac.exe</file>
<file>tools/lame.i386.exe</file>
<file>tools/lame.sse2.exe</file>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -29,8 +29,8 @@
#define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 4
#define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 11
#define VER_LAMEXP_BUILD 827
#define VER_LAMEXP_PATCH 12
#define VER_LAMEXP_BUILD 830
///////////////////////////////////////////////////////////////////////////////
// Tool versions (minimum expected versions!)

View File

@ -430,7 +430,7 @@ void AboutDialog::showMoreAbout(void)
);
moreAboutText += QString
(
"</ul></td><td><ul>"
"</ul></td><td><ul>" /* ----------------------------------------- */
);
moreAboutText += makeToolText
(
@ -475,6 +475,13 @@ void AboutDialog::showMoreAbout(void)
"http://forum.doom9.org/showthread.php?t=70882"
);
moreAboutText += makeToolText
(
tr("dcaenc"),
"dcaenc.exe", "????-??-??",
tr("Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL."),
"http://gitorious.org/dtsenc/dtsenc/trees/master"
);
moreAboutText += makeToolText
(
tr("MediaInfo - Media File Analysis Tool"),
"mediainfo.exe", "v?.?.??",
@ -502,13 +509,13 @@ void AboutDialog::showMoreAbout(void)
tr("Released under the terms of the GNU Lesser General Public License."),
"http://www.gnu.org/software/wget/"
);
moreAboutText += makeToolText
(
tr("Silk Icons - Over 700 icons in PNG format"),
QString(), "v1.3",
tr("By Mark James, released under the Creative Commons 'by' License."),
"http://www.famfamfam.com/lab/icons/silk/"
);
//moreAboutText += makeToolText
//(
// tr("Silk Icons - Over 700 icons in PNG format"),
// QString(), "v1.3",
// tr("By Mark James, released under the Creative Commons 'by' License."),
// "http://www.famfamfam.com/lab/icons/silk/"
//);
moreAboutText += QString("</ul></td><td>&nbsp;</td></tr></table></div><i>%1</i><br>").arg
(
NOBR(tr("LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors."))

View File

@ -203,6 +203,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
m_encoderButtonGroup->addButton(radioButtonEncoderAAC, SettingsModel::AACEncoder);
m_encoderButtonGroup->addButton(radioButtonEncoderAC3, SettingsModel::AC3Encoder);
m_encoderButtonGroup->addButton(radioButtonEncoderFLAC, SettingsModel::FLACEncoder);
m_encoderButtonGroup->addButton(radioButtonEncoderDCA, SettingsModel::DCAEncoder);
m_encoderButtonGroup->addButton(radioButtonEncoderPCM, SettingsModel::PCMEncoder);
m_modeButtonGroup = new QButtonGroup(this);
m_modeButtonGroup->addButton(radioButtonModeQuality, SettingsModel::VBRMode);
@ -214,6 +215,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
radioButtonEncoderAAC->setChecked((m_settings->compressionEncoder() == SettingsModel::AACEncoder) && (m_neroEncoderAvailable || m_fhgEncoderAvailable || m_qaacEncoderAvailable));
radioButtonEncoderAC3->setChecked(m_settings->compressionEncoder() == SettingsModel::AC3Encoder);
radioButtonEncoderFLAC->setChecked(m_settings->compressionEncoder() == SettingsModel::FLACEncoder);
radioButtonEncoderDCA->setChecked(m_settings->compressionEncoder() == SettingsModel::DCAEncoder);
radioButtonEncoderPCM->setChecked(m_settings->compressionEncoder() == SettingsModel::PCMEncoder);
radioButtonModeQuality->setChecked(m_settings->compressionRCMode() == SettingsModel::VBRMode);
radioButtonModeAverageBitrate->setChecked(m_settings->compressionRCMode() == SettingsModel::ABRMode);
@ -1217,6 +1219,7 @@ void MainWindow::encodeButtonClicked(void)
case SettingsModel::AACEncoder:
case SettingsModel::AC3Encoder:
case SettingsModel::FLACEncoder:
case SettingsModel::DCAEncoder:
case SettingsModel::PCMEncoder:
break;
default:
@ -2481,6 +2484,13 @@ void MainWindow::updateEncoder(int id)
radioButtonConstBitrate->setEnabled(true);
sliderBitrate->setEnabled(true);
break;
case SettingsModel::DCAEncoder:
radioButtonModeQuality->setEnabled(false);
radioButtonModeAverageBitrate->setEnabled(false);
radioButtonConstBitrate->setEnabled(true);
radioButtonConstBitrate->setChecked(true);
sliderBitrate->setEnabled(true);
break;
default:
radioButtonModeQuality->setEnabled(true);
radioButtonModeAverageBitrate->setEnabled(true);
@ -2557,6 +2567,10 @@ void MainWindow::updateRCMode(int id)
sliderBitrate->setMinimum(0);
sliderBitrate->setMaximum(8);
break;
case SettingsModel::DCAEncoder:
sliderBitrate->setMinimum(1);
sliderBitrate->setMaximum(192);
break;
case SettingsModel::PCMEncoder:
sliderBitrate->setMinimum(0);
sliderBitrate->setMaximum(2);
@ -2638,6 +2652,9 @@ void MainWindow::updateBitrate(int value)
case SettingsModel::AC3Encoder:
labelBitrate->setText(QString("%1 kbps").arg(SettingsModel::ac3Bitrates[value]));
break;
case SettingsModel::DCAEncoder:
labelBitrate->setText(QString("%1 kbps").arg(value * 32));
break;
case SettingsModel::PCMEncoder:
labelBitrate->setText(tr("Uncompressed"));
break;

View File

@ -31,13 +31,14 @@
#include "Thread_RAMObserver.h"
#include "Thread_DiskObserver.h"
#include "Dialog_LogView.h"
#include "Encoder_MP3.h"
#include "Encoder_Vorbis.h"
#include "Encoder_AAC.h"
#include "Encoder_AAC_FHG.h"
#include "Encoder_AAC_QAAC.h"
#include "Encoder_AC3.h"
#include "Encoder_DCA.h"
#include "Encoder_FLAC.h"
#include "Encoder_MP3.h"
#include "Encoder_Vorbis.h"
#include "Encoder_Wave.h"
#include "Filter_Downmix.h"
#include "Filter_Normalize.h"
@ -638,10 +639,66 @@ void ProcessingDialog::startNextJob(void)
m_currentFile++;
AudioFileModel currentFile = updateMetaInfo(m_pendingJobs.takeFirst());
AbstractEncoder *encoder = NULL;
bool nativeResampling = false;
//Create encoder instance
AbstractEncoder *encoder = makeEncoder(&nativeResampling);
//Create processing thread
ProcessThread *thread = new ProcessThread
(
currentFile,
(m_settings->outputToSourceDir() ? QFileInfo(currentFile.filePath()).absolutePath() : m_settings->outputDir()),
(m_settings->customTempPathEnabled() ? m_settings->customTempPath() : lamexp_temp_folder2()),
encoder,
m_settings->prependRelativeSourcePath() && (!m_settings->outputToSourceDir())
);
//Add audio filters
if(m_settings->forceStereoDownmix())
{
thread->addFilter(new DownmixFilter());
}
if((m_settings->samplingRate() > 0) && !nativeResampling)
{
if(SettingsModel::samplingRates[m_settings->samplingRate()] != currentFile.formatAudioSamplerate() || currentFile.formatAudioSamplerate() == 0)
{
thread->addFilter(new ResampleFilter(SettingsModel::samplingRates[m_settings->samplingRate()]));
}
}
if((m_settings->toneAdjustBass() != 0) || (m_settings->toneAdjustTreble() != 0))
{
thread->addFilter(new ToneAdjustFilter(m_settings->toneAdjustBass(), m_settings->toneAdjustTreble()));
}
if(m_settings->normalizationFilterEnabled())
{
thread->addFilter(new NormalizeFilter(m_settings->normalizationFilterMaxVolume(), m_settings->normalizationFilterEqualizationMode()));
}
if(m_settings->renameOutputFilesEnabled() && (!m_settings->renameOutputFilesPattern().simplified().isEmpty()))
{
thread->setRenamePattern(m_settings->renameOutputFilesPattern());
}
m_threadList.append(thread);
m_allJobs.append(thread->getId());
//Connect thread signals
connect(thread, SIGNAL(finished()), this, SLOT(doneEncoding()), Qt::QueuedConnection);
connect(thread, SIGNAL(processStateInitialized(QUuid,QString,QString,int)), m_progressModel, SLOT(addJob(QUuid,QString,QString,int)), Qt::QueuedConnection);
connect(thread, SIGNAL(processStateChanged(QUuid,QString,int)), m_progressModel, SLOT(updateJob(QUuid,QString,int)), Qt::QueuedConnection);
connect(thread, SIGNAL(processStateFinished(QUuid,QString,bool)), this, SLOT(processFinished(QUuid,QString,bool)), Qt::QueuedConnection);
connect(thread, SIGNAL(processMessageLogged(QUuid,QString)), m_progressModel, SLOT(appendToLog(QUuid,QString)), Qt::QueuedConnection);
//Give it a go!
m_runningThreads++;
thread->start();
}
AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
{
AbstractEncoder *encoder = NULL;
*nativeResampling = false;
switch(m_settings->compressionEncoder())
{
case SettingsModel::MP3Encoder:
@ -657,7 +714,7 @@ void ProcessingDialog::startNextJob(void)
if(m_settings->samplingRate() > 0)
{
mp3Encoder->setSamplingRate(SettingsModel::samplingRates[m_settings->samplingRate()]);
nativeResampling = true;
*nativeResampling = true;
}
mp3Encoder->setChannelMode(m_settings->lameChannelMode());
mp3Encoder->setCustomParams(m_settings->customParametersLAME());
@ -676,7 +733,7 @@ void ProcessingDialog::startNextJob(void)
if(m_settings->samplingRate() > 0)
{
vorbisEncoder->setSamplingRate(SettingsModel::samplingRates[m_settings->samplingRate()]);
nativeResampling = true;
*nativeResampling = true;
}
vorbisEncoder->setCustomParams(m_settings->customParametersOggEnc());
encoder = vorbisEncoder;
@ -736,6 +793,14 @@ void ProcessingDialog::startNextJob(void)
encoder = flacEncoder;
}
break;
case SettingsModel::DCAEncoder:
{
DCAEncoder *dcaEncoder = new DCAEncoder();
dcaEncoder->setBitrate(m_settings->compressionBitrate());
dcaEncoder->setRCMode(m_settings->compressionRCMode());
encoder = dcaEncoder;
}
break;
case SettingsModel::PCMEncoder:
{
WaveEncoder *waveEncoder = new WaveEncoder();
@ -748,54 +813,7 @@ void ProcessingDialog::startNextJob(void)
throw "Unsupported encoder!";
}
//Create processing thread
ProcessThread *thread = new ProcessThread
(
currentFile,
(m_settings->outputToSourceDir() ? QFileInfo(currentFile.filePath()).absolutePath() : m_settings->outputDir()),
(m_settings->customTempPathEnabled() ? m_settings->customTempPath() : lamexp_temp_folder2()),
encoder,
m_settings->prependRelativeSourcePath() && (!m_settings->outputToSourceDir())
);
//Add audio filters
if(m_settings->forceStereoDownmix())
{
thread->addFilter(new DownmixFilter());
}
if((m_settings->samplingRate() > 0) && !nativeResampling)
{
if(SettingsModel::samplingRates[m_settings->samplingRate()] != currentFile.formatAudioSamplerate() || currentFile.formatAudioSamplerate() == 0)
{
thread->addFilter(new ResampleFilter(SettingsModel::samplingRates[m_settings->samplingRate()]));
}
}
if((m_settings->toneAdjustBass() != 0) || (m_settings->toneAdjustTreble() != 0))
{
thread->addFilter(new ToneAdjustFilter(m_settings->toneAdjustBass(), m_settings->toneAdjustTreble()));
}
if(m_settings->normalizationFilterEnabled())
{
thread->addFilter(new NormalizeFilter(m_settings->normalizationFilterMaxVolume(), m_settings->normalizationFilterEqualizationMode()));
}
if(m_settings->renameOutputFilesEnabled() && (!m_settings->renameOutputFilesPattern().simplified().isEmpty()))
{
thread->setRenamePattern(m_settings->renameOutputFilesPattern());
}
m_threadList.append(thread);
m_allJobs.append(thread->getId());
//Connect thread signals
connect(thread, SIGNAL(finished()), this, SLOT(doneEncoding()), Qt::QueuedConnection);
connect(thread, SIGNAL(processStateInitialized(QUuid,QString,QString,int)), m_progressModel, SLOT(addJob(QUuid,QString,QString,int)), Qt::QueuedConnection);
connect(thread, SIGNAL(processStateChanged(QUuid,QString,int)), m_progressModel, SLOT(updateJob(QUuid,QString,int)), Qt::QueuedConnection);
connect(thread, SIGNAL(processStateFinished(QUuid,QString,bool)), this, SLOT(processFinished(QUuid,QString,bool)), Qt::QueuedConnection);
connect(thread, SIGNAL(processMessageLogged(QUuid,QString)), m_progressModel, SLOT(appendToLog(QUuid,QString)), Qt::QueuedConnection);
//Give it a go!
m_runningThreads++;
thread->start();
return encoder;
}
void ProcessingDialog::writePlayList(void)

View File

@ -36,6 +36,7 @@ class SettingsModel;
class CPUObserverThread;
class RAMObserverThread;
class DiskObserverThread;
class AbstractEncoder;
enum shutdownFlag_t
{
@ -79,6 +80,7 @@ protected:
private:
void setCloseButtonEnabled(bool enabled);
void startNextJob(void);
AbstractEncoder *makeEncoder(bool *nativeResampling);
AudioFileModel updateMetaInfo(const AudioFileModel &audioFile);
void writePlayList(void);
bool shutdownComputer(void);

152
src/Encoder_DCA.cpp Normal file
View File

@ -0,0 +1,152 @@
///////////////////////////////////////////////////////////////////////////////
// LameXP - Audio Encoder Front-End
// Copyright (C) 2004-2011 LoRd_MuldeR <MuldeR2@GMX.de>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// 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 "Encoder_DCA.h"
#include "Global.h"
#include "Model_Settings.h"
#include <QProcess>
#include <QDir>
#include <limits.h>
DCAEncoder::DCAEncoder(void)
:
m_binary(lamexp_lookup_tool("dcaenc.exe"))
{
if(m_binary.isEmpty())
{
throw "Error initializing DCA encoder. Tool 'dcaenc.exe' is not registred!";
}
}
DCAEncoder::~DCAEncoder(void)
{
}
bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel &metaInfo, const QString &outputFile, volatile bool *abortFlag)
{
QProcess process;
QStringList args;
int bitrate = qBound(32, m_configBitrate * 32, 6144);
args << QDir::toNativeSeparators(sourceFile);
args << QDir::toNativeSeparators(outputFile);
args << QString::number(bitrate);
if(!startProcess(process, m_binary, args))
{
return false;
}
bool bTimeout = false;
bool bAborted = false;
int prevProgress = -1;
QRegExp regExp("\\[(\\d+)\\.(\\d+)%\\]");
while(process.state() != QProcess::NotRunning)
{
if(*abortFlag)
{
process.kill();
bAborted = true;
emit messageLogged("\nABORTED BY USER !!!");
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
if(!process.bytesAvailable() && process.state() == QProcess::Running)
{
process.kill();
qWarning("DCAENC process timed out <-- killing!");
emit messageLogged("\nPROCESS TIMEOUT !!!");
bTimeout = true;
break;
}
while(process.bytesAvailable() > 0)
{
QByteArray line = process.readLine();
QString text = QString::fromUtf8(line.constData()).simplified();
if(regExp.lastIndexIn(text) >= 0)
{
bool ok = false;
int progress = regExp.cap(1).toInt(&ok);
if(ok && (progress > prevProgress))
{
emit statusUpdated(progress);
prevProgress = qMin(progress + 2, 99);
}
}
else 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.exitCode() != EXIT_SUCCESS)
{
return false;
}
return true;
}
QString DCAEncoder::extension(void)
{
return "dts";
}
bool DCAEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
{
if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
{
return true;
}
}
return false;
}
const unsigned int *DCAEncoder::supportedSamplerates(void)
{
static const unsigned int supportedRates[] = {48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, NULL};
return supportedRates;
}
const unsigned int *DCAEncoder::supportedBitdepths(void)
{
static const unsigned int supportedBPS[] = {16, 32, NULL};
return supportedBPS;
}

45
src/Encoder_DCA.h Normal file
View File

@ -0,0 +1,45 @@
///////////////////////////////////////////////////////////////////////////////
// LameXP - Audio Encoder Front-End
// Copyright (C) 2004-2011 LoRd_MuldeR <MuldeR2@GMX.de>
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// 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 "Encoder_Abstract.h"
#include <QObject>
class DCAEncoder : public AbstractEncoder
{
Q_OBJECT
public:
DCAEncoder(void);
~DCAEncoder(void);
virtual bool encode(const QString &sourceFile, const AudioFileModel &metaInfo, const QString &outputFile, volatile bool *abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
virtual QString extension(void);
virtual const unsigned int *supportedBitdepths(void);
virtual const unsigned int *supportedSamplerates(void);
private:
const QString m_binary;
int clipBitrate(int bitrate);
};

View File

@ -62,7 +62,8 @@ public:
AACEncoder = 2,
AC3Encoder = 3,
FLACEncoder = 4,
PCMEncoder = 5
DCAEncoder = 5,
PCMEncoder = 6
};
enum RCMode
{

View File

@ -420,7 +420,7 @@ void ProcessThread::insertDownsampleFilter(void)
for(int i = 0; supportedRates[i]; i++)
{
currentDiff = DIFF(inputRate, supportedRates[i]);
if(currentDiff < minimumDiff)
if((currentDiff < minimumDiff) || ((currentDiff == minimumDiff) && (bestRate < supportedRates[i])))
{
bestRate = supportedRates[i];
minimumDiff = currentDiff;
@ -446,7 +446,7 @@ void ProcessThread::insertDownsampleFilter(void)
for(int i = 0; supportedBPS[i]; i++)
{
currentDiff = DIFF(inputBPS, supportedBPS[i]);
if(currentDiff < minimumDiff)
if((currentDiff < minimumDiff) || ((currentDiff == minimumDiff) && (bestBPS < supportedBPS[i])))
{
bestBPS = supportedBPS[i];
minimumDiff = currentDiff;

View File

@ -56,6 +56,7 @@ g_lamexp_tools[] =
{"29da0d3e810bc3e8d2cddb3db452325eefca0d0c1fff1379fa17806ad447752be1b88e2f", CPU_TYPE_X64_ALL, "aften.x64.exe", 8},
{"1cca303fabd889a18fc01c32a7fd861194cfcac60ba63740ea2d7c55d049dbf8f59259fa", CPU_TYPE_ALL_ALL, "alac.exe", 20},
{"6d22d4bbd7ce2162e38f70ac9187bc84eb28233b36ee6c0492d0a6195318782d7f05c444", CPU_TYPE_ALL_ALL, "avs2wav.exe", 13},
{"d94bea403cbd24a890d91f55a4e4fed47898b21b62de3ba1202da55dc0917187304171f6", CPU_TYPE_ALL_ALL, "dcaenc.exe", 20111222},
{"e53a787d4a0319453f4fe48c3145f190fcce7ac4802e521db908771437f6250746116e6c", CPU_TYPE_ALL_ALL, "elevator.exe", UINT_MAX},
{"9ae98a3fc779f69ee876a3b477fbc35a709ba5066823b2eb62eeb015057c38807e4be51f", CPU_TYPE_ALL_ALL, "faad.exe", 27},
{"446054f9a7f705f1aadc9053ca7b8a86a775499ef159978954ebdea92de056c34f8841f7", CPU_TYPE_ALL_ALL, "flac.exe", 121},