OSDN Git Service

Updated FAAD decoder to v2.7 from CVS in order to include latest libFAAD fixes (2016...
authorLoRd_MuldeR <mulder2@gmx.de>
Sun, 26 Mar 2017 15:27:08 +0000 (17:27 +0200)
committerLoRd_MuldeR <mulder2@gmx.de>
Sun, 26 Mar 2017 15:27:08 +0000 (17:27 +0200)
14 files changed:
LameXP_VS2015.vcxproj
LameXP_VS2015.vcxproj.filters
doc/Changelog.html
doc/Changelog.md
etc/Patches/FAAD-v2.7-CVS20161111-UTF8+Flush+BuildFixes.V3.diff [new file with mode: 0644]
etc/Patches/deprecated/FAAD-v2.7-UTF8+Flush+FixBufferOverrun.V2.diff [moved from etc/Patches/FAAD-v2.7-UTF8+Flush+FixBufferOverrun.V2.diff with 100% similarity]
res/Tools.faad-i386.qrc [new file with mode: 0644]
res/Tools.faad-sse2.qrc [new file with mode: 0644]
res/Tools.faad.qrc [deleted file]
res/tools/faad.exe [deleted file]
res/tools/faad.i386.exe [new file with mode: 0644]
res/tools/faad.sse2.exe [new file with mode: 0644]
src/Config.h
src/Tools.h

index b8e7bc0..dc6cf8a 100644 (file)
@@ -411,7 +411,8 @@ copy /Y "$(SolutionDir)\..\Prerequisites\Qt4\$(PlatformToolset)\Shared\plugins\i
     <ClCompile Include="tmp\LameXP\QRC_Tools.avs2wav.cpp" />
     <ClCompile Include="tmp\LameXP\QRC_Tools.dcaenc.cpp" />
     <ClCompile Include="tmp\LameXP\QRC_Tools.elevator.cpp" />
-    <ClCompile Include="tmp\LameXP\QRC_Tools.faad.cpp" />
+    <ClCompile Include="tmp\LameXP\QRC_Tools.faad-i386.cpp" />
+    <ClCompile Include="tmp\LameXP\QRC_Tools.faad-sse2.cpp" />
     <ClCompile Include="tmp\LameXP\QRC_Tools.flac-x64-avx.cpp" />
     <ClCompile Include="tmp\LameXP\QRC_Tools.flac-x64-sse2.cpp" />
     <ClCompile Include="tmp\LameXP\QRC_Tools.flac-x86-i386.cpp" />
@@ -1281,18 +1282,6 @@ copy /Y "$(SolutionDir)\..\Prerequisites\Qt4\$(PlatformToolset)\Shared\plugins\i
       <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"</Message>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)</Outputs>
     </CustomBuild>
-    <CustomBuild Include="res\Tools.faad.qrc">
-      <FileType>Document</FileType>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -no-compress -name "%(Filename)" "%(FullPath)"</Command>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"</Message>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -no-compress -name "%(Filename)" "%(FullPath)"</Command>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"</Message>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)</Outputs>
-      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -no-compress -name "%(Filename)" "%(FullPath)"</Command>
-      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"</Message>
-      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)</Outputs>
-    </CustomBuild>
     <CustomBuild Include="res\Tools.flac-x64-avx.qrc">
       <FileType>Document</FileType>
       <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -no-compress -name "%(Filename)" "%(FullPath)"</Command>
@@ -1833,6 +1822,30 @@ copy /Y "$(SolutionDir)\..\Prerequisites\Qt4\$(PlatformToolset)\Shared\plugins\i
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)</Outputs>
       <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)</Outputs>
     </CustomBuild>
+    <CustomBuild Include="res\Tools.faad-i386.qrc">
+      <FileType>Document</FileType>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -no-compress -name "%(Filename)" "%(FullPath)"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -no-compress -name "%(Filename)" "%(FullPath)"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -no-compress -name "%(Filename)" "%(FullPath)"</Command>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"</Message>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"</Message>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"</Message>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)</Outputs>
+    </CustomBuild>
+    <CustomBuild Include="res\Tools.faad-sse2.qrc">
+      <FileType>Document</FileType>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -no-compress -name "%(Filename)" "%(FullPath)"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -no-compress -name "%(Filename)" "%(FullPath)"</Command>
+      <Command Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">"$(QTDIR)\bin\rcc.exe" -o "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp" -no-compress -name "%(Filename)" "%(FullPath)"</Command>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"</Message>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"</Message>
+      <Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">RCC "$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp"</Message>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)</Outputs>
+      <Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\$(ProjectName)\QRC_%(Filename).cpp;%(Outputs)</Outputs>
+    </CustomBuild>
   </ItemGroup>
   <ItemGroup>
     <ResourceCompile Include="LameXP.rc">
index 79971cb..0c26722 100644 (file)
     <ClCompile Include="tmp\LameXP\QRC_Tools.elevator.cpp">
       <Filter>Generated Files\QRC</Filter>
     </ClCompile>
-    <ClCompile Include="tmp\LameXP\QRC_Tools.faad.cpp">
-      <Filter>Generated Files\QRC</Filter>
-    </ClCompile>
     <ClCompile Include="tmp\LameXP\QRC_Tools.flac-x64-avx.cpp">
       <Filter>Generated Files\QRC</Filter>
     </ClCompile>
     <ClCompile Include="tmp\LameXP\QRC_Tools.wvunpack-x64.cpp">
       <Filter>Generated Files\QRC</Filter>
     </ClCompile>
+    <ClCompile Include="tmp\LameXP\QRC_Tools.faad-i386.cpp">
+      <Filter>Generated Files\QRC</Filter>
+    </ClCompile>
+    <ClCompile Include="tmp\LameXP\QRC_Tools.faad-sse2.cpp">
+      <Filter>Generated Files\QRC</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="src\Config.h">
     <CustomBuild Include="res\Tools.elevator.qrc">
       <Filter>Resources</Filter>
     </CustomBuild>
-    <CustomBuild Include="res\Tools.faad.qrc">
-      <Filter>Resources</Filter>
-    </CustomBuild>
     <CustomBuild Include="res\Tools.flac-x64-avx.qrc">
       <Filter>Resources</Filter>
     </CustomBuild>
     <None Include="res\MainIcon.ico">
       <Filter>Miscellaneous</Filter>
     </None>
+    <None Include="res\Tools.faad-i386.qrc">
+      <Filter>Resources</Filter>
+    </None>
+    <None Include="res\Tools.faad-sse2.qrc">
+      <Filter>Resources</Filter>
+    </None>
   </ItemGroup>
   <ItemGroup>
     <Filter Include="Header Files">
index ec66f65..ae1fa76 100644 (file)
@@ -3,7 +3,7 @@
 h='&#x67;&#x6d;&#120;';a='&#64;';n='&#x6d;&#x75;&#108;&#100;&#x65;&#114;&#50;';e=n+a+h;
 document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'" clas'+'s="em' + 'ail">'+e+'<\/'+'a'+'>');
 // -->
-</script><noscript>&#x6d;&#x75;&#108;&#100;&#x65;&#114;&#50;&#32;&#x61;&#116;&#32;&#x67;&#x6d;&#120;</noscript>&gt; | <a href="http://muldersoft.com/" class="uri">http://muldersoft.com/</a></h2> </header> <nav id="TOC"> <ul> <li><a href="#lamexp-v4.xx-history"><span class="toc-section-number">1</span> LameXP v4.xx History</a><ul> <li><a href="#lamexp-v4.15-2017--">LameXP v4.15 [2017-??-??]</a></li> <li><a href="#lamexp-v4.14-2016-11-19">LameXP v4.14 [2016-11-19]</a></li> <li><a href="#lamexp-v4.13-2015-12-12">LameXP v4.13 [2015-12-12]</a></li> <li><a href="#lamexp-v4.12-2015-10-23">LameXP v4.12 [2015-10-23]</a></li> <li><a href="#lamexp-v4.11-2015-04-05">LameXP v4.11 [2015-04-05]</a></li> <li><a href="#lamexp-v4.10-2014-06-23">LameXP v4.10 [2014-06-23]</a></li> <li><a href="#lamexp-v4.09-2014-01-26">LameXP v4.09 [2014-01-26]</a></li> <li><a href="#lamexp-v4.08-2013-09-04">LameXP v4.08 [2013-09-04]</a></li> <li><a href="#lamexp-v4.07-2013-04-28">LameXP v4.07 [2013-04-28]</a></li> <li><a href="#lamexp-v4.06-2012-11-04">LameXP v4.06 [2012-11-04]</a></li> <li><a href="#lamexp-v4.05-2012-09-03">LameXP v4.05 [2012-09-03]</a></li> <li><a href="#lamexp-v4.04-2012-04-26">LameXP v4.04 [2012-04-26]</a></li> <li><a href="#lamexp-v4.03-2011-11-12">LameXP v4.03 [2011-11-12]</a></li> <li><a href="#lamexp-v4.02-2011-06-14">LameXP v4.02 [2011-06-14]</a></li> <li><a href="#lamexp-v4.01-2011-04-04">LameXP v4.01 [2011-04-04]</a></li> <li><a href="#lamexp-v4.00-2011-02-21">LameXP v4.00 [2011-02-21]</a></li> </ul></li> <li><a href="#lamexp-v3.xx-history"><span class="toc-section-number">2</span> LameXP v3.xx History</a><ul> <li><a href="#lamexp-v3.19-2010-07-12">LameXP v3.19 [2010-07-12]</a></li> <li><a href="#lamexp-v3.18-2010-05-08">LameXP v3.18 [2010-05-08]</a></li> <li><a href="#lamexp-v3.17-2010-02-21">LameXP v3.17 [2010-02-21]</a></li> <li><a href="#lamexp-v3.16-2010-01-26">LameXP v3.16 [2010-01-26]</a></li> <li><a href="#lamexp-v3.15-2009-12-24">LameXP v3.15 [2009-12-24]</a></li> <li><a href="#lamexp-v3.14-2009-12-01">LameXP v3.14 [2009-12-01]</a></li> <li><a href="#lamexp-v3.13-2009-10-21">LameXP v3.13 [2009-10-21]</a></li> <li><a href="#lamexp-v3.12-2009-09-19">LameXP v3.12 [2009-09-19]</a></li> <li><a href="#lamexp-v3.11-2009-06-22">LameXP v3.11 [2009-06-22]</a></li> <li><a href="#lamexp-v3.10-2009-06-11">LameXP v3.10 [2009-06-11]</a></li> <li><a href="#lamexp-v3.09-2009-06-01">LameXP v3.09 [2009-06-01]</a></li> <li><a href="#lamexp-v3.08-2009-03-05">LameXP v3.08 [2009-03-05]</a></li> <li><a href="#lamexp-v3.07-2008-12-24">LameXP v3.07 [2008-12-24]</a></li> <li><a href="#lamexp-v3.06-2008-10-26">LameXP v3.06 [2008-10-26]</a></li> <li><a href="#lamexp-v3.05-2008-10-11">LameXP v3.05 [2008-10-11]</a></li> <li><a href="#lamexp-v3.04-2008-09-26">LameXP v3.04 [2008-09-26]</a></li> <li><a href="#lamexp-v3.03-2008-08-12">LameXP v3.03 [2008-08-12]</a></li> <li><a href="#lamexp-v3.02-2008-08-06">LameXP v3.02 [2008-08-06]</a></li> <li><a href="#lamexp-v3.01-2008-08-01">LameXP v3.01 [2008-08-01]</a></li> <li><a href="#lamexp-v3.00-2008-07-04">LameXP v3.00 [2008-07-04]</a></li> </ul></li> <li><a href="#lamexp-v2.xx-history"><span class="toc-section-number">3</span> LameXP v2.xx History</a><ul> <li><a href="#lamexp-v2.03-2007-08-17">LameXP v2.03 [2007-08-17]</a></li> <li><a href="#lamexp-v2.00-2007-02-19">LameXP v2.00 [2007-02-19]</a></li> </ul></li> <li><a href="#lamexp-v1.xx-history"><span class="toc-section-number">4</span> LameXP v1.xx History</a><ul> <li><a href="#lamexp-v1.00-2004-12-10">LameXP v1.00 [2004-12-10]</a></li> </ul></li> </ul> </nav> <h1 id="lamexp-v4.xx-history"><span class="header-section-number">1</span> LameXP v4.xx History</h1> <h2 id="lamexp-v4.15-2017--" class="unnumbered">LameXP v4.15 [2017-??-??]</h2> <ul> <li>Fixed a bug in auto-rename feature, that caused problems when a meta-tag contained path separators</li> <li>Fixed included MediaInfo binary not working on processor <em>without</em> SSE2 support</li> <li>Some improvements for &quot;high DPI&quot; screens: Adjust initial window size according to DPI setting</li> <li>Updated Opus encoder/decoder libraries to v1.2-alpha2 (2017-03-03) and Opus-Tools to v0.1.10 (2017-02-22)</li> <li>Updated MediaInfo to v0.7.93 (2017-02-28), compiled with ICL 17.0 and MSVC 12.0</li> </ul> <h2 id="lamexp-v4.14-2016-11-19" class="unnumbered">LameXP v4.14 [2016-11-19]</h2> <ul> <li>Upgraded build environment to Microsoft Visual Studio 2015 with Update-3</li> <li>Fixed the location of temporary intermediate files for SoX-based audio effects</li> <li>Fixed embedding of meta tags with OggEnc2 when reading directly from OGG/FLAC input file</li> <li>Fixed encoding of <em>non</em>-Stereo sources with NeroAAC, when &quot;HE-AAC <em>v2</em> (SBR+PS)&quot; is selected</li> <li>Fixed a bug that would cause the encoding job to fail, when an audio filter is <em>skipped</em></li> <li>Enabled the &quot;built-in&quot; resampler for QAAC encoder</li> <li>The &quot;Algorithm Quality&quot; slider now also affects the QAAC encoder</li> <li>Added &quot;AVX&quot; (Advanced Vector Extensions) to CPU feature detection code</li> <li>Updated Opus encoder/decoder libraries to v1.2-alpha and Opus-Tools to v0.1.9 (2016-11-04)</li> <li>Updated LAME encoder to v3.100 Alpha-2 (2016-01-29), compiled with ICL 15.0 and MSVC 12.0</li> <li>Updated FLAC encoder/decoder to v1.3.1 (2016-10-04), compiled with ICL 17.0 and MSVC 12.0</li> <li>Updated MediaInfo to v0.7.90 (2016-10-31), compiled with ICL 17.0 and MSVC 12.0</li> <li>Updated mpg123 decoder to v1.23.8 (2016-09-27), compiled with GCC 6.2.0</li> <li>Updated ALAC decoder to refalac v1.61 (2016-10-02)</li> <li>Updated WavPack decoder to v4.80.0 (2016-03-28), compiled with ICL 15.0 and MSVC 12.0</li> <li>Updated GnuPG to v1.4.21 (2016-08-17), compiled with GCC 6.1.0</li> <li>Updated QAAC add-in to the to QAAC v2.61 (2016-10-02)</li> <li>Updated FhgAacEnc add-in to &quot;Case&quot; edition (2015-10-24)</li> <li>Improved auto-update function (faster Internet connectivity check)</li> <li>Updated language files (big thank-you to all contributors !!!)</li> </ul> <h2 id="lamexp-v4.13-2015-12-12" class="unnumbered">LameXP v4.13 [2015-12-12]</h2> <ul> <li>Upgraded build environment to Microsoft Visual Studio 2015 with Update-1</li> <li>Apply the original file's &quot;creation&quot; and &quot;last modified&quot; date/time to the output file (optional)</li> <li>Updated Vorbis encoder to OggEnc v2.88 (2015-09-10), using libvorbis v1.3.5 and aoTuV b6.03_2015</li> <li>Updated MediaInfo to v0.7.78 (2015-10-02), compiled with ICL 15.0 and MSVC 12.0</li> <li>Fixed resampling bug with Vorbis encoder, regression in OggEnc v2.87</li> <li>Fixed creation of Monkey's Audio (APE) files, when <strong>no</strong> meta data is being embedded</li> <li>Updated language files (big thank-you to all contributors !!!)</li> </ul> <h2 id="lamexp-v4.12-2015-10-23" class="unnumbered">LameXP v4.12 [2015-10-23]</h2> <ul> <li>Upgraded build environment to Microsoft Visual Studio 2013 with Update-5</li> <li>Updated Qt runtime libraries to v4.8.7 Final (2015-05-25), compiled with MSVC 12.0</li> <li>Added support for building LameXP and MUtilities with Visual Studio 2015</li> <li>Added Hungarian translation, contributed by Zityi's Translator Team &lt;<script type="text/javascript">
+</script><noscript>&#x6d;&#x75;&#108;&#100;&#x65;&#114;&#50;&#32;&#x61;&#116;&#32;&#x67;&#x6d;&#120;</noscript>&gt; | <a href="http://muldersoft.com/" class="uri">http://muldersoft.com/</a></h2> </header> <nav id="TOC"> <ul> <li><a href="#lamexp-v4.xx-history"><span class="toc-section-number">1</span> LameXP v4.xx History</a><ul> <li><a href="#lamexp-v4.15-2017--">LameXP v4.15 [2017-??-??]</a></li> <li><a href="#lamexp-v4.14-2016-11-19">LameXP v4.14 [2016-11-19]</a></li> <li><a href="#lamexp-v4.13-2015-12-12">LameXP v4.13 [2015-12-12]</a></li> <li><a href="#lamexp-v4.12-2015-10-23">LameXP v4.12 [2015-10-23]</a></li> <li><a href="#lamexp-v4.11-2015-04-05">LameXP v4.11 [2015-04-05]</a></li> <li><a href="#lamexp-v4.10-2014-06-23">LameXP v4.10 [2014-06-23]</a></li> <li><a href="#lamexp-v4.09-2014-01-26">LameXP v4.09 [2014-01-26]</a></li> <li><a href="#lamexp-v4.08-2013-09-04">LameXP v4.08 [2013-09-04]</a></li> <li><a href="#lamexp-v4.07-2013-04-28">LameXP v4.07 [2013-04-28]</a></li> <li><a href="#lamexp-v4.06-2012-11-04">LameXP v4.06 [2012-11-04]</a></li> <li><a href="#lamexp-v4.05-2012-09-03">LameXP v4.05 [2012-09-03]</a></li> <li><a href="#lamexp-v4.04-2012-04-26">LameXP v4.04 [2012-04-26]</a></li> <li><a href="#lamexp-v4.03-2011-11-12">LameXP v4.03 [2011-11-12]</a></li> <li><a href="#lamexp-v4.02-2011-06-14">LameXP v4.02 [2011-06-14]</a></li> <li><a href="#lamexp-v4.01-2011-04-04">LameXP v4.01 [2011-04-04]</a></li> <li><a href="#lamexp-v4.00-2011-02-21">LameXP v4.00 [2011-02-21]</a></li> </ul></li> <li><a href="#lamexp-v3.xx-history"><span class="toc-section-number">2</span> LameXP v3.xx History</a><ul> <li><a href="#lamexp-v3.19-2010-07-12">LameXP v3.19 [2010-07-12]</a></li> <li><a href="#lamexp-v3.18-2010-05-08">LameXP v3.18 [2010-05-08]</a></li> <li><a href="#lamexp-v3.17-2010-02-21">LameXP v3.17 [2010-02-21]</a></li> <li><a href="#lamexp-v3.16-2010-01-26">LameXP v3.16 [2010-01-26]</a></li> <li><a href="#lamexp-v3.15-2009-12-24">LameXP v3.15 [2009-12-24]</a></li> <li><a href="#lamexp-v3.14-2009-12-01">LameXP v3.14 [2009-12-01]</a></li> <li><a href="#lamexp-v3.13-2009-10-21">LameXP v3.13 [2009-10-21]</a></li> <li><a href="#lamexp-v3.12-2009-09-19">LameXP v3.12 [2009-09-19]</a></li> <li><a href="#lamexp-v3.11-2009-06-22">LameXP v3.11 [2009-06-22]</a></li> <li><a href="#lamexp-v3.10-2009-06-11">LameXP v3.10 [2009-06-11]</a></li> <li><a href="#lamexp-v3.09-2009-06-01">LameXP v3.09 [2009-06-01]</a></li> <li><a href="#lamexp-v3.08-2009-03-05">LameXP v3.08 [2009-03-05]</a></li> <li><a href="#lamexp-v3.07-2008-12-24">LameXP v3.07 [2008-12-24]</a></li> <li><a href="#lamexp-v3.06-2008-10-26">LameXP v3.06 [2008-10-26]</a></li> <li><a href="#lamexp-v3.05-2008-10-11">LameXP v3.05 [2008-10-11]</a></li> <li><a href="#lamexp-v3.04-2008-09-26">LameXP v3.04 [2008-09-26]</a></li> <li><a href="#lamexp-v3.03-2008-08-12">LameXP v3.03 [2008-08-12]</a></li> <li><a href="#lamexp-v3.02-2008-08-06">LameXP v3.02 [2008-08-06]</a></li> <li><a href="#lamexp-v3.01-2008-08-01">LameXP v3.01 [2008-08-01]</a></li> <li><a href="#lamexp-v3.00-2008-07-04">LameXP v3.00 [2008-07-04]</a></li> </ul></li> <li><a href="#lamexp-v2.xx-history"><span class="toc-section-number">3</span> LameXP v2.xx History</a><ul> <li><a href="#lamexp-v2.03-2007-08-17">LameXP v2.03 [2007-08-17]</a></li> <li><a href="#lamexp-v2.00-2007-02-19">LameXP v2.00 [2007-02-19]</a></li> </ul></li> <li><a href="#lamexp-v1.xx-history"><span class="toc-section-number">4</span> LameXP v1.xx History</a><ul> <li><a href="#lamexp-v1.00-2004-12-10">LameXP v1.00 [2004-12-10]</a></li> </ul></li> </ul> </nav> <h1 id="lamexp-v4.xx-history"><span class="header-section-number">1</span> LameXP v4.xx History</h1> <h2 id="lamexp-v4.15-2017--" class="unnumbered">LameXP v4.15 [2017-??-??]</h2> <ul> <li>Fixed a bug in auto-rename feature, that caused problems when a meta-tag contained path separators</li> <li>Fixed included MediaInfo binary not working on processor <em>without</em> SSE2 support</li> <li>Some improvements for &quot;high DPI&quot; screens: Adjust initial window size according to DPI setting</li> <li>Updated Opus encoder/decoder libraries to v1.2-alpha2 (2017-03-03) and Opus-Tools to v0.1.10 (2017-02-22)</li> <li>Updated MediaInfo to v0.7.93 (2017-02-28), compiled with ICL 17.0 and MSVC 12.0</li> <li>Updated FAAD decoder to v2.7 from CVS in order to include latest libFAAD fixes (2016-11-11)</li> </ul> <h2 id="lamexp-v4.14-2016-11-19" class="unnumbered">LameXP v4.14 [2016-11-19]</h2> <ul> <li>Upgraded build environment to Microsoft Visual Studio 2015 with Update-3</li> <li>Fixed the location of temporary intermediate files for SoX-based audio effects</li> <li>Fixed embedding of meta tags with OggEnc2 when reading directly from OGG/FLAC input file</li> <li>Fixed encoding of <em>non</em>-Stereo sources with NeroAAC, when &quot;HE-AAC <em>v2</em> (SBR+PS)&quot; is selected</li> <li>Fixed a bug that would cause the encoding job to fail, when an audio filter is <em>skipped</em></li> <li>Enabled the &quot;built-in&quot; resampler for QAAC encoder</li> <li>The &quot;Algorithm Quality&quot; slider now also affects the QAAC encoder</li> <li>Added &quot;AVX&quot; (Advanced Vector Extensions) to CPU feature detection code</li> <li>Updated Opus encoder/decoder libraries to v1.2-alpha and Opus-Tools to v0.1.9 (2016-11-04)</li> <li>Updated LAME encoder to v3.100 Alpha-2 (2016-01-29), compiled with ICL 15.0 and MSVC 12.0</li> <li>Updated FLAC encoder/decoder to v1.3.1 (2016-10-04), compiled with ICL 17.0 and MSVC 12.0</li> <li>Updated MediaInfo to v0.7.90 (2016-10-31), compiled with ICL 17.0 and MSVC 12.0</li> <li>Updated mpg123 decoder to v1.23.8 (2016-09-27), compiled with GCC 6.2.0</li> <li>Updated ALAC decoder to refalac v1.61 (2016-10-02)</li> <li>Updated WavPack decoder to v4.80.0 (2016-03-28), compiled with ICL 15.0 and MSVC 12.0</li> <li>Updated GnuPG to v1.4.21 (2016-08-17), compiled with GCC 6.1.0</li> <li>Updated QAAC add-in to the to QAAC v2.61 (2016-10-02)</li> <li>Updated FhgAacEnc add-in to &quot;Case&quot; edition (2015-10-24)</li> <li>Improved auto-update function (faster Internet connectivity check)</li> <li>Updated language files (big thank-you to all contributors !!!)</li> </ul> <h2 id="lamexp-v4.13-2015-12-12" class="unnumbered">LameXP v4.13 [2015-12-12]</h2> <ul> <li>Upgraded build environment to Microsoft Visual Studio 2015 with Update-1</li> <li>Apply the original file's &quot;creation&quot; and &quot;last modified&quot; date/time to the output file (optional)</li> <li>Updated Vorbis encoder to OggEnc v2.88 (2015-09-10), using libvorbis v1.3.5 and aoTuV b6.03_2015</li> <li>Updated MediaInfo to v0.7.78 (2015-10-02), compiled with ICL 15.0 and MSVC 12.0</li> <li>Fixed resampling bug with Vorbis encoder, regression in OggEnc v2.87</li> <li>Fixed creation of Monkey's Audio (APE) files, when <strong>no</strong> meta data is being embedded</li> <li>Updated language files (big thank-you to all contributors !!!)</li> </ul> <h2 id="lamexp-v4.12-2015-10-23" class="unnumbered">LameXP v4.12 [2015-10-23]</h2> <ul> <li>Upgraded build environment to Microsoft Visual Studio 2013 with Update-5</li> <li>Updated Qt runtime libraries to v4.8.7 Final (2015-05-25), compiled with MSVC 12.0</li> <li>Added support for building LameXP and MUtilities with Visual Studio 2015</li> <li>Added Hungarian translation, contributed by Zityi's Translator Team &lt;<script type="text/javascript">
 <!--
 h='&#x67;&#x6d;&#x61;&#x69;&#108;&#46;&#x63;&#x6f;&#x6d;';a='&#64;';n='&#122;&#x69;&#116;&#x79;&#x69;&#x73;&#x6f;&#102;&#116;';e=n+a+h;
 document.write('<a h'+'ref'+'="ma'+'ilto'+':'+e+'" clas'+'s="em' + 'ail">'+e+'<\/'+'a'+'>');
index bc3a6a2..1fe91ae 100644 (file)
@@ -11,6 +11,7 @@ LameXP Audio-Encoder Front-End &ndash; Changelog
 * Some improvements for "high DPI" screens: Adjust initial window size according to DPI setting
 * Updated Opus encoder/decoder libraries to v1.2-alpha2 (2017-03-03) and Opus-Tools to v0.1.10 (2017-02-22)
 * Updated MediaInfo to v0.7.93 (2017-02-28), compiled with ICL 17.0 and MSVC 12.0
+* Updated FAAD decoder to v2.7 from CVS in order to include latest libFAAD fixes (2016-11-11)
 
 ## LameXP v4.14 [2016-11-19] ## {-}
 
diff --git a/etc/Patches/FAAD-v2.7-CVS20161111-UTF8+Flush+BuildFixes.V3.diff b/etc/Patches/FAAD-v2.7-CVS20161111-UTF8+Flush+BuildFixes.V3.diff
new file mode 100644 (file)
index 0000000..8ba4e94
--- /dev/null
@@ -0,0 +1,631 @@
+ frontend/audio.c           | 11 +++++-
+ frontend/faad.sln          | 16 ++++----
+ frontend/main.c            | 89 ++++++++++++++++++++++++++++++++---------
+ frontend/unicode_support.c | 98 ++++++++++++++++++++++++++++++++++++++++++++++
+ frontend/unicode_support.h | 21 ++++++++++
+ include/neaacdec.h         |  6 +--
+ libfaad/common.h           |  4 +-
+ libfaad/decoder.c          |  6 +--
+ libfaad/lt_predict.c       |  2 +-
+ libfaad/output.c           | 36 ++++++++---------
+ 10 files changed, 233 insertions(+), 56 deletions(-)
+
+diff --git a/frontend/audio.c b/frontend/audio.c
+index 9ab7a2a..20f92a2 100644
+--- a/frontend/audio.c
++++ b/frontend/audio.c
+@@ -39,11 +39,14 @@
+ #include <stdint.h>
+ #include "audio.h"
++#include "unicode_support.h"
+ audio_file *open_audio_file(char *infile, int samplerate, int channels,
+                             int outputFormat, int fileType, long channelMask)
+ {
++    wchar_t *fileNameW;
++
+     audio_file *aufile = malloc(sizeof(audio_file));
+     aufile->outputFormat = outputFormat;
+@@ -80,7 +83,13 @@ audio_file *open_audio_file(char *infile, int samplerate, int channels,
+         aufile->toStdio = 1;
+     } else {
+         aufile->toStdio = 0;
+-        aufile->sndfile = fopen(infile, "wb");
++        aufile->sndfile = NULL;
++        fileNameW = utf8_to_utf16(infile);
++        if(fileNameW)
++        {
++            aufile->sndfile = _wfopen(fileNameW, L"wb");
++            free(fileNameW);
++        }
+     }
+     if (aufile->sndfile == NULL)
+diff --git a/frontend/faad.sln b/frontend/faad.sln
+index a47200b..ddbea6d 100644
+--- a/frontend/faad.sln
++++ b/frontend/faad.sln
+@@ -1,15 +1,13 @@
+ ï»¿
+-Microsoft Visual Studio Solution File, Format Version 9.00
+-# Visual Studio 2005
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "faad", "faad.vcproj", "{2BD8CBB3-DFC9-4A6A-9B7A-07ED749BED58}"
+-      ProjectSection(ProjectDependencies) = postProject
+-              {F470BB4A-7675-4D6A-B310-41F33AC6F987} = {F470BB4A-7675-4D6A-B310-41F33AC6F987}
+-              {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114} = {BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}
+-      EndProjectSection
++Microsoft Visual Studio Solution File, Format Version 12.00
++# Visual Studio 14
++VisualStudioVersion = 14.0.25420.1
++MinimumVisualStudioVersion = 10.0.40219.1
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "faad", "faad.vcxproj", "{2BD8CBB3-DFC9-4A6A-9B7A-07ED749BED58}"
+ EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfaad", "..\libfaad\libfaad.vcproj", "{BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}"
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "libfaad", "..\libfaad\libfaad.vcxproj", "{BC3EFE27-9015-4C9C-AD3C-72B3B7ED2114}"
+ EndProject
+-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mp4ff", "..\common\mp4ff\mp4ff.vcproj", "{F470BB4A-7675-4D6A-B310-41F33AC6F987}"
++Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mp4ff", "..\common\mp4ff\mp4ff.vcxproj", "{F470BB4A-7675-4D6A-B310-41F33AC6F987}"
+ EndProject
+ Global
+       GlobalSection(SolutionConfigurationPlatforms) = preSolution
+diff --git a/frontend/main.c b/frontend/main.c
+index f943d9d..e4294d0 100644
+--- a/frontend/main.c
++++ b/frontend/main.c
+@@ -44,11 +44,13 @@
+ #include <stdlib.h>
+ #include <string.h>
+ #include <getopt.h>
++#include <io.h>
+ #include <neaacdec.h>
+ #include <mp4ff.h>
+ #include "audio.h"
++#include "unicode_support.h"
+ #ifndef min
+ #define min(a,b) ( (a) < (b) ? (a) : (b) )
+@@ -71,6 +73,8 @@ static void faad_fprintf(FILE *stream, const char *fmt, ...)
+         vfprintf(stream, fmt, ap);
+         va_end(ap);
++
++        fflush(stream);
+     }
+ }
+@@ -450,7 +454,7 @@ static int decodeAACfile(char *aacfile, char *sndfile, char *adts_fn, int to_std
+     NeAACDecFrameInfo frameInfo;
+     NeAACDecConfigurationPtr config;
+-    char percents[200];
++    char percents[300];
+     int percent, old_percent = -1;
+     int bread, fileread;
+     int header_type = 0;
+@@ -463,11 +467,19 @@ static int decodeAACfile(char *aacfile, char *sndfile, char *adts_fn, int to_std
+     aac_buffer b;
++    wchar_t *fileNameW;
++
+     memset(&b, 0, sizeof(aac_buffer));
+     if (adts_out)
+     {
+-        adtsFile = fopen(adts_fn, "wb");
++        adtsFile = NULL;
++        fileNameW = utf8_to_utf16(adts_fn);
++        if(fileNameW)
++        {
++            adtsFile = _wfopen(fileNameW, L"wb");
++            free(fileNameW);
++        }
+         if (adtsFile == NULL)
+         {
+             faad_fprintf(stderr, "Error opening file: %s\n", adts_fn);
+@@ -477,20 +489,26 @@ static int decodeAACfile(char *aacfile, char *sndfile, char *adts_fn, int to_std
+     if (0 == strcmp(aacfile, "-"))
+     {
+-      b.infile = stdin;
++        b.infile = stdin;
+ #ifdef _WIN32
+         setmode(fileno(stdin), O_BINARY);
+ #endif
+-
+-    } else
++    }
++    else
+     {
+-      b.infile = fopen(aacfile, "rb");
+-      if (b.infile == NULL)
+-      {
+-          /* unable to open file */
+-          faad_fprintf(stderr, "Error opening file: %s\n", aacfile);
+-          return 1;
+-      }
++        b.infile = NULL;
++        fileNameW = utf8_to_utf16(aacfile);
++        if(fileNameW)
++        {
++            b.infile = _wfopen(fileNameW, L"rb");
++            free(fileNameW);
++        }
++        if (b.infile == NULL)
++        {
++            /* unable to open file */
++            faad_fprintf(stderr, "Error opening file: %s\n", aacfile);
++            return 1;
++        }
+     }
+     retval = fseek(b.infile, 0, SEEK_END);
+@@ -715,7 +733,7 @@ static int decodeAACfile(char *aacfile, char *sndfile, char *adts_fn, int to_std
+         if (percent > old_percent)
+         {
+             old_percent = percent;
+-            sprintf(percents, "%d%% decoding %s.", percent, aacfile);
++            _snprintf_s(percents, 300, _TRUNCATE, "[%d%%] decoding %s.", percent, aacfile);
+             faad_fprintf(stderr, "%s\r", percents);
+ #ifdef _WIN32
+             SetConsoleTitle(percents);
+@@ -817,7 +835,7 @@ static int decodeMP4file(char *mp4file, char *sndfile, char *adts_fn, int to_std
+     unsigned char *buffer;
+     int buffer_size;
+-    char percents[200];
++    char percents[300];
+     int percent, old_percent = -1;
+     int first_time = 1;
+@@ -828,6 +846,7 @@ static int decodeMP4file(char *mp4file, char *sndfile, char *adts_fn, int to_std
+     unsigned int framesize;
+     unsigned long timescale;
++    wchar_t *fileNameW;
+     /* initialise the callback structure */
+     mp4ff_callback_t *mp4cb = malloc(sizeof(mp4ff_callback_t));
+@@ -837,7 +856,14 @@ static int decodeMP4file(char *mp4file, char *sndfile, char *adts_fn, int to_std
+         return 1;
+     }
+-    mp4File = fopen(mp4file, "rb");
++    mp4File = NULL;
++    fileNameW = utf8_to_utf16(mp4file);
++    if(fileNameW)
++    {
++        mp4File = _wfopen(fileNameW, L"rb");
++        free(fileNameW);
++    }
++
+     mp4cb->read = read_callback;
+     mp4cb->seek = seek_callback;
+     mp4cb->user_data = mp4File;
+@@ -854,7 +880,13 @@ static int decodeMP4file(char *mp4file, char *sndfile, char *adts_fn, int to_std
+     if (adts_out)
+     {
+-        adtsFile = fopen(adts_fn, "wb");
++        adtsFile = NULL;
++        fileNameW = utf8_to_utf16(adts_fn);
++        if(fileNameW)
++        {
++            adtsFile = _wfopen(fileNameW, L"wb");
++            free(fileNameW);
++        }
+         if (adtsFile == NULL)
+         {
+             faad_fprintf(stderr, "Error opening file: %s\n", adts_fn);
+@@ -1060,7 +1092,7 @@ static int decodeMP4file(char *mp4file, char *sndfile, char *adts_fn, int to_std
+         if (percent > old_percent)
+         {
+             old_percent = percent;
+-            sprintf(percents, "%d%% decoding %s.", percent, mp4file);
++            _snprintf_s(percents, 300, _TRUNCATE, "[%d%%] decoding %s.", percent, mp4file);
+             faad_fprintf(stderr, "%s\r", percents);
+ #ifdef _WIN32
+             SetConsoleTitle(percents);
+@@ -1098,7 +1130,7 @@ static int decodeMP4file(char *mp4file, char *sndfile, char *adts_fn, int to_std
+     return frameInfo.error;
+ }
+-int main(int argc, char *argv[])
++int faad_main(int argc, char *argv[])
+ {
+     int result;
+     int infoOnly = 0;
+@@ -1122,6 +1154,7 @@ int main(int argc, char *argv[])
+     unsigned char header[8];
+     float length = 0;
+     FILE *hMP4File;
++    wchar_t *fileNameW;
+ /* System dependant types */
+ #ifdef _WIN32
+@@ -1352,7 +1385,13 @@ int main(int argc, char *argv[])
+     } else {
+       mp4file = 0;
+-      hMP4File = fopen(aacFileName, "rb");
++      hMP4File = NULL;
++      fileNameW = utf8_to_utf16(aacFileName);
++      if(fileNameW)
++      {
++              hMP4File = _wfopen(fileNameW, L"rb");
++              free(fileNameW);
++      }
+       if (!hMP4File)
+       {
+           faad_fprintf(stderr, "Error opening file: %s\n", aacFileName);
+@@ -1415,3 +1454,15 @@ int main(int argc, char *argv[])
+     return 0;
+ }
++
++int wmain(int argc, wchar_t **argv_utf16)
++{
++    int result = 0;
++    char **argv_utf8 = NULL;
++
++    init_commandline_arguments_utf8(argc, &argv_utf8, argv_utf16);
++    result = faad_main(argc, argv_utf8);
++    free_commandline_arguments_utf8(argc, &argv_utf8);
++  
++    return result;
++}
+diff --git a/frontend/unicode_support.c b/frontend/unicode_support.c
+new file mode 100644
+index 0000000..21ecd5c
+--- /dev/null
++++ b/frontend/unicode_support.c
+@@ -0,0 +1,98 @@
++#include "unicode_support.h"
++
++#include <stdio.h>
++#include <windows.h>
++
++char *utf16_to_utf8(const wchar_t *input)
++{
++      char *Buffer;
++      int BuffSize, Result;
++
++      BuffSize = WideCharToMultiByte(CP_UTF8, 0, input, -1, NULL, 0, NULL, NULL);
++      Buffer = (char*) malloc(sizeof(char) * BuffSize);
++      
++      if(!Buffer)
++      {
++              fprintf(stderr, "Error in utf16_to_utf8: Memory allocation failed!\n");
++              return NULL;
++      }
++
++      Result = WideCharToMultiByte(CP_UTF8, 0, input, -1, Buffer, BuffSize, NULL, NULL);
++      return ((Result > 0) && (Result <= BuffSize)) ? Buffer : NULL;
++}
++
++wchar_t *utf8_to_utf16(const char *input)
++{
++      wchar_t *Buffer;
++      int BuffSize, Result;
++
++      BuffSize = MultiByteToWideChar(CP_UTF8, 0, input, -1, NULL, 0);
++      Buffer = (wchar_t*) malloc(sizeof(wchar_t) * BuffSize);
++
++      if(!Buffer)
++      {
++              fprintf(stderr, "Error in utf8_to_utf16: Memory allocation failed!\n");
++              return NULL;
++      }
++
++      Result = MultiByteToWideChar(CP_UTF8, 0, input, -1, Buffer, BuffSize);
++      return ((Result > 0) && (Result <= BuffSize)) ? Buffer : NULL;
++}
++
++void init_commandline_arguments_utf8(int argc, char ***argv_utf8, wchar_t **argv_utf16)
++{
++      int i = 0;
++      
++      *argv_utf8 = (char**) malloc(argc * sizeof(char*));
++      if(!(*argv_utf8))
++      {
++              fprintf(stderr, "Error in init_commandline_arguments_utf8: Memory allocation failed!\n");
++              exit(-1);
++      }
++      
++      for(i = 0; i < argc; i++)
++      {
++              (*argv_utf8)[i] = utf16_to_utf8(argv_utf16[i]);
++              if(!(*argv_utf8)[i])
++              {
++                      fprintf(stderr, "Error in init_commandline_arguments_utf8: Memory allocation failed!\n");
++                      exit(-1);
++              }
++      }
++}
++
++void free_commandline_arguments_utf8(int argc, char ***argv_utf8)
++{
++      int i = 0;
++      
++      if(*argv_utf8 != NULL)
++      {
++              for(i = 0; i < argc; i++)
++              {
++                      if((*argv_utf8)[i] != NULL)
++                      {
++                              free((*argv_utf8)[i]);
++                              (*argv_utf8)[i] = NULL;
++                      }
++              }
++              free(*argv_utf8);
++              *argv_utf8 = NULL;
++      }
++}
++
++FILE *fopen_utf8(const char *filename_utf8, const char *mode_utf8)
++{
++      FILE *ret = NULL;
++      wchar_t *filename_utf16 = utf8_to_utf16(filename_utf8);
++      wchar_t *mode_utf16 = utf8_to_utf16(mode_utf8);
++      
++      if(filename_utf16 && mode_utf16)
++      {
++              ret = _wfopen(filename_utf16, mode_utf16);
++      }
++
++      if(filename_utf16) free(filename_utf16);
++      if(mode_utf16) free(mode_utf16);
++
++      return ret;
++}
+diff --git a/frontend/unicode_support.h b/frontend/unicode_support.h
+new file mode 100644
+index 0000000..cc13fd9
+--- /dev/null
++++ b/frontend/unicode_support.h
+@@ -0,0 +1,21 @@
++#ifndef UNICODE_SUPPORT_H_INCLUDED
++#define UNICODE_SUPPORT_H_INCLUDED
++
++#include <ctype.h>
++#include <stdio.h>
++#include <stdlib.h>
++
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++char *utf16_to_utf8(const wchar_t *input);
++wchar_t *utf8_to_utf16(const char *input);
++void init_commandline_arguments_utf8(int argc, char ***argv_utf8, wchar_t **argv_utf16);
++void free_commandline_arguments_utf8(int argc, char ***argv_utf8);
++FILE *fopen_utf8(const char *filename_utf8, const char *mode_utf8);
++
++#ifdef __cplusplus
++}
++#endif
++#endif
+\ No newline at end of file
+diff --git a/include/neaacdec.h b/include/neaacdec.h
+index 610a00b..7904175 100644
+--- a/include/neaacdec.h
++++ b/include/neaacdec.h
+@@ -202,7 +202,7 @@ typedef struct NeAACDecFrameInfo
+     unsigned char ps;
+ } NeAACDecFrameInfo;
+-char NEAACDECAPI *NeAACDecGetErrorMessage(unsigned char errcode);
++char* NEAACDECAPI NeAACDecGetErrorMessage(unsigned char errcode);
+ unsigned long NEAACDECAPI NeAACDecGetCapabilities(void);
+@@ -235,12 +235,12 @@ void NEAACDECAPI NeAACDecPostSeekReset(NeAACDecHandle hDecoder, long frame);
+ void NEAACDECAPI NeAACDecClose(NeAACDecHandle hDecoder);
+-void NEAACDECAPI *NeAACDecDecode(NeAACDecHandle hDecoder,
++void* NEAACDECAPI NeAACDecDecode(NeAACDecHandle hDecoder,
+                                  NeAACDecFrameInfo *hInfo,
+                                  unsigned char *buffer,
+                                  unsigned long buffer_size);
+-void NEAACDECAPI *NeAACDecDecode2(NeAACDecHandle hDecoder,
++void* NEAACDECAPI NeAACDecDecode2(NeAACDecHandle hDecoder,
+                                   NeAACDecFrameInfo *hInfo,
+                                   unsigned char *buffer,
+                                   unsigned long buffer_size,
+diff --git a/libfaad/common.h b/libfaad/common.h
+index 897a0f0..74f4a56 100644
+--- a/libfaad/common.h
++++ b/libfaad/common.h
+@@ -316,7 +316,7 @@ char *strchr(), *strrchr();
+   #if defined(_WIN32) && !defined(_WIN64) && !defined(__MINGW32__)
+     #ifndef HAVE_LRINTF
+     #define HAS_LRINTF
+-    static INLINE int lrintf(float f)
++    static INLINE int FAAD_lrintf(float f)
+     {
+         int i;
+         __asm
+@@ -332,7 +332,7 @@ char *strchr(), *strrchr();
+     #ifndef HAVE_LRINTF
+     #define HAS_LRINTF
+     // from http://www.stereopsis.com/FPU.html
+-    static INLINE int lrintf(float f)
++    static INLINE int FAAD_lrintf(float f)
+     {
+         int i;
+         __asm__ __volatile__ (
+diff --git a/libfaad/decoder.c b/libfaad/decoder.c
+index 42bbc84..67feb9d 100644
+--- a/libfaad/decoder.c
++++ b/libfaad/decoder.c
+@@ -64,7 +64,7 @@ static void create_channel_config(NeAACDecStruct *hDecoder,
+                                   NeAACDecFrameInfo *hInfo);
+-char NEAACDECAPI *NeAACDecGetErrorMessage(unsigned char errcode)
++char* NEAACDECAPI NeAACDecGetErrorMessage(unsigned char errcode)
+ {
+     if (errcode >= NUM_ERROR_MESSAGES)
+         return NULL;
+@@ -790,7 +790,7 @@ static void create_channel_config(NeAACDecStruct *hDecoder, NeAACDecFrameInfo *h
+     }
+ }
+-void NEAACDECAPI *NeAACDecDecode(NeAACDecHandle hpDecoder,
++void* NEAACDECAPI NeAACDecDecode(NeAACDecHandle hpDecoder,
+                                  NeAACDecFrameInfo *hInfo,
+                                  unsigned char *buffer,
+                                  unsigned long buffer_size)
+@@ -799,7 +799,7 @@ void NEAACDECAPI *NeAACDecDecode(NeAACDecHandle hpDecoder,
+     return aac_frame_decode(hDecoder, hInfo, buffer, buffer_size, NULL, 0);
+ }
+-void NEAACDECAPI *NeAACDecDecode2(NeAACDecHandle hpDecoder,
++void* NEAACDECAPI NeAACDecDecode2(NeAACDecHandle hpDecoder,
+                                   NeAACDecFrameInfo *hInfo,
+                                   unsigned char *buffer,
+                                   unsigned long buffer_size,
+diff --git a/libfaad/lt_predict.c b/libfaad/lt_predict.c
+index 2be18ae..aa02fb0 100644
+--- a/libfaad/lt_predict.c
++++ b/libfaad/lt_predict.c
+@@ -166,7 +166,7 @@ static INLINE int16_t real_to_int16(real_t sig_in)
+             return -32768;
+     }
+-    return lrintf(sig_in);
++    return FAAD_lrintf(sig_in);
+ }
+ #endif
+diff --git a/libfaad/output.c b/libfaad/output.c
+index 4245627..1aeb747 100644
+--- a/libfaad/output.c
++++ b/libfaad/output.c
+@@ -103,7 +103,7 @@ static void to_PCM_16bit(NeAACDecStruct *hDecoder, real_t **input,
+             CLIP(inp, 32767.0f, -32768.0f);
+-            (*sample_buffer)[i] = (int16_t)lrintf(inp);
++            (*sample_buffer)[i] = (int16_t)FAAD_lrintf(inp);
+         }
+         break;
+     case CONV(2,0):
+@@ -116,8 +116,8 @@ static void to_PCM_16bit(NeAACDecStruct *hDecoder, real_t **input,
+                 CLIP(inp0, 32767.0f, -32768.0f);
+-                (*sample_buffer)[(i*2)+0] = (int16_t)lrintf(inp0);
+-                (*sample_buffer)[(i*2)+1] = (int16_t)lrintf(inp0);
++                (*sample_buffer)[(i*2)+0] = (int16_t)FAAD_lrintf(inp0);
++                (*sample_buffer)[(i*2)+1] = (int16_t)FAAD_lrintf(inp0);
+             }
+         } else {
+             ch  = hDecoder->internal_channel[0];
+@@ -130,8 +130,8 @@ static void to_PCM_16bit(NeAACDecStruct *hDecoder, real_t **input,
+                 CLIP(inp0, 32767.0f, -32768.0f);
+                 CLIP(inp1, 32767.0f, -32768.0f);
+-                (*sample_buffer)[(i*2)+0] = (int16_t)lrintf(inp0);
+-                (*sample_buffer)[(i*2)+1] = (int16_t)lrintf(inp1);
++                (*sample_buffer)[(i*2)+0] = (int16_t)FAAD_lrintf(inp0);
++                (*sample_buffer)[(i*2)+1] = (int16_t)FAAD_lrintf(inp1);
+             }
+         }
+         break;
+@@ -144,7 +144,7 @@ static void to_PCM_16bit(NeAACDecStruct *hDecoder, real_t **input,
+                 CLIP(inp, 32767.0f, -32768.0f);
+-                (*sample_buffer)[(i*channels)+ch] = (int16_t)lrintf(inp);
++                (*sample_buffer)[(i*channels)+ch] = (int16_t)FAAD_lrintf(inp);
+             }
+         }
+         break;
+@@ -169,7 +169,7 @@ static void to_PCM_24bit(NeAACDecStruct *hDecoder, real_t **input,
+             inp *= 256.0f;
+             CLIP(inp, 8388607.0f, -8388608.0f);
+-            (*sample_buffer)[i] = (int32_t)lrintf(inp);
++            (*sample_buffer)[i] = (int32_t)FAAD_lrintf(inp);
+         }
+         break;
+     case CONV(2,0):
+@@ -183,8 +183,8 @@ static void to_PCM_24bit(NeAACDecStruct *hDecoder, real_t **input,
+                 inp0 *= 256.0f;
+                 CLIP(inp0, 8388607.0f, -8388608.0f);
+-                (*sample_buffer)[(i*2)+0] = (int32_t)lrintf(inp0);
+-                (*sample_buffer)[(i*2)+1] = (int32_t)lrintf(inp0);
++                (*sample_buffer)[(i*2)+0] = (int32_t)FAAD_lrintf(inp0);
++                (*sample_buffer)[(i*2)+1] = (int32_t)FAAD_lrintf(inp0);
+             }
+         } else {
+             ch  = hDecoder->internal_channel[0];
+@@ -199,8 +199,8 @@ static void to_PCM_24bit(NeAACDecStruct *hDecoder, real_t **input,
+                 CLIP(inp0, 8388607.0f, -8388608.0f);
+                 CLIP(inp1, 8388607.0f, -8388608.0f);
+-                (*sample_buffer)[(i*2)+0] = (int32_t)lrintf(inp0);
+-                (*sample_buffer)[(i*2)+1] = (int32_t)lrintf(inp1);
++                (*sample_buffer)[(i*2)+0] = (int32_t)FAAD_lrintf(inp0);
++                (*sample_buffer)[(i*2)+1] = (int32_t)FAAD_lrintf(inp1);
+             }
+         }
+         break;
+@@ -214,7 +214,7 @@ static void to_PCM_24bit(NeAACDecStruct *hDecoder, real_t **input,
+                 inp *= 256.0f;
+                 CLIP(inp, 8388607.0f, -8388608.0f);
+-                (*sample_buffer)[(i*channels)+ch] = (int32_t)lrintf(inp);
++                (*sample_buffer)[(i*channels)+ch] = (int32_t)FAAD_lrintf(inp);
+             }
+         }
+         break;
+@@ -239,7 +239,7 @@ static void to_PCM_32bit(NeAACDecStruct *hDecoder, real_t **input,
+             inp *= 65536.0f;
+             CLIP(inp, 2147483647.0f, -2147483648.0f);
+-            (*sample_buffer)[i] = (int32_t)lrintf(inp);
++            (*sample_buffer)[i] = (int32_t)FAAD_lrintf(inp);
+         }
+         break;
+     case CONV(2,0):
+@@ -253,8 +253,8 @@ static void to_PCM_32bit(NeAACDecStruct *hDecoder, real_t **input,
+                 inp0 *= 65536.0f;
+                 CLIP(inp0, 2147483647.0f, -2147483648.0f);
+-                (*sample_buffer)[(i*2)+0] = (int32_t)lrintf(inp0);
+-                (*sample_buffer)[(i*2)+1] = (int32_t)lrintf(inp0);
++                (*sample_buffer)[(i*2)+0] = (int32_t)FAAD_lrintf(inp0);
++                (*sample_buffer)[(i*2)+1] = (int32_t)FAAD_lrintf(inp0);
+             }
+         } else {
+             ch  = hDecoder->internal_channel[0];
+@@ -269,8 +269,8 @@ static void to_PCM_32bit(NeAACDecStruct *hDecoder, real_t **input,
+                 CLIP(inp0, 2147483647.0f, -2147483648.0f);
+                 CLIP(inp1, 2147483647.0f, -2147483648.0f);
+-                (*sample_buffer)[(i*2)+0] = (int32_t)lrintf(inp0);
+-                (*sample_buffer)[(i*2)+1] = (int32_t)lrintf(inp1);
++                (*sample_buffer)[(i*2)+0] = (int32_t)FAAD_lrintf(inp0);
++                (*sample_buffer)[(i*2)+1] = (int32_t)FAAD_lrintf(inp1);
+             }
+         }
+         break;
+@@ -284,7 +284,7 @@ static void to_PCM_32bit(NeAACDecStruct *hDecoder, real_t **input,
+                 inp *= 65536.0f;
+                 CLIP(inp, 2147483647.0f, -2147483648.0f);
+-                (*sample_buffer)[(i*channels)+ch] = (int32_t)lrintf(inp);
++                (*sample_buffer)[(i*channels)+ch] = (int32_t)FAAD_lrintf(inp);
+             }
+         }
+         break;
diff --git a/res/Tools.faad-i386.qrc b/res/Tools.faad-i386.qrc
new file mode 100644 (file)
index 0000000..d929af7
--- /dev/null
@@ -0,0 +1,2 @@
+<!DOCTYPE RCC>
+<RCC version="1.0"><qresource><file>tools/faad.i386.exe</file></qresource></RCC>
diff --git a/res/Tools.faad-sse2.qrc b/res/Tools.faad-sse2.qrc
new file mode 100644 (file)
index 0000000..3dfcaee
--- /dev/null
@@ -0,0 +1,2 @@
+<!DOCTYPE RCC>
+<RCC version="1.0"><qresource><file>tools/faad.sse2.exe</file></qresource></RCC>
diff --git a/res/Tools.faad.qrc b/res/Tools.faad.qrc
deleted file mode 100644 (file)
index 094d37c..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE RCC>
-<RCC version="1.0"><qresource><file>tools/faad.exe</file></qresource></RCC>
diff --git a/res/tools/faad.exe b/res/tools/faad.exe
deleted file mode 100644 (file)
index 1abecdf..0000000
Binary files a/res/tools/faad.exe and /dev/null differ
diff --git a/res/tools/faad.i386.exe b/res/tools/faad.i386.exe
new file mode 100644 (file)
index 0000000..2b03b84
Binary files /dev/null and b/res/tools/faad.i386.exe differ
diff --git a/res/tools/faad.sse2.exe b/res/tools/faad.sse2.exe
new file mode 100644 (file)
index 0000000..6138216
Binary files /dev/null and b/res/tools/faad.sse2.exe differ
index fb547ab..4c09ed2 100644 (file)
@@ -35,7 +35,7 @@
 #define VER_LAMEXP_MINOR_LO                                    5
 #define VER_LAMEXP_TYPE                                                Beta
 #define VER_LAMEXP_PATCH                                       1
-#define VER_LAMEXP_BUILD                                       1958
+#define VER_LAMEXP_BUILD                                       1960
 #define VER_LAMEXP_CONFG                                       1934
 
 ///////////////////////////////////////////////////////////////////////////////
index d0ababb..ecefd42 100644 (file)
@@ -71,7 +71,8 @@ g_lamexp_tools[] =
        {"4558728999a05f12fe88566e8308cba0ada200814c2a1bfe2507f49faf8f3994b0d52a829148f5c6321d24faa2718439", CPU_TYPE_ALL_ALL, "avs2wav.exe", 13, ""},
        {"07834b1b8ecac2f3db79ad048005eca3a284cb759e15d399eb1a560a403122e20db5f08e60319759b8463aeef2410d02", CPU_TYPE_ALL_ALL, "dcaenc.exe", 20120419, ""},
        {"7c249f507b96967bedabdd7e631638807a7595ebff58eaaadf63530783d515eda9660bc2b1a0457fddae7e3eaef8a074", CPU_TYPE_ALL_ALL, "elevator.exe", UINT_MAX, ""},
-       {"bbc262cfe9c48633e5f1780d30347d7663075cfd7bdc76347cce3b1191d62f788d9b91bc63dffae2f66d1759d5849e92", CPU_TYPE_ALL_ALL, "faad.exe", 27, ""},
+       {"5c4a5cdd708b5857bcb064558be81a2dfb16401e796b296f6eee7c63042acbeae12e1e2f1f3d0fd096eaf73201b54e10", CPU_TYPE_ALL_GEN, "faad.i386.exe", 27, ""},
+       {"72447794cf411e1e4ce71facf5f60023f001d203894cf40185a0ee13e144e93d72ac99f2ed30a9168450ce5bf882f99f", CPU_TYPE_ALL_SSX, "faad.sse2.exe", 27, ""},
        {"16146a44fc5de63b1fbe4f2ba0b063acb243af2dbb5ea4ec1556669a026400bec5ef176689d5eb2ac03d9daf6053d39d", CPU_TYPE_X86_GEN, "flac.x86-i386.exe", 131, ""},
        {"4ffb7341498b18cc826407b3511598b65b612150eeb87fad328ed9cb0b0857b07b9e6a0977c2bd377360db709fb87eee", CPU_TYPE_X86_SSX, "flac.x86-sse2.exe", 131, ""},
        {"d609529d82368c22c11cc1f3a9285d7cfab84568f45ccebd1bf94b3669acc15ee93220d39f23d38943fcbb9df85708a2", CPU_TYPE_X64_NVX, "flac.x64-sse2.exe", 131, ""},