Added support for Opus Audio Codec, based on Opus-Tools v0.1.3 (2012-07-10) by Xiph.org/Mozilla

This commit is contained in:
LoRd_MuldeR 2012-07-20 23:19:08 +02:00
parent a49c58a96a
commit fcceeeaaac
45 changed files with 2083 additions and 1504 deletions

View File

@ -399,6 +399,7 @@ del "$(TargetDir)imageformats\q???d4.dll"
<ClCompile Include="src\Decoder_MAC.cpp" />
<ClCompile Include="src\Decoder_MP3.cpp" />
<ClCompile Include="src\Decoder_Musepack.cpp" />
<ClCompile Include="src\Decoder_Opus.cpp" />
<ClCompile Include="src\Decoder_Shorten.cpp" />
<ClCompile Include="src\Decoder_Speex.cpp" />
<ClCompile Include="src\Decoder_TTA.cpp" />
@ -424,6 +425,7 @@ del "$(TargetDir)imageformats\q???d4.dll"
<ClCompile Include="src\Encoder_DCA.cpp" />
<ClCompile Include="src\Encoder_FLAC.cpp" />
<ClCompile Include="src\Encoder_MP3.cpp" />
<ClCompile Include="src\Encoder_Opus.cpp" />
<ClCompile Include="src\Encoder_Vorbis.cpp" />
<ClCompile Include="src\Encoder_Wave.cpp" />
<ClCompile Include="src\Filter_Abstract.cpp" />
@ -479,6 +481,7 @@ del "$(TargetDir)imageformats\q???d4.dll"
<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_Opus.cpp" />
<ClCompile Include="tmp\MOC_Encoder_Vorbis.cpp" />
<ClCompile Include="tmp\MOC_Encoder_Wave.cpp" />
<ClCompile Include="tmp\MOC_Filter_Abstract.cpp" />
@ -519,9 +522,9 @@ del "$(TargetDir)imageformats\q???d4.dll"
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|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_Static_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|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)'=='Debug_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
@ -585,9 +588,9 @@ del "$(TargetDir)imageformats\q???d4.dll"
<ClInclude Include="src\Decoder_Avisynth.h" />
<CustomBuild Include="src\Encoder_AAC_FHG.h">
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|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_Static_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|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)'=='Debug_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
@ -647,15 +650,15 @@ del "$(TargetDir)imageformats\q???d4.dll"
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|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_Static_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|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)'=='Debug_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|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_Static_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|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)'=='Debug_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
@ -702,6 +705,24 @@ del "$(TargetDir)imageformats\q???d4.dll"
<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>
<CustomBuild Include="src\Encoder_Opus.h">
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|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_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|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_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|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\Decoder_Opus.h" />
<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>
@ -948,121 +969,103 @@ del "$(TargetDir)imageformats\q???d4.dll"
<CustomBuild Include="src\Encoder_AAC.h">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">"$(QTDIR5)\qtbase\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_Static_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|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>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
</CustomBuild>
<CustomBuild Include="src\Encoder_Abstract.h">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">"$(QTDIR5)\qtbase\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_Static_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|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>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
</CustomBuild>
<CustomBuild Include="src\Encoder_FLAC.h">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">"$(QTDIR5)\qtbase\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_Static_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|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>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
</CustomBuild>
<CustomBuild Include="src\Encoder_MP3.h">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">"$(QTDIR5)\qtbase\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_Static_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|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>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
</CustomBuild>
<CustomBuild Include="src\Encoder_Vorbis.h">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">"$(QTDIR5)\qtbase\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_Static_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|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>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
</CustomBuild>
<CustomBuild Include="src\Encoder_Wave.h">
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR5)\qtbase\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
</Command>
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">"$(QTDIR5)\qtbase\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_Static_Qt5|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static_Qt5|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|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>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
</CustomBuild>
<CustomBuild Include="src\Filter_Abstract.h">

View File

@ -364,6 +364,15 @@
<ClCompile Include="tmp\MOC_Thread_FileAnalyzer_ST.cpp">
<Filter>Generated Files\MOC</Filter>
</ClCompile>
<ClCompile Include="src\Encoder_Opus.cpp">
<Filter>Source Files\Encoders</Filter>
</ClCompile>
<ClCompile Include="tmp\MOC_Encoder_Opus.cpp">
<Filter>Generated Files\MOC</Filter>
</ClCompile>
<ClCompile Include="src\Decoder_Opus.cpp">
<Filter>Source Files\Decoders</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="src\Config.h">
@ -489,6 +498,9 @@
<ClInclude Include="src\Tools.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="src\Decoder_Opus.h">
<Filter>Header Files\Decoders</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ResourceCompile Include="LameXP.rc" />
@ -671,6 +683,9 @@
<CustomBuild Include="src\Thread_FileAnalyzer_ST.h">
<Filter>Header Files\Threads</Filter>
</CustomBuild>
<CustomBuild Include="src\Encoder_Opus.h">
<Filter>Header Files\Encoders</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<None Include="res\MainIcon.ico" />

View File

@ -17,8 +17,9 @@ a:visited { color: #0000EE; }
<h3>LameXP - Version History</h3><br>
<a name="4.05"></a>Changes between v4.04 and v4.05 [<font color="darkred">unreleased</font>]:<br><ul>
<li>Added support for Opus Audio Codec, based on Opus-Tools v0.1.3 (2012-07-10) by Xiph.org/Mozilla
<li>Added Swedish translation, thanks to Åke Engelbrektson &lt;eson57@gmail.com&gt;
<li>Updated Qt runtime libraries to v4.8.2 (2012-04-26), compiled with MSVC 10.0
<li>Updated Qt runtime libraries to v4.8.2 (2012-05-22), compiled with MSVC 10.0
<li>Updated mpg123 decoder to v1.14.3 (2012-07-01), compiled with GCC 4.6.1
<li>Updated MediaInfo to v0.7.58 (2012-05-28), compiled with ICL 12.1.7 and MSVC 10.0
<li>Implemented multi-threading in file analyzer for faster file import (about 2.5x to 6.0x faster!)

View File

@ -123,6 +123,7 @@ Currently the following output formats are supported by LameXP:<br><ul>
<li>ATSC A/52 (aka "AC-3"), using the <a href="http://aften.sourceforge.net/" target="_blank">Aften</a> encoder [built-in]
<li>DCA, using the <a href="https://gitorious.org/dtsenc" target="_blank">DCA Enc</a> encoder (still experimental) [built-in]
<li>Free Lossless Audio Codec (<a href="http://flac.sourceforge.net/" target="_blank">FLAC</a>) [built-in]
<li>Opus Audio Codec, using the <a href="http://www.opus-codec.org/" target="_blank">Opus-Tools</a> by Xiph.org/Mozilla [built-in]
<li>Uncompressed PCM / Waveform Audio File (WAV/RIFF)</ul>
<br><br>
@ -143,6 +144,7 @@ Currently the following input formats are supported by LameXP:<br><ul>
<li>MPEG Audio-Layer II (MP2), using mpg123 decoder [built-in]
<li>MPEG Audio-Layer III (MP3), using mpg123 decoder [built-in]
<li>Musepack
<li>Opus Audio Codec
<li>Shorten
<li>Speex
<li>Sun/NeXT Au

File diff suppressed because it is too large Load Diff

View File

@ -682,18 +682,6 @@
<source> Encoder / Format </source>
<translation> Kodierer / Format </translation>
</message>
<message>
<source>Lame MP3</source>
<translation></translation>
</message>
<message>
<source>Ogg Vorbis</source>
<translation></translation>
</message>
<message>
<source>Wave (PCM)</source>
<translation></translation>
</message>
<message>
<source>FLAC</source>
<translation></translation>
@ -1458,10 +1446,6 @@
<source>LameXP will &lt;i&gt;not&lt;/i&gt; check for Beta (pre-release) updates from now on.</source>
<translation>LameXP wird fortan &lt;i&gt;nicht&lt;/i&gt; nach Beta (Entwickler) Updates suchen.</translation>
</message>
<message>
<source>Aften A/52</source>
<translation></translation>
</message>
<message>
<source>Lame MP3:</source>
<translation></translation>
@ -1686,10 +1670,6 @@
<source>Bookmark Current Output Folder</source>
<translation>Lesezeichen für aktuelles Verzeichnis hinzufügen</translation>
</message>
<message>
<source>MPEG-4 AAC</source>
<translation></translation>
</message>
<message>
<source>AAC Encoder-Options</source>
<translation>AAC-Kodierer Optionen</translation>
@ -1754,10 +1734,6 @@
<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></translation>
</message>
<message>
<source>Export Meta Tags to CSV File</source>
<translation>Metatags als CSV-Datei exportieren</translation>
@ -1858,6 +1834,34 @@
<source>Refresh Directory Outline</source>
<translation>Verzeichnisbaum aktualisieren</translation>
</message>
<message>
<source>MP3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ogg/Vorbis</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AAC/MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PCM/Wave</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A/52</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Opus</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -681,18 +681,6 @@
<source> Encoder / Format </source>
<translation>Codificador / Formato </translation>
</message>
<message>
<source>Lame MP3</source>
<translation>Lame MP3</translation>
</message>
<message>
<source>Ogg Vorbis</source>
<translation>Ogg Vorbis</translation>
</message>
<message>
<source>Wave (PCM)</source>
<translation>Wav (PCM)</translation>
</message>
<message>
<source>FLAC</source>
<translation>FLAC</translation>
@ -1457,10 +1445,6 @@
<source>LameXP will &lt;i&gt;not&lt;/i&gt; check for Beta (pre-release) updates from now on.</source>
<translation>LameXP &lt;i&gt;no&lt;/i&gt;comprobará en busca de versiones Beta (pre-release).</translation>
</message>
<message>
<source>Aften A/52</source>
<translation>Aften A/52</translation>
</message>
<message>
<source>Lame MP3:</source>
<translation>Lame MP3:</translation>
@ -1685,10 +1669,6 @@
<source>Bookmark Current Output Folder</source>
<translation>Marcar la carpeta de salida actual</translation>
</message>
<message>
<source>MPEG-4 AAC</source>
<translation>MPEG-4 AAC</translation>
</message>
<message>
<source>AAC Encoder-Options</source>
<translation>Opciones AAC</translation>
@ -1753,10 +1733,6 @@
<source>Skipping update check this time, please be patient...</source>
<translation>Saltando la comprobación de actualizaciones, por favor espere...</translation>
</message>
<message>
<source>DCA Enc</source>
<translation>DCA Enc</translation>
</message>
<message>
<source>Export Meta Tags to CSV File</source>
<translation>Exportar Meta-Etiquetas a un archivo CSV</translation>
@ -1857,6 +1833,34 @@
<source>Refresh Directory Outline</source>
<translation>Actualizar esquema de directorios</translation>
</message>
<message>
<source>MP3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ogg/Vorbis</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AAC/MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PCM/Wave</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A/52</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Opus</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -686,18 +686,6 @@
<source> Encoder / Format </source>
<translation>Encodeur/Format</translation>
</message>
<message>
<source>Lame MP3</source>
<translation>Lame MP3</translation>
</message>
<message>
<source>Ogg Vorbis</source>
<translation>Ogg Vorbis</translation>
</message>
<message>
<source>Wave (PCM)</source>
<translation>Wave (PCM)</translation>
</message>
<message>
<source>FLAC</source>
<translation>FLAC</translation>
@ -1467,10 +1455,6 @@ Ouvrir le dossier récursivement...</translation>
<source>LameXP will &lt;i&gt;not&lt;/i&gt; check for Beta (pre-release) updates from now on.</source>
<translation>Désormais LameXP ne vérifiera &lt;i&gt;pas&lt;/i&gt; les mises à jour Beta.</translation>
</message>
<message>
<source>Aften A/52</source>
<translation>Aften A/52</translation>
</message>
<message>
<source>Lame MP3:</source>
<translation>Lame MP3 :</translation>
@ -1695,10 +1679,6 @@ Ouvrir le dossier récursivement...</translation>
<source>Bookmark Current Output Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG-4 AAC</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AAC Encoder-Options</source>
<translation type="unfinished"></translation>
@ -1763,10 +1743,6 @@ 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>
<message>
<source>Export Meta Tags to CSV File</source>
<translation type="unfinished"></translation>
@ -1867,6 +1843,34 @@ Ouvrir le dossier récursivement...</translation>
<source>Refresh Directory Outline</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MP3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ogg/Vorbis</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AAC/MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PCM/Wave</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A/52</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Opus</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -682,18 +682,6 @@
<source> Encoder / Format </source>
<translation>Encoder / Formato</translation>
</message>
<message>
<source>Lame MP3</source>
<translation>Lame MP3</translation>
</message>
<message>
<source>Ogg Vorbis</source>
<translation>Ogg Vorbis</translation>
</message>
<message>
<source>Wave (PCM)</source>
<translation>Wave (PCM)</translation>
</message>
<message>
<source>FLAC</source>
<translation>FLAC</translation>
@ -1458,10 +1446,6 @@
<source>LameXP will &lt;i&gt;not&lt;/i&gt; check for Beta (pre-release) updates from now on.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Aften A/52</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lame MP3:</source>
<translation type="unfinished">Lame MP3:</translation>
@ -1686,10 +1670,6 @@
<source>Bookmark Current Output Folder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MPEG-4 AAC</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AAC Encoder-Options</source>
<translation type="unfinished"></translation>
@ -1754,10 +1734,6 @@
<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>
<message>
<source>Export Meta Tags to CSV File</source>
<translation type="unfinished"></translation>
@ -1858,6 +1834,34 @@
<source>Refresh Directory Outline</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MP3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ogg/Vorbis</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AAC/MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PCM/Wave</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A/52</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Opus</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -681,18 +681,6 @@
<source> Encoder / Format </source>
<translation type="unfinished"> / </translation>
</message>
<message>
<source>Lame MP3</source>
<translation type="unfinished">Lame MP3</translation>
</message>
<message>
<source>Ogg Vorbis</source>
<translation type="unfinished">Ogg Vorbis</translation>
</message>
<message>
<source>Wave (PCM)</source>
<translation type="unfinished">Wave (PCM)</translation>
</message>
<message>
<source>FLAC</source>
<translation type="unfinished">FLAC</translation>
@ -1457,10 +1445,6 @@
<source>LameXP will &lt;i&gt;not&lt;/i&gt; check for Beta (pre-release) updates from now on.</source>
<translation type="unfinished"> LameXP가 (pre-release) &lt;i&gt; &lt;/i&gt;.</translation>
</message>
<message>
<source>Aften A/52</source>
<translation type="unfinished">Aften A/52</translation>
</message>
<message>
<source>Lame MP3:</source>
<translation type="unfinished">Lame MP3:</translation>
@ -1685,10 +1669,6 @@
<source>Bookmark Current Output Folder</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>MPEG-4 AAC</source>
<translation type="unfinished">MPEG-4 AAC</translation>
</message>
<message>
<source>AAC Encoder-Options</source>
<translation type="unfinished">AAC Encoder-</translation>
@ -1753,10 +1733,6 @@
<source>Skipping update check this time, please be patient...</source>
<translation type="unfinished"> , ...</translation>
</message>
<message>
<source>DCA Enc</source>
<translation type="unfinished">DCA Enc</translation>
</message>
<message>
<source>Export Meta Tags to CSV File</source>
<translation type="unfinished">CSV </translation>
@ -1857,6 +1833,34 @@
<source>Refresh Directory Outline</source>
<translation type="unfinished"> </translation>
</message>
<message>
<source>MP3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ogg/Vorbis</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AAC/MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PCM/Wave</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A/52</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Opus</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

File diff suppressed because it is too large Load Diff

View File

@ -684,18 +684,6 @@
<source> Encoder / Format </source>
<translation type="unfinished">Кодер / Формат</translation>
</message>
<message>
<source>Lame MP3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ogg Vorbis</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Wave (PCM)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>FLAC</source>
<translation type="unfinished"></translation>
@ -1462,10 +1450,6 @@
<source>LameXP will &lt;i&gt;not&lt;/i&gt; check for Beta (pre-release) updates from now on.</source>
<translation type="unfinished">LameXP не бует &lt;i&gt;проверять&lt;/i&gt; наличие БЕТА (пред-релизных) обновлений.</translation>
</message>
<message>
<source>Aften A/52</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lame MP3:</source>
<translation type="unfinished"></translation>
@ -1691,10 +1675,6 @@
<source>Bookmark Current Output Folder</source>
<translation type="unfinished">Запомнить текущую выходную папку</translation>
</message>
<message>
<source>MPEG-4 AAC</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AAC Encoder-Options</source>
<translation type="unfinished">Параметры кодера AAC</translation>
@ -1759,10 +1739,6 @@
<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>
<message>
<source>Export Meta Tags to CSV File</source>
<translation type="unfinished">Экспорт Meta-тегов в файл CSV</translation>
@ -1863,6 +1839,34 @@
<source>Refresh Directory Outline</source>
<translation>Обновить</translation>
</message>
<message>
<source>MP3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ogg/Vorbis</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AAC/MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PCM/Wave</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A/52</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Opus</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

File diff suppressed because it is too large Load Diff

View File

@ -681,18 +681,6 @@
<source> Encoder / Format </source>
<translation>/</translation>
</message>
<message>
<source>Lame MP3</source>
<translation>Lame MP3</translation>
</message>
<message>
<source>Ogg Vorbis</source>
<translation>Ogg Vorbis</translation>
</message>
<message>
<source>Wave (PCM)</source>
<translation>Wav (PCM)</translation>
</message>
<message>
<source>FLAC</source>
<translation>FLAC</translation>
@ -1457,10 +1445,6 @@
<source>LameXP will &lt;i&gt;not&lt;/i&gt; check for Beta (pre-release) updates from now on.</source>
<translation>LameXP &lt;i&gt; &lt;/i&gt; .</translation>
</message>
<message>
<source>Aften A/52</source>
<translation>Aften A/52</translation>
</message>
<message>
<source>Lame MP3:</source>
<translation>Lame MP3:</translation>
@ -1685,10 +1669,6 @@
<source>Bookmark Current Output Folder</source>
<translation></translation>
</message>
<message>
<source>MPEG-4 AAC</source>
<translation>MPEG-4 AAC</translation>
</message>
<message>
<source>AAC Encoder-Options</source>
<translation>AAC -</translation>
@ -1753,10 +1733,6 @@
<source>Skipping update check this time, please be patient...</source>
<translation>,...</translation>
</message>
<message>
<source>DCA Enc</source>
<translation>DCA Enc</translation>
</message>
<message>
<source>Export Meta Tags to CSV File</source>
<translation>Meta標簽導出到CSV文件</translation>
@ -1857,6 +1833,34 @@
<source>Refresh Directory Outline</source>
<translation></translation>
</message>
<message>
<source>MP3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ogg/Vorbis</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AAC/MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PCM/Wave</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A/52</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Opus</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -682,18 +682,6 @@
<source> Encoder / Format </source>
<translation> Кодер / Формат </translation>
</message>
<message>
<source>Lame MP3</source>
<translation>Lame MP3</translation>
</message>
<message>
<source>Ogg Vorbis</source>
<translation>Ogg Vorbis</translation>
</message>
<message>
<source>Wave (PCM)</source>
<translation>Wave (PCM)</translation>
</message>
<message>
<source>FLAC</source>
<translation>FLAC</translation>
@ -1430,10 +1418,6 @@
<source>Cannot write to the selected directory. Please choose another directory!</source>
<translation>Не можливо вести запис до обраної теки. Будь ласка, оберіть іншу!</translation>
</message>
<message>
<source>Aften A/52</source>
<translation>Aften A/52</translation>
</message>
<message>
<source>Lame MP3:</source>
<translation>Lame MP3:</translation>
@ -1686,10 +1670,6 @@
<source>Bookmark Current Output Folder</source>
<translation>Додати поточну теку до закладок</translation>
</message>
<message>
<source>MPEG-4 AAC</source>
<translation>MPEG-4 AAC</translation>
</message>
<message>
<source>AAC Encoder-Options</source>
<translation>Налаштування кодера AAC</translation>
@ -1754,10 +1734,6 @@
<source>Skipping update check this time, please be patient...</source>
<translation>Наразі йде переривання перевірки оновлень, будь ласка, зачекайте...</translation>
</message>
<message>
<source>DCA Enc</source>
<translation>DCA Enc</translation>
</message>
<message>
<source>Export Meta Tags to CSV File</source>
<translation>Експортувати метадані до файлу CSV</translation>
@ -1858,6 +1834,34 @@
<source>Refresh Directory Outline</source>
<translation>Поновити структуру тек</translation>
</message>
<message>
<source>MP3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ogg/Vorbis</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AAC/MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PCM/Wave</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A/52</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Opus</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -681,18 +681,6 @@
<source> Encoder / Format </source>
<translation>/</translation>
</message>
<message>
<source>Lame MP3</source>
<translation>Lame MP3</translation>
</message>
<message>
<source>Ogg Vorbis</source>
<translation>Ogg Vorbis</translation>
</message>
<message>
<source>Wave (PCM)</source>
<translation>Wav (PCM)</translation>
</message>
<message>
<source>FLAC</source>
<translation>FLAC</translation>
@ -1457,10 +1445,6 @@
<source>LameXP will &lt;i&gt;not&lt;/i&gt; check for Beta (pre-release) updates from now on.</source>
<translation>LameXP &lt;i&gt; &lt;/i&gt; .</translation>
</message>
<message>
<source>Aften A/52</source>
<translation>Aften A/52</translation>
</message>
<message>
<source>Lame MP3:</source>
<translation>Lame MP3:</translation>
@ -1685,10 +1669,6 @@
<source>Bookmark Current Output Folder</source>
<translation></translation>
</message>
<message>
<source>MPEG-4 AAC</source>
<translation>MPEG-4 AAC</translation>
</message>
<message>
<source>AAC Encoder-Options</source>
<translation>AAC -</translation>
@ -1753,10 +1733,6 @@
<source>Skipping update check this time, please be patient...</source>
<translation>,...</translation>
</message>
<message>
<source>DCA Enc</source>
<translation>DCA Enc</translation>
</message>
<message>
<source>Export Meta Tags to CSV File</source>
<translation>Meta标签导出到CSV文件</translation>
@ -1857,6 +1833,34 @@
<source>Refresh Directory Outline</source>
<translation></translation>
</message>
<message>
<source>MP3</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Ogg/Vorbis</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>AAC/MP4</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>PCM/Wave</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>A/52</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>DCA</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Opus</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -787,7 +787,7 @@
<item row="0" column="1">
<widget class="QRadioButton" name="radioButtonEncoderMP3">
<property name="text">
<string>Lame MP3</string>
<string>MP3</string>
</property>
<property name="checked">
<bool>true</bool>
@ -797,21 +797,21 @@
<item row="0" column="3">
<widget class="QRadioButton" name="radioButtonEncoderVorbis">
<property name="text">
<string>Ogg Vorbis</string>
<string>Ogg/Vorbis</string>
</property>
</widget>
</item>
<item row="0" column="5">
<widget class="QRadioButton" name="radioButtonEncoderAAC">
<property name="text">
<string>MPEG-4 AAC</string>
<string>AAC/MP4</string>
</property>
</widget>
</item>
<item row="0" column="15">
<item row="0" column="17">
<widget class="QRadioButton" name="radioButtonEncoderPCM">
<property name="text">
<string>Wave (PCM)</string>
<string>PCM/Wave</string>
</property>
</widget>
</item>
@ -831,17 +831,17 @@
</property>
</spacer>
</item>
<item row="0" column="9">
<item row="0" column="11">
<widget class="QRadioButton" name="radioButtonEncoderAC3">
<property name="text">
<string>Aften A/52</string>
<string>A/52</string>
</property>
</widget>
</item>
<item row="0" column="13">
<item row="0" column="15">
<widget class="QRadioButton" name="radioButtonEncoderDCA">
<property name="text">
<string>DCA Enc</string>
<string>DCA</string>
</property>
</widget>
</item>
@ -884,7 +884,7 @@
</property>
</spacer>
</item>
<item row="0" column="12">
<item row="0" column="14">
<spacer name="horizontalSpacer_49">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@ -897,7 +897,7 @@
</property>
</spacer>
</item>
<item row="0" column="14">
<item row="0" column="16">
<spacer name="horizontalSpacer_50">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@ -910,7 +910,7 @@
</property>
</spacer>
</item>
<item row="0" column="16">
<item row="0" column="18">
<spacer name="horizontalSpacer_51">
<property name="orientation">
<enum>Qt::Horizontal</enum>
@ -943,6 +943,26 @@
</property>
</spacer>
</item>
<item row="0" column="9">
<widget class="QRadioButton" name="radioButtonEncoderOpus">
<property name="text">
<string>Opus</string>
</property>
</widget>
</item>
<item row="0" column="10">
<spacer name="horizontalSpacer_55">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>1</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
@ -1303,8 +1323,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">
@ -4102,6 +4122,8 @@
<include location="../res/Icons.qrc"/>
<include location="../res/Icons.qrc"/>
<include location="../res/Icons.qrc"/>
<include location="../res/Icons.qrc"/>
<include location="../res/Icons.qrc"/>
</resources>
<connections>
<connection>

View File

@ -8,6 +8,7 @@
<file>tools/mpcdec.exe</file>
<file>tools/mpg123.exe</file>
<file>tools/oggdec.exe</file>
<file>tools/opusdec.exe</file>
<file>tools/shorten.exe</file>
<file>tools/speexdec.exe</file>
<file>tools/tta.exe</file>

View File

@ -11,5 +11,6 @@
<file>tools/oggenc2.i386.exe</file>
<file>tools/oggenc2.sse2.exe</file>
<file>tools/oggenc2.x64.exe</file>
<file>tools/opusenc.exe</file>
</qresource>
</RCC>

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.

Binary file not shown.

BIN
res/tools/opusdec.exe Normal file

Binary file not shown.

BIN
res/tools/opusenc.exe Normal file

Binary file not shown.

View File

@ -29,8 +29,8 @@
#define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 5
#define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 7
#define VER_LAMEXP_BUILD 1050
#define VER_LAMEXP_PATCH 8
#define VER_LAMEXP_BUILD 1052
///////////////////////////////////////////////////////////////////////////////
// Tool versions (minimum expected versions!)

View File

@ -59,7 +59,7 @@ bool ALACDecoder::decode(const QString &sourceFile, const QString &outputFile, v
bool bAborted = false;
//The ALAC Decoder doesn't actually send any status updates :-[
emit statusUpdated(20 + (QUuid::createUuid().data1 % 80));
emit statusUpdated(20 + (QUuid::createUuid().data1 % 60));
while(process.state() != QProcess::NotRunning)
{

154
src/Decoder_Opus.cpp Normal file
View File

@ -0,0 +1,154 @@
///////////////////////////////////////////////////////////////////////////////
// LameXP - Audio Encoder Front-End
// Copyright (C) 2004-2012 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 "Decoder_Opus.h"
#include "Global.h"
#include <QDir>
#include <QProcess>
#include <QRegExp>
#include <QUuid>
OpusDecoder::OpusDecoder(void)
:
m_binary(lamexp_lookup_tool("opusdec.exe"))
{
if(m_binary.isEmpty())
{
throw "Error initializing Opus decoder. Tool 'opusdec.exe' is not registred!";
}
}
OpusDecoder::~OpusDecoder(void)
{
}
bool OpusDecoder::decode(const QString &sourceFile, const QString &outputFile, volatile bool *abortFlag)
{
QProcess process;
QStringList args;
args << QDir::toNativeSeparators(sourceFile);
args << QDir::toNativeSeparators(outputFile);
if(!startProcess(process, m_binary, args))
{
return false;
}
bool bTimeout = false;
bool bAborted = false;
int prevProgress = -1;
//QRegExp regExp("\\s+Time:\\s+(\\d+):(\\d+)\\.(\\d+)\\s+\\[(\\d+):(\\d+)\\.(\\d+)\\],");
//The ALAC Decoder doesn't actually send any status updates :-[
emit statusUpdated(20 + (QUuid::createUuid().data1 % 60));
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("opusdec 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)
{
int values[6];
for(int i = 0; i < 6; i++)
{
bool ok = false;
int temp = regExp.cap(i+1).toInt(&ok);
values[i] = (ok ? temp : 0);
}
int timeDone = (60 * values[0]) + values[1];
int timeLeft = (60 * values[3]) + values[4];
if(timeDone > 0 || timeLeft > 0)
{
int newProgress = qRound((static_cast<double>(timeDone) / static_cast<double>(timeDone + timeLeft)) * 100.0);
if(newProgress > prevProgress)
{
emit statusUpdated(newProgress);
prevProgress = qMin(newProgress + 2, 99);
}
}
} */
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;
}
bool OpusDecoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
if(containerType.compare("OGG", Qt::CaseInsensitive) == 0)
{
if(formatType.compare("Opus", Qt::CaseInsensitive) == 0)
{
{
return true;
}
}
}
return false;
}
QStringList OpusDecoder::supportedTypes(void)
{
return QStringList() << "Opus Audio Codec (*.opus *.ogg)";
}

38
src/Decoder_Opus.h Normal file
View File

@ -0,0 +1,38 @@
///////////////////////////////////////////////////////////////////////////////
// LameXP - Audio Encoder Front-End
// Copyright (C) 2004-2012 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 "Decoder_Abstract.h"
class OpusDecoder : public AbstractDecoder
{
public:
OpusDecoder(void);
~OpusDecoder(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;
};

View File

@ -226,6 +226,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(radioButtonEncoderOpus, SettingsModel::OpusEncoder);
m_encoderButtonGroup->addButton(radioButtonEncoderDCA, SettingsModel::DCAEncoder);
m_encoderButtonGroup->addButton(radioButtonEncoderPCM, SettingsModel::PCMEncoder);
m_modeButtonGroup = new QButtonGroup(this);
@ -238,6 +239,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);
radioButtonEncoderOpus->setChecked(m_settings->compressionEncoder() == SettingsModel::OpusEncoder);
radioButtonEncoderDCA->setChecked(m_settings->compressionEncoder() == SettingsModel::DCAEncoder);
radioButtonEncoderPCM->setChecked(m_settings->compressionEncoder() == SettingsModel::PCMEncoder);
radioButtonModeQuality->setChecked(m_settings->compressionRCMode() == SettingsModel::VBRMode);
@ -1455,6 +1457,7 @@ void MainWindow::encodeButtonClicked(void)
case SettingsModel::AACEncoder:
case SettingsModel::AC3Encoder:
case SettingsModel::FLACEncoder:
case SettingsModel::OpusEncoder:
case SettingsModel::DCAEncoder:
case SettingsModel::PCMEncoder:
break;
@ -3149,6 +3152,10 @@ void MainWindow::updateRCMode(int id)
sliderBitrate->setMinimum(0);
sliderBitrate->setMaximum(8);
break;
case SettingsModel::OpusEncoder:
sliderBitrate->setMinimum(1);
sliderBitrate->setMaximum(32);
break;
case SettingsModel::DCAEncoder:
sliderBitrate->setMinimum(1);
sliderBitrate->setMaximum(128);
@ -3191,6 +3198,9 @@ void MainWindow::updateBitrate(int value)
case SettingsModel::FLACEncoder:
labelBitrate->setText(tr("Compression %1").arg(value));
break;
case SettingsModel::OpusEncoder:
labelBitrate->setText(QString("&asymp; %1 kbps").arg(qMin(500, value * 8)));
break;
case SettingsModel::AC3Encoder:
labelBitrate->setText(tr("Quality Level %1").arg(qMin(1024, qMax(0, value * 64))));
break;

View File

@ -39,6 +39,7 @@
#include "Encoder_FLAC.h"
#include "Encoder_MP3.h"
#include "Encoder_Vorbis.h"
#include "Encoder_Opus.h"
#include "Encoder_Wave.h"
#include "Filter_Downmix.h"
#include "Filter_Normalize.h"
@ -835,7 +836,15 @@ AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
encoder = flacEncoder;
}
break;
case SettingsModel::DCAEncoder:
case SettingsModel::OpusEncoder:
{
OpusEncoder *opusEncoder = new OpusEncoder();
opusEncoder->setBitrate(m_settings->compressionBitrate());
opusEncoder->setRCMode(m_settings->compressionRCMode());
//TODO: opusEncoder->setCustomParams(m_settings->customParametersOpus());
encoder = opusEncoder;
}
break; case SettingsModel::DCAEncoder:
{
DCAEncoder *dcaEncoder = new DCAEncoder();
dcaEncoder->setBitrate(m_settings->compressionBitrate());

180
src/Encoder_Opus.cpp Normal file
View File

@ -0,0 +1,180 @@
///////////////////////////////////////////////////////////////////////////////
// LameXP - Audio Encoder Front-End
// Copyright (C) 2004-2012 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_Opus.h"
#include "Global.h"
#include "Model_Settings.h"
#include <QProcess>
#include <QDir>
#include <QUUid>
OpusEncoder::OpusEncoder(void)
:
m_binary(lamexp_lookup_tool("opusenc.exe"))
{
if(m_binary.isEmpty())
{
throw "Error initializing Opus encoder. Tool 'opusenc.exe' is not registred!";
}
}
OpusEncoder::~OpusEncoder(void)
{
}
bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel &metaInfo, const QString &outputFile, volatile bool *abortFlag)
{
QProcess process;
QStringList args;
args << "--music"; //TODO: Make other optimizations available!
switch(m_configRCMode)
{
case SettingsModel::VBRMode:
args << "--vbr";
break;
case SettingsModel::ABRMode:
args << "-cvbr";
break;
case SettingsModel::CBRMode:
args << "--hard-cbr";
break;
default:
throw "Bad rate-control mode!";
break;
}
args << QString("--bitrate") << QString::number(qMax(0, qMin(500, m_configBitrate * 8)));
if(!metaInfo.fileName().isEmpty()) args << "--title" << metaInfo.fileName();
if(!metaInfo.fileArtist().isEmpty()) args << "--artist" << metaInfo.fileArtist();
if(!metaInfo.fileAlbum().isEmpty()) args << "--comment" << QString("album=%1").arg(metaInfo.fileAlbum());
if(!metaInfo.fileGenre().isEmpty()) args << "--comment" << QString("genre=%1").arg(metaInfo.fileGenre());
if(!metaInfo.fileComment().isEmpty()) args << "--comment" << QString("comment=%1").arg(metaInfo.fileComment());
if(metaInfo.fileYear()) args << "--comment" << QString("date=%1").arg(QString::number(metaInfo.fileYear()));
if(metaInfo.filePosition()) args << "--comment" << QString("track=%1").arg(QString::number(metaInfo.filePosition()));
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
args << QDir::toNativeSeparators(sourceFile);
args << QDir::toNativeSeparators(outputFile);
if(!startProcess(process, m_binary, args))
{
return false;
}
bool bTimeout = false;
bool bAborted = false;
int prevProgress = -1;
QRegExp regExp("\\[(-|\\\\|/|\\|)\\]");
//The Opus encoder doesn't flus it's status updates :-[
emit statusUpdated(20 + (QUuid::createUuid().data1 % 60));
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("Opus 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 OpusEncoder::extension(void)
{
return "opus";
}
bool OpusEncoder::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 *OpusEncoder::supportedChannelCount(void)
{
return NULL;
}
const unsigned int *OpusEncoder::supportedBitdepths(void)
{
return NULL;
}

44
src/Encoder_Opus.h Normal file
View File

@ -0,0 +1,44 @@
///////////////////////////////////////////////////////////////////////////////
// LameXP - Audio Encoder Front-End
// Copyright (C) 2004-2012 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 OpusEncoder : public AbstractEncoder
{
Q_OBJECT
public:
OpusEncoder(void);
~OpusEncoder(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 *supportedChannelCount(void);
virtual const unsigned int *supportedBitdepths(void);
private:
const QString m_binary;
};

View File

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

View File

@ -36,6 +36,7 @@
#include "Decoder_Vorbis.h"
#include "Decoder_Wave.h"
#include "Decoder_WavPack.h"
#include "Decoder_Opus.h"
#include "Decoder_WMA.h"
#include "PlaylistImporter.h"
@ -63,6 +64,7 @@ AbstractDecoder *DecoderRegistry::lookup(const QString &containerType, const QSt
PROBE_DECODER(WMADecoder);
PROBE_DECODER(ADPCMDecoder);
PROBE_DECODER(WaveDecoder);
PROBE_DECODER(OpusDecoder);
PROBE_DECODER(AvisynthDecoder);
return NULL;
@ -87,6 +89,7 @@ QStringList DecoderRegistry::getSupportedTypes(void)
types << GET_FILETYPES(ALACDecoder);
types << GET_FILETYPES(WMADecoder);
types << GET_FILETYPES(ADPCMDecoder);
types << GET_FILETYPES(OpusDecoder);
types << GET_FILETYPES(AvisynthDecoder);
QStringList extensions;

View File

@ -108,8 +108,6 @@ const char *FileAnalyzer::g_tags_aud[] =
void FileAnalyzer::run()
{
qWarning("--- FileAnalyzer::run() ---");
m_abortFlag = false;
m_bAborted = false;

View File

@ -173,6 +173,27 @@ void AnalyzeTask::run_ex(void)
qWarning("Cue Sheet file detected, skipping!");
s_filesCueSheet++;
}
else if((!QFileInfo(currentFile).suffix().compare("opus", Qt::CaseInsensitive)) || (!QFileInfo(currentFile).suffix().compare("ogg", Qt::CaseInsensitive)))
{
qDebug("Found a potential Opus audio file, investigating...");
QFile opusTest(currentFile);
if(analyzeOpusFile(currentFile, file))
{
qDebug("Accepted Opus file: %s", file.filePath().toUtf8().constData());
QWriteLocker lock(&s_lock);
s_filesAccepted++;
s_recentlyAdded.insert(file.filePath().toLower());
lock.unlock();
waitForPreviousThreads();
emit fileAnalyzed(file);
}
else
{
QWriteLocker lock(&s_lock);
qDebug("Rejected Opus file: %s", file.filePath().toUtf8().constData());
s_filesRejected++;
}
}
else if(!QFileInfo(currentFile).suffix().compare("avs", Qt::CaseInsensitive))
{
qDebug("Found a potential Avisynth script, investigating...");
@ -571,6 +592,28 @@ void AnalyzeTask::retrieveCover(AudioFileModel &audioFile, cover_t coverType, co
}
}
bool AnalyzeTask::analyzeOpusFile(const QString &filePath, AudioFileModel &info)
{
QFile opusFile(filePath);
if(opusFile.open(QIODevice::ReadOnly))
{
QByteArray data = opusFile.peek(1024);
int idx1 = data.indexOf(QString::fromAscii("OggS"));
int idx2 = data.indexOf(QString::fromAscii("OpusHead"));
if((idx1 >= 0) && (idx2 > idx1))
{
info.setFormatContainerType("OGG");
info.setFormatAudioType("Opus");
opusFile.close();
return true;
}
opusFile.close();
return false;
}
return false;
}
bool AnalyzeTask::analyzeAvisynthFile(const QString &filePath, AudioFileModel &info)
{
QProcess process;

View File

@ -90,6 +90,7 @@ private:
bool checkFile_CDDA(QFile &file);
void retrieveCover(AudioFileModel &audioFile, cover_t coverType, const QByteArray &coverData);
bool analyzeAvisynthFile(const QString &filePath, AudioFileModel &info);
bool analyzeOpusFile(const QString &filePath, AudioFileModel &info);
void waitForPreviousThreads(void);
const unsigned __int64 m_threadIdx;

View File

@ -73,6 +73,8 @@ g_lamexp_tools[] =
{"0c019e13450dc664987e21f4e5489d182be7d6d0d81efbbaaf1c78693dfe3e38e0355b93", CPU_TYPE_X86_GEN, "oggenc2.i386.exe", 287603},
{"693dd6f779df70a047c15c2c79350855db38d5b0cd7e529b6877b7c821cfe6addfdd50a4", CPU_TYPE_X86_SSE, "oggenc2.sse2.exe", 287603},
{"291cedb6a1b213330a9cb508f975ee7132a25aa26770ab91cade50109b4ffb81c9bdd09a", CPU_TYPE_X64_ALL, "oggenc2.x64.exe", 287603},
{"003b59fedf9f68a4b63402ee60031d878a323d9406dc535e612151170199490878142d85", CPU_TYPE_ALL_ALL, "opusdec.exe", 914},
{"187deb9e43bfd96a6510e1f27c0894f0e8c8fa00285976039d22364ebe633251a1dbd1f7", CPU_TYPE_ALL_ALL, "opusenc.exe", 914},
{"58c2b8bcff8f27bfa8fab8172b80f5da731221d072c7dba4dd3a3d7d6423490a25dc6760", CPU_TYPE_ALL_ALL, "shorten.exe", 361},
{"017a0f613a962af0620618019b015d5c54bb3c07cf1023e5fdb9502b652367ebbfaaebbc", CPU_TYPE_ALL_ALL, "sox.exe", 1440},
{"48e7f81c024cd17dac0eaeab253aad6b223e72dc80688f7576276b0563209514ff0bb9c8", CPU_TYPE_ALL_ALL, "speexdec.exe", 12},