Updated Monkey's Audio binary to v4.12 (2013-06-26). Also added encoding support for Monkey's Audio format, including APEv2 tagging support. Since the MAC tool does NOT support tagging, a custom tagging utility support is used.
This commit is contained in:
parent
b05a7ac3ef
commit
60cb91665f
@ -317,6 +317,7 @@ del "$(TargetDir)imageformats\q???d4.dll"
|
||||
<ClCompile Include="src\Encoder_AC3.cpp" />
|
||||
<ClCompile Include="src\Encoder_DCA.cpp" />
|
||||
<ClCompile Include="src\Encoder_FLAC.cpp" />
|
||||
<ClCompile Include="src\Encoder_MAC.cpp" />
|
||||
<ClCompile Include="src\Encoder_MP3.cpp" />
|
||||
<ClCompile Include="src\Encoder_Opus.cpp" />
|
||||
<ClCompile Include="src\Encoder_Vorbis.cpp" />
|
||||
@ -381,6 +382,7 @@ del "$(TargetDir)imageformats\q???d4.dll"
|
||||
<ClCompile Include="tmp\MOC_Encoder_AC3.cpp" />
|
||||
<ClCompile Include="tmp\MOC_Encoder_DCA.cpp" />
|
||||
<ClCompile Include="tmp\MOC_Encoder_FLAC.cpp" />
|
||||
<ClCompile Include="tmp\MOC_Encoder_MAC.cpp" />
|
||||
<ClCompile Include="tmp\MOC_Encoder_MP3.cpp" />
|
||||
<ClCompile Include="tmp\MOC_Encoder_Opus.cpp" />
|
||||
<ClCompile Include="tmp\MOC_Encoder_Vorbis.cpp" />
|
||||
@ -571,6 +573,17 @@ del "$(TargetDir)imageformats\q???d4.dll"
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<CustomBuild Include="src\Encoder_MAC.h">
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|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>
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
|
||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"</Message>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
|
||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release_Static|Win32'">$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)</Outputs>
|
||||
</CustomBuild>
|
||||
<ClInclude Include="src\JobObject.h" />
|
||||
<CustomBuild Include="src\Thread_CheckUpdate.h">
|
||||
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"</Command>
|
||||
|
@ -424,6 +424,12 @@
|
||||
<ClCompile Include="tmp\QRC_Sounds.cpp">
|
||||
<Filter>Generated Files\QRC</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="src\Encoder_MAC.cpp">
|
||||
<Filter>Source Files\Encoders</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="tmp\MOC_Encoder_MAC.cpp">
|
||||
<Filter>Generated Files\MOC</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="src\Config.h">
|
||||
@ -558,6 +564,9 @@
|
||||
<ClInclude Include="etc\Prerequisites\strnatcmp\include\strnatcmp.h">
|
||||
<Filter>Header Files\Misc\3rd Party</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="src\Encoder_MAC.h">
|
||||
<Filter>Header Files\Encoders</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<CustomBuild Include="gui\DropBox.ui">
|
||||
|
@ -21,10 +21,12 @@ a:visited { color: #0000EE; }
|
||||
<li>Upgraded build environment to Microsoft Visual Studio 2013 RTM
|
||||
<li>Complete overhaul of the file analyzer, resulting in up to 2.5x faster file import speed
|
||||
<li>Reworked the application initialization code, resulting in notably faster startup speed
|
||||
<li>Added encoding support for Monkey's Audio format, including APEv2 tagging support
|
||||
<li>Improved file analyzer to retain the original ordering of files imported from a playlist
|
||||
<li>Improved internal encoder API, so each encoder can define its own configuration options
|
||||
<li>Improved splash screen and working banner, using "sheet of glass" effect on supported OS
|
||||
<li>Improved dropbox widget, including proper multi-monitor support
|
||||
<li>Updated Monkey's Audio binary to v4.12 (2013-06-26)
|
||||
<li>Updated mpg123 decoder to v1.16.0 (2013-10-06), compiled with GCC 4.8.1
|
||||
<li>Updated GNU Wget binary to v1.14.0 (2012-08-05), compiled with GCC 4.8.1
|
||||
<li>Updated GnuPG to v1.4.15 (2013-10-05), compiled with GCC 4.8.1
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2022,6 +2022,10 @@
|
||||
<source>Loading dropped files or folders, please wait...</source>
|
||||
<translation>Abgelegte Dateien werden geladen, bitte warten...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>APE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetaInfo</name>
|
||||
|
@ -31,7 +31,7 @@
|
||||
<context>
|
||||
<name>MainWindow</name>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/Dialog_MainWindow.cpp" line="778"/>
|
||||
<location filename="../../src/Dialog_MainWindow.cpp" line="779"/>
|
||||
<source>%n file(s) have been rejected, because read access was not granted!</source>
|
||||
<translation>
|
||||
<numerusform>%n file have been rejected, because read access was not granted!</numerusform>
|
||||
@ -39,7 +39,7 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/Dialog_MainWindow.cpp" line="782"/>
|
||||
<location filename="../../src/Dialog_MainWindow.cpp" line="783"/>
|
||||
<source>%n file(s) have been rejected, because they are dummy CDDA files!</source>
|
||||
<translation>
|
||||
<numerusform>%n file have been rejected, because they are dummy CDDA files!</numerusform>
|
||||
@ -47,7 +47,7 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/Dialog_MainWindow.cpp" line="786"/>
|
||||
<location filename="../../src/Dialog_MainWindow.cpp" line="787"/>
|
||||
<source>%n file(s) have been rejected, because they appear to be Cue Sheet images!</source>
|
||||
<translation>
|
||||
<numerusform>%n file have been rejected, because they appear to be Cue Sheet images!</numerusform>
|
||||
@ -55,7 +55,7 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/Dialog_MainWindow.cpp" line="790"/>
|
||||
<location filename="../../src/Dialog_MainWindow.cpp" line="791"/>
|
||||
<source>%n file(s) have been rejected, because the file format could not be recognized!</source>
|
||||
<translation>
|
||||
<numerusform>%n file have been rejected, because the file format could not be recognized!</numerusform>
|
||||
@ -63,7 +63,7 @@
|
||||
</translation>
|
||||
</message>
|
||||
<message numerus="yes">
|
||||
<location filename="../../src/Dialog_MainWindow.cpp" line="3846"/>
|
||||
<location filename="../../src/Dialog_MainWindow.cpp" line="3848"/>
|
||||
<source>%n Instance(s)</source>
|
||||
<translation>
|
||||
<numerusform>%n Instance</numerusform>
|
||||
|
@ -2021,6 +2021,10 @@
|
||||
<source>Loading dropped files or folders, please wait...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>APE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetaInfo</name>
|
||||
|
@ -2030,6 +2030,10 @@ Ouvrir le dossier récursivement...</translation>
|
||||
<source>Loading dropped files or folders, please wait...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>APE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetaInfo</name>
|
||||
|
@ -2022,6 +2022,10 @@
|
||||
<source>Loading dropped files or folders, please wait...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>APE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetaInfo</name>
|
||||
|
@ -2014,6 +2014,10 @@
|
||||
<source>Loading dropped files or folders, please wait...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>APE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetaInfo</name>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2035,6 +2035,10 @@
|
||||
<source>Loading dropped files or folders, please wait...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>APE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetaInfo</name>
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2013,6 +2013,10 @@
|
||||
<source>Loading dropped files or folders, please wait...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>APE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetaInfo</name>
|
||||
|
@ -2030,6 +2030,10 @@
|
||||
<source>Loading dropped files or folders, please wait...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>APE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetaInfo</name>
|
||||
|
@ -2013,6 +2013,10 @@
|
||||
<source>Loading dropped files or folders, please wait...</source>
|
||||
<translation>载入收集的文件或文件夹中,请稍候……</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>APE</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>MetaInfo</name>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>667</width>
|
||||
<width>676</width>
|
||||
<height>443</height>
|
||||
</rect>
|
||||
</property>
|
||||
@ -805,39 +805,8 @@
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_3">
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<item row="0" column="1">
|
||||
<widget class="QRadioButton" name="radioButtonEncoderMP3">
|
||||
<property name="text">
|
||||
<string>MP3</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QRadioButton" name="radioButtonEncoderVorbis">
|
||||
<property name="text">
|
||||
<string>Ogg/Vorbis</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="7">
|
||||
<widget class="QRadioButton" name="radioButtonEncoderAAC">
|
||||
<property name="text">
|
||||
<string>AAC/MP4</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="19">
|
||||
<widget class="QRadioButton" name="radioButtonEncoderPCM">
|
||||
<property name="text">
|
||||
<string>PCM/Wave</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_11">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_7">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
@ -853,21 +822,17 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="13">
|
||||
<widget class="QRadioButton" name="radioButtonEncoderAC3">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonEncoderMP3">
|
||||
<property name="text">
|
||||
<string>A/52</string>
|
||||
<string>MP3</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="17">
|
||||
<widget class="QRadioButton" name="radioButtonEncoderDCA">
|
||||
<property name="text">
|
||||
<string>DCA</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_45">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
@ -880,7 +845,34 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="6">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonEncoderVorbis">
|
||||
<property name="text">
|
||||
<string>Ogg/Vorbis</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_48">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>1</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonEncoderOpus">
|
||||
<property name="text">
|
||||
<string>Opus</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_46">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
@ -893,7 +885,14 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="8">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonEncoderAAC">
|
||||
<property name="text">
|
||||
<string>AAC/MP4</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_47">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
@ -906,53 +905,34 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="16">
|
||||
<spacer name="horizontalSpacer_49">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>1</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="18">
|
||||
<spacer name="horizontalSpacer_50">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>1</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="20">
|
||||
<spacer name="horizontalSpacer_51">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>1</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="9">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonEncoderFLAC">
|
||||
<property name="text">
|
||||
<string>FLAC</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="12">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_68">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>1</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonEncoderAPE">
|
||||
<property name="text">
|
||||
<string>APE</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_55">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
@ -965,15 +945,55 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="5">
|
||||
<widget class="QRadioButton" name="radioButtonEncoderOpus">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonEncoderAC3">
|
||||
<property name="text">
|
||||
<string>Opus</string>
|
||||
<string>A/52</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="4">
|
||||
<spacer name="horizontalSpacer_48">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_49">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>1</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonEncoderDCA">
|
||||
<property name="text">
|
||||
<string>DCA</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_50">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>1</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonEncoderPCM">
|
||||
<property name="text">
|
||||
<string>PCM/Wave</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_51">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
@ -1009,32 +1029,8 @@
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_13">
|
||||
<item row="0" column="0">
|
||||
<layout class="QGridLayout" name="gridLayout_12">
|
||||
<item row="0" column="1">
|
||||
<widget class="QRadioButton" name="radioButtonModeQuality">
|
||||
<property name="text">
|
||||
<string>Quality-based (VBR)</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="3">
|
||||
<widget class="QRadioButton" name="radioButtonModeAverageBitrate">
|
||||
<property name="text">
|
||||
<string>Average Bitrate (ABR)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="5">
|
||||
<widget class="QRadioButton" name="radioButtonConstBitrate">
|
||||
<property name="text">
|
||||
<string>Constant Bitrate (CBR)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_12">
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_8">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
@ -1050,7 +1046,17 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonModeQuality">
|
||||
<property name="text">
|
||||
<string>Quality-based (VBR)</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_52">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
@ -1063,7 +1069,14 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="4">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonModeAverageBitrate">
|
||||
<property name="text">
|
||||
<string>Average Bitrate (ABR)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_53">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
@ -1076,7 +1089,14 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="0" column="6">
|
||||
<item>
|
||||
<widget class="QRadioButton" name="radioButtonConstBitrate">
|
||||
<property name="text">
|
||||
<string>Constant Bitrate (CBR)</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="horizontalSpacer_54">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
@ -1489,8 +1509,8 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>604</width>
|
||||
<height>1759</height>
|
||||
<width>602</width>
|
||||
<height>1750</height>
|
||||
</rect>
|
||||
</property>
|
||||
<layout class="QGridLayout" name="gridLayout_22">
|
||||
@ -4286,7 +4306,7 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>667</width>
|
||||
<width>676</width>
|
||||
<height>21</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -5,6 +5,7 @@
|
||||
<file>tools/gpgv.exe</file>
|
||||
<file>tools/gpgv.gpg</file>
|
||||
<file>tools/sox.exe</file>
|
||||
<file>tools/tag.exe</file>
|
||||
<file>tools/wget.exe</file>
|
||||
<file>tools/wupdate.exe</file>
|
||||
</qresource>
|
||||
|
Binary file not shown.
BIN
res/tools/tag.exe
Normal file
BIN
res/tools/tag.exe
Normal file
Binary file not shown.
@ -34,8 +34,8 @@
|
||||
#define VER_LAMEXP_MINOR_HI 0
|
||||
#define VER_LAMEXP_MINOR_LO 9
|
||||
#define VER_LAMEXP_TYPE Alpha
|
||||
#define VER_LAMEXP_PATCH 9
|
||||
#define VER_LAMEXP_BUILD 1499
|
||||
#define VER_LAMEXP_PATCH 10
|
||||
#define VER_LAMEXP_BUILD 1502
|
||||
#define VER_LAMEXP_CONFG 1348
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -385,6 +385,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel_MetaInfo *me
|
||||
m_encoderButtonGroup->addButton(ui->radioButtonEncoderAAC, SettingsModel::AACEncoder);
|
||||
m_encoderButtonGroup->addButton(ui->radioButtonEncoderAC3, SettingsModel::AC3Encoder);
|
||||
m_encoderButtonGroup->addButton(ui->radioButtonEncoderFLAC, SettingsModel::FLACEncoder);
|
||||
m_encoderButtonGroup->addButton(ui->radioButtonEncoderAPE, SettingsModel::MACEncoder);
|
||||
m_encoderButtonGroup->addButton(ui->radioButtonEncoderOpus, SettingsModel::OpusEncoder);
|
||||
m_encoderButtonGroup->addButton(ui->radioButtonEncoderDCA, SettingsModel::DCAEncoder);
|
||||
m_encoderButtonGroup->addButton(ui->radioButtonEncoderPCM, SettingsModel::PCMEncoder);
|
||||
@ -1578,6 +1579,7 @@ void MainWindow::encodeButtonClicked(void)
|
||||
case SettingsModel::FLACEncoder:
|
||||
case SettingsModel::OpusEncoder:
|
||||
case SettingsModel::DCAEncoder:
|
||||
case SettingsModel::MACEncoder:
|
||||
case SettingsModel::PCMEncoder:
|
||||
break;
|
||||
default:
|
||||
|
302
src/Encoder_MAC.cpp
Normal file
302
src/Encoder_MAC.cpp
Normal file
@ -0,0 +1,302 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// LameXP - Audio Encoder Front-End
|
||||
// Copyright (C) 2004-2013 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, but always including the *additional*
|
||||
// restrictions defined in the "License.txt" file.
|
||||
//
|
||||
// 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_MAC.h"
|
||||
|
||||
#include "Global.h"
|
||||
#include "Model_Settings.h"
|
||||
|
||||
#include <QProcess>
|
||||
#include <QDir>
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Encoder Info
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
class MACEncoderInfo : public AbstractEncoderInfo
|
||||
{
|
||||
virtual bool isModeSupported(int mode) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
return true;
|
||||
break;
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return false;
|
||||
break;
|
||||
default:
|
||||
THROW("Bad RC mode specified!");
|
||||
}
|
||||
}
|
||||
|
||||
virtual int valueCount(int mode) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
return 5;
|
||||
break;
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return -1;
|
||||
break;
|
||||
default:
|
||||
THROW("Bad RC mode specified!");
|
||||
}
|
||||
}
|
||||
|
||||
virtual int valueAt(int mode, int index) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
return qBound(0, index + 1, 8);
|
||||
break;
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return -1;
|
||||
break;
|
||||
default:
|
||||
THROW("Bad RC mode specified!");
|
||||
}
|
||||
}
|
||||
|
||||
virtual int valueType(int mode) const
|
||||
{
|
||||
switch(mode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
return TYPE_COMPRESSION_LEVEL;
|
||||
break;
|
||||
case SettingsModel::ABRMode:
|
||||
case SettingsModel::CBRMode:
|
||||
return -1;
|
||||
break;
|
||||
default:
|
||||
THROW("Bad RC mode specified!");
|
||||
}
|
||||
}
|
||||
|
||||
virtual const char *description(void) const
|
||||
{
|
||||
static const char* s_description = "Monkey's Audio (MAC)";
|
||||
return s_description;
|
||||
}
|
||||
}
|
||||
static const g_macEncoderInfo;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// Encoder implementation
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
MACEncoder::MACEncoder(void)
|
||||
:
|
||||
m_binary_enc(lamexp_lookup_tool("mac.exe")),
|
||||
m_binary_tag(lamexp_lookup_tool("tag.exe"))
|
||||
{
|
||||
if(m_binary_enc.isEmpty() || m_binary_tag.isEmpty())
|
||||
{
|
||||
THROW("Error initializing MAC encoder. Tool 'mac.exe' or 'tag.exe' is not registred!");
|
||||
}
|
||||
}
|
||||
|
||||
MACEncoder::~MACEncoder(void)
|
||||
{
|
||||
}
|
||||
|
||||
bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const QString &outputFile, volatile bool *abortFlag)
|
||||
{
|
||||
QProcess process;
|
||||
QStringList args;
|
||||
|
||||
const QString baseName = QFileInfo(outputFile).fileName();
|
||||
|
||||
args << QDir::toNativeSeparators(sourceFile);
|
||||
args << QDir::toNativeSeparators(outputFile);
|
||||
|
||||
switch(m_configRCMode)
|
||||
{
|
||||
case SettingsModel::VBRMode:
|
||||
args << QString().sprintf("-c%d", (m_configBitrate + 1) * 1000);
|
||||
break;
|
||||
default:
|
||||
THROW("Bad rate-control mode!");
|
||||
break;
|
||||
}
|
||||
|
||||
if(!startProcess(process, m_binary_enc, args))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool bTimeout = false;
|
||||
bool bAborted = false;
|
||||
int prevProgress = -1;
|
||||
|
||||
QRegExp regExp("Progress: (\\d+).(\\d+)%");
|
||||
|
||||
while(process.state() != QProcess::NotRunning)
|
||||
{
|
||||
if(*abortFlag)
|
||||
{
|
||||
process.kill();
|
||||
bAborted = true;
|
||||
emit messageLogged("\nABORTED BY USER !!!");
|
||||
break;
|
||||
}
|
||||
process.waitForReadyRead(m_processTimeoutInterval);
|
||||
if(!process.bytesAvailable() && process.state() == QProcess::Running)
|
||||
{
|
||||
process.kill();
|
||||
qWarning("MAC 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;
|
||||
}
|
||||
|
||||
emit messageLogged("\n-------------------------------\n");
|
||||
|
||||
args.clear();
|
||||
args << "APE2" << QDir::toNativeSeparators(outputFile);
|
||||
|
||||
if(!metaInfo.title().isEmpty()) args << QString("Title=%1").arg(cleanTag(metaInfo.title()));
|
||||
if(!metaInfo.artist().isEmpty()) args << QString("Artist=%1").arg(cleanTag(metaInfo.artist()));
|
||||
if(!metaInfo.album().isEmpty()) args << QString("Album=%1").arg(cleanTag(metaInfo.album()));
|
||||
if(!metaInfo.genre().isEmpty()) args << QString("Genre=%1").arg(cleanTag(metaInfo.genre()));
|
||||
if(!metaInfo.comment().isEmpty()) args << QString("Comment=%1").arg(cleanTag(metaInfo.comment()));
|
||||
if(metaInfo.year()) args << QString("Year=%1").arg(QString::number(metaInfo.year()));
|
||||
if(metaInfo.position()) args << QString("Track=%1").arg(QString::number(metaInfo.position()));
|
||||
|
||||
//if(!metaInfo.cover().isEmpty()) args << QString("-add-cover:%1:%2").arg("front", metaInfo.cover());
|
||||
|
||||
if(!startProcess(process, m_binary_tag, args))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bTimeout = false;
|
||||
|
||||
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("Tag 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(!text.isEmpty())
|
||||
{
|
||||
emit messageLogged(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
process.waitForFinished();
|
||||
if(process.state() != QProcess::NotRunning)
|
||||
{
|
||||
process.kill();
|
||||
process.waitForFinished(-1);
|
||||
}
|
||||
|
||||
emit messageLogged(QString().sprintf("\nExited with code: 0x%04X", process.exitCode()));
|
||||
|
||||
if(bTimeout || bAborted || process.exitCode() != EXIT_SUCCESS)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
QString MACEncoder::extension(void)
|
||||
{
|
||||
return "ape";
|
||||
}
|
||||
|
||||
bool MACEncoder::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 AbstractEncoderInfo *MACEncoder::getEncoderInfo(void)
|
||||
{
|
||||
return &g_macEncoderInfo;
|
||||
}
|
47
src/Encoder_MAC.h
Normal file
47
src/Encoder_MAC.h
Normal file
@ -0,0 +1,47 @@
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
// LameXP - Audio Encoder Front-End
|
||||
// Copyright (C) 2004-2013 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, but always including the *additional*
|
||||
// restrictions defined in the "License.txt" file.
|
||||
//
|
||||
// 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 MACEncoder : public AbstractEncoder
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MACEncoder(void);
|
||||
~MACEncoder(void);
|
||||
|
||||
virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, 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);
|
||||
|
||||
//Encoder info
|
||||
static const AbstractEncoderInfo *getEncoderInfo(void);
|
||||
|
||||
private:
|
||||
const QString m_binary_enc;
|
||||
const QString m_binary_tag;
|
||||
};
|
@ -184,6 +184,7 @@ LAMEXP_MAKE_ID(compressionAbrBitrateAften, "Compression/AbrTaretBitrate/Aften"
|
||||
LAMEXP_MAKE_ID(compressionAbrBitrateDcaEnc, "Compression/AbrTaretBitrate/DcaEnc");
|
||||
LAMEXP_MAKE_ID(compressionAbrBitrateFLAC, "Compression/AbrTaretBitrate/FLAC");
|
||||
LAMEXP_MAKE_ID(compressionAbrBitrateLAME, "Compression/AbrTaretBitrate/LAME");
|
||||
LAMEXP_MAKE_ID(compressionAbrBitrateMacEnc, "Compression/AbrTaretBitrate/MacEnc");
|
||||
LAMEXP_MAKE_ID(compressionAbrBitrateOggEnc, "Compression/AbrTaretBitrate/OggEnc");
|
||||
LAMEXP_MAKE_ID(compressionAbrBitrateOpusEnc, "Compression/AbrTaretBitrate/OpusEnc");
|
||||
LAMEXP_MAKE_ID(compressionAbrBitrateWave, "Compression/AbrTaretBitrate/Wave");
|
||||
@ -192,6 +193,7 @@ LAMEXP_MAKE_ID(compressionCbrBitrateAften, "Compression/CbrTaretBitrate/Aften"
|
||||
LAMEXP_MAKE_ID(compressionCbrBitrateDcaEnc, "Compression/CbrTaretBitrate/DcaEnc");
|
||||
LAMEXP_MAKE_ID(compressionCbrBitrateFLAC, "Compression/CbrTaretBitrate/FLAC");
|
||||
LAMEXP_MAKE_ID(compressionCbrBitrateLAME, "Compression/CbrTaretBitrate/LAME");
|
||||
LAMEXP_MAKE_ID(compressionCbrBitrateMacEnc, "Compression/CbrTaretBitrate/MacEnc");
|
||||
LAMEXP_MAKE_ID(compressionCbrBitrateOggEnc, "Compression/CbrTaretBitrate/OggEnc");
|
||||
LAMEXP_MAKE_ID(compressionCbrBitrateOpusEnc, "Compression/CbrTaretBitrate/OpusEnc");
|
||||
LAMEXP_MAKE_ID(compressionCbrBitrateWave, "Compression/CbrTaretBitrate/Wave");
|
||||
@ -201,6 +203,7 @@ LAMEXP_MAKE_ID(compressionRCModeAften, "Compression/RCMode/Aften");
|
||||
LAMEXP_MAKE_ID(compressionRCModeDcaEnc, "Compression/RCMode/DcaEnc");
|
||||
LAMEXP_MAKE_ID(compressionRCModeFLAC, "Compression/RCMode/FLAC");
|
||||
LAMEXP_MAKE_ID(compressionRCModeLAME, "Compression/RCMode/LAME");
|
||||
LAMEXP_MAKE_ID(compressionRCModeMacEnc, "Compression/RCMode/MacEnc");
|
||||
LAMEXP_MAKE_ID(compressionRCModeOggEnc, "Compression/RCMode/OggEnc");
|
||||
LAMEXP_MAKE_ID(compressionRCModeOpusEnc, "Compression/RCMode/OpusEnc");
|
||||
LAMEXP_MAKE_ID(compressionRCModeWave, "Compression/RCMode/Wave");
|
||||
@ -209,6 +212,7 @@ LAMEXP_MAKE_ID(compressionVbrQualityAften, "Compression/VbrQualityLevel/Aften"
|
||||
LAMEXP_MAKE_ID(compressionVbrQualityDcaEnc, "Compression/VbrQualityLevel/DcaEnc");
|
||||
LAMEXP_MAKE_ID(compressionVbrQualityFLAC, "Compression/VbrQualityLevel/FLAC");
|
||||
LAMEXP_MAKE_ID(compressionVbrQualityLAME, "Compression/VbrQualityLevel/LAME");
|
||||
LAMEXP_MAKE_ID(compressionVbrQualityMacEnc, "Compression/VbrQualityLevel/MacEnc");
|
||||
LAMEXP_MAKE_ID(compressionVbrQualityOggEnc, "Compression/VbrQualityLevel/OggEnc");
|
||||
LAMEXP_MAKE_ID(compressionVbrQualityOpusEnc, "Compression/VbrQualityLevel/OpusEnc");
|
||||
LAMEXP_MAKE_ID(compressionVbrQualityWave, "Compression/VbrQualityLevel/Wave");
|
||||
@ -220,6 +224,7 @@ LAMEXP_MAKE_ID(customParametersAften, "AdvancedOptions/CustomParameters/A
|
||||
LAMEXP_MAKE_ID(customParametersDcaEnc, "AdvancedOptions/CustomParameters/DcaEnc");
|
||||
LAMEXP_MAKE_ID(customParametersFLAC, "AdvancedOptions/CustomParameters/FLAC");
|
||||
LAMEXP_MAKE_ID(customParametersLAME, "AdvancedOptions/CustomParameters/LAME");
|
||||
LAMEXP_MAKE_ID(customParametersMacEnc, "AdvancedOptions/CustomParameters/MacEnc");
|
||||
LAMEXP_MAKE_ID(customParametersOggEnc, "AdvancedOptions/CustomParameters/OggEnc");
|
||||
LAMEXP_MAKE_ID(customParametersOpusEnc, "AdvancedOptions/CustomParameters/OpusEnc");
|
||||
LAMEXP_MAKE_ID(customParametersWave, "AdvancedOptions/CustomParameters/Wave");
|
||||
@ -571,6 +576,7 @@ LAMEXP_MAKE_OPTION_I(compressionAbrBitrateAften, 17)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateDcaEnc, 13)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateFLAC, 5)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateLAME, 10)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateMacEnc, 2)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateOggEnc, 16)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateOpusEnc, 11)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateWave, 0)
|
||||
@ -579,6 +585,7 @@ LAMEXP_MAKE_OPTION_I(compressionCbrBitrateAften, 17)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateDcaEnc, 13)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateFLAC, 5)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateLAME, 10)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateMacEnc, 2)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateOggEnc, 16)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateOpusEnc, 11)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateWave, 0)
|
||||
@ -588,6 +595,7 @@ LAMEXP_MAKE_OPTION_I(compressionRCModeAften, 0)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeDcaEnc, 2)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeFLAC, 0)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeLAME, 0)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeMacEnc, 0)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeOggEnc, 0)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeOpusEnc, 0)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeWave, 2)
|
||||
@ -596,6 +604,7 @@ LAMEXP_MAKE_OPTION_I(compressionVbrQualityAften, 15)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityDcaEnc, 13)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityFLAC, 5)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityLAME, 7)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityMacEnc, 2)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityOggEnc, 7)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityOpusEnc, 11)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityWave, 0)
|
||||
@ -607,6 +616,7 @@ LAMEXP_MAKE_OPTION_S(customParametersAften, QString())
|
||||
LAMEXP_MAKE_OPTION_S(customParametersDcaEnc, QString())
|
||||
LAMEXP_MAKE_OPTION_S(customParametersFLAC, QString())
|
||||
LAMEXP_MAKE_OPTION_S(customParametersLAME, QString())
|
||||
LAMEXP_MAKE_OPTION_S(customParametersMacEnc, QString())
|
||||
LAMEXP_MAKE_OPTION_S(customParametersOggEnc, QString())
|
||||
LAMEXP_MAKE_OPTION_S(customParametersOpusEnc, QString())
|
||||
LAMEXP_MAKE_OPTION_S(customParametersWave, QString())
|
||||
|
@ -65,8 +65,9 @@ public:
|
||||
FLACEncoder = 4,
|
||||
OpusEncoder = 5,
|
||||
DCAEncoder = 6,
|
||||
PCMEncoder = 7,
|
||||
ENCODER_COUNT = 8
|
||||
MACEncoder = 7,
|
||||
PCMEncoder = 8,
|
||||
ENCODER_COUNT = 9
|
||||
};
|
||||
|
||||
enum RCMode
|
||||
@ -113,6 +114,7 @@ public:
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateDcaEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateFLAC)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateLAME)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateMacEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateOggEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateOpusEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateWave)
|
||||
@ -121,6 +123,7 @@ public:
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateDcaEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateFLAC)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateLAME)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateMacEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateOggEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateOpusEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateWave)
|
||||
@ -130,6 +133,7 @@ public:
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeDcaEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeFLAC)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeLAME)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeMacEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeOggEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeOpusEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionRCModeWave)
|
||||
@ -138,6 +142,7 @@ public:
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityDcaEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityFLAC)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityLAME)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityMacEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityOggEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityOpusEnc)
|
||||
LAMEXP_MAKE_OPTION_I(compressionVbrQualityWave)
|
||||
@ -149,6 +154,7 @@ public:
|
||||
LAMEXP_MAKE_OPTION_S(customParametersDcaEnc)
|
||||
LAMEXP_MAKE_OPTION_S(customParametersFLAC)
|
||||
LAMEXP_MAKE_OPTION_S(customParametersLAME)
|
||||
LAMEXP_MAKE_OPTION_S(customParametersMacEnc)
|
||||
LAMEXP_MAKE_OPTION_S(customParametersOggEnc)
|
||||
LAMEXP_MAKE_OPTION_S(customParametersOpusEnc)
|
||||
LAMEXP_MAKE_OPTION_S(customParametersWave)
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "Encoder_MP3.h"
|
||||
#include "Encoder_Vorbis.h"
|
||||
#include "Encoder_Opus.h"
|
||||
#include "Encoder_MAC.h"
|
||||
#include "Encoder_Wave.h"
|
||||
|
||||
#define IS_VBR(RC_MODE) ((RC_MODE) == SettingsModel::VBRMode)
|
||||
@ -154,6 +155,13 @@ AbstractEncoder *EncoderRegistry::createInstance(const int encoderId, const Sett
|
||||
encoder = dcaEncoder;
|
||||
}
|
||||
break;
|
||||
/*-------- MACEncoder --------*/
|
||||
case SettingsModel::MACEncoder:
|
||||
{
|
||||
MACEncoder *macEncoder = new MACEncoder();
|
||||
encoder = macEncoder;
|
||||
}
|
||||
break;
|
||||
/*-------- PCMEncoder --------*/
|
||||
case SettingsModel::PCMEncoder:
|
||||
{
|
||||
@ -196,6 +204,7 @@ const AbstractEncoderInfo *EncoderRegistry::getEncoderInfo(const int encoderId)
|
||||
case SettingsModel::FLACEncoder: info = FLACEncoder::getEncoderInfo(); break;
|
||||
case SettingsModel::OpusEncoder: info = OpusEncoder::getEncoderInfo(); break;
|
||||
case SettingsModel::DCAEncoder: info = DCAEncoder::getEncoderInfo(); break;
|
||||
case SettingsModel::MACEncoder: info = MACEncoder::getEncoderInfo(); break;
|
||||
case SettingsModel::PCMEncoder: info = WaveEncoder::getEncoderInfo(); break;
|
||||
case SettingsModel::AACEncoder:
|
||||
switch(getAacEncoder())
|
||||
@ -252,6 +261,7 @@ void EncoderRegistry::saveEncoderMode(SettingsModel *settings, const int encoder
|
||||
case SettingsModel::FLACEncoder: STORE_MODE(FLAC, rcMode); break;
|
||||
case SettingsModel::OpusEncoder: STORE_MODE(OpusEnc, rcMode); break;
|
||||
case SettingsModel::DCAEncoder: STORE_MODE(DcaEnc, rcMode); break;
|
||||
case SettingsModel::MACEncoder: STORE_MODE(MacEnc, rcMode); break;
|
||||
case SettingsModel::PCMEncoder: STORE_MODE(Wave, rcMode); break;
|
||||
default: THROW("Unsupported encoder!");
|
||||
}
|
||||
@ -271,6 +281,7 @@ int EncoderRegistry::loadEncoderMode(const SettingsModel *settings, const int en
|
||||
case SettingsModel::FLACEncoder: LOAD_MODE(rcMode, FLAC); break;
|
||||
case SettingsModel::OpusEncoder: LOAD_MODE(rcMode, OpusEnc); break;
|
||||
case SettingsModel::DCAEncoder: LOAD_MODE(rcMode, DcaEnc); break;
|
||||
case SettingsModel::MACEncoder: LOAD_MODE(rcMode, MacEnc); break;
|
||||
case SettingsModel::PCMEncoder: LOAD_MODE(rcMode, Wave); break;
|
||||
default: THROW("Unsupported encoder!");
|
||||
}
|
||||
@ -316,6 +327,7 @@ void EncoderRegistry::saveEncoderValue(SettingsModel *settings, const int encode
|
||||
case SettingsModel::FLACEncoder: STORE_VALUE(FLAC, rcMode, value); break;
|
||||
case SettingsModel::OpusEncoder: STORE_VALUE(OpusEnc, rcMode, value); break;
|
||||
case SettingsModel::DCAEncoder: STORE_VALUE(DcaEnc, rcMode, value); break;
|
||||
case SettingsModel::MACEncoder: STORE_VALUE(MacEnc, rcMode, value); break;
|
||||
case SettingsModel::PCMEncoder: STORE_VALUE(Wave, rcMode, value); break;
|
||||
default: THROW("Unsupported encoder!");
|
||||
}
|
||||
@ -341,6 +353,7 @@ int EncoderRegistry::loadEncoderValue(const SettingsModel *settings, const int e
|
||||
case SettingsModel::FLACEncoder: LOAD_VALUE(value, FLAC, rcMode); break;
|
||||
case SettingsModel::OpusEncoder: LOAD_VALUE(value, OpusEnc, rcMode); break;
|
||||
case SettingsModel::DCAEncoder: LOAD_VALUE(value, DcaEnc, rcMode); break;
|
||||
case SettingsModel::MACEncoder: LOAD_VALUE(value, MacEnc, rcMode); break;
|
||||
case SettingsModel::PCMEncoder: LOAD_VALUE(value, Wave, rcMode); break;
|
||||
default: THROW("Unsupported encoder!");
|
||||
}
|
||||
@ -376,6 +389,7 @@ void EncoderRegistry::saveEncoderCustomParams(SettingsModel *settings, const int
|
||||
case SettingsModel::FLACEncoder: STORE_PARAMS(FLAC, params.trimmed()); break;
|
||||
case SettingsModel::OpusEncoder: STORE_PARAMS(OpusEnc, params.trimmed()); break;
|
||||
case SettingsModel::DCAEncoder: STORE_PARAMS(DcaEnc, params.trimmed()); break;
|
||||
case SettingsModel::MACEncoder: STORE_PARAMS(MacEnc, params.trimmed()); break;
|
||||
case SettingsModel::PCMEncoder: STORE_PARAMS(Wave, params.trimmed()); break;
|
||||
default: THROW("Unsupported encoder!");
|
||||
}
|
||||
@ -395,6 +409,7 @@ QString EncoderRegistry::loadEncoderCustomParams(const SettingsModel *settings,
|
||||
case SettingsModel::FLACEncoder: LOAD_PARAMS(params, FLAC); break;
|
||||
case SettingsModel::OpusEncoder: LOAD_PARAMS(params, OpusEnc); break;
|
||||
case SettingsModel::DCAEncoder: LOAD_PARAMS(params, DcaEnc); break;
|
||||
case SettingsModel::MACEncoder: LOAD_PARAMS(params, MacEnc); break;
|
||||
case SettingsModel::PCMEncoder: LOAD_PARAMS(params, Wave); break;
|
||||
default: THROW("Unsupported encoder!");
|
||||
}
|
||||
@ -419,6 +434,7 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
|
||||
RESET_SETTING(settings, compressionAbrBitrateDcaEnc);
|
||||
RESET_SETTING(settings, compressionAbrBitrateFLAC);
|
||||
RESET_SETTING(settings, compressionAbrBitrateLAME);
|
||||
RESET_SETTING(settings, compressionAbrBitrateMacEnc);
|
||||
RESET_SETTING(settings, compressionAbrBitrateOggEnc);
|
||||
RESET_SETTING(settings, compressionAbrBitrateOpusEnc);
|
||||
RESET_SETTING(settings, compressionAbrBitrateWave);
|
||||
@ -428,6 +444,7 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
|
||||
RESET_SETTING(settings, compressionCbrBitrateDcaEnc);
|
||||
RESET_SETTING(settings, compressionCbrBitrateFLAC);
|
||||
RESET_SETTING(settings, compressionCbrBitrateLAME);
|
||||
RESET_SETTING(settings, compressionCbrBitrateMacEnc);
|
||||
RESET_SETTING(settings, compressionCbrBitrateOggEnc);
|
||||
RESET_SETTING(settings, compressionCbrBitrateOpusEnc);
|
||||
RESET_SETTING(settings, compressionCbrBitrateWave);
|
||||
@ -437,6 +454,7 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
|
||||
RESET_SETTING(settings, compressionRCModeDcaEnc);
|
||||
RESET_SETTING(settings, compressionRCModeFLAC);
|
||||
RESET_SETTING(settings, compressionRCModeLAME);
|
||||
RESET_SETTING(settings, compressionRCModeMacEnc);
|
||||
RESET_SETTING(settings, compressionRCModeOggEnc);
|
||||
RESET_SETTING(settings, compressionRCModeOpusEnc);
|
||||
RESET_SETTING(settings, compressionRCModeWave);
|
||||
@ -446,6 +464,7 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
|
||||
RESET_SETTING(settings, compressionVbrQualityDcaEnc);
|
||||
RESET_SETTING(settings, compressionVbrQualityFLAC);
|
||||
RESET_SETTING(settings, compressionVbrQualityLAME);
|
||||
RESET_SETTING(settings, compressionVbrQualityMacEnc);
|
||||
RESET_SETTING(settings, compressionVbrQualityOggEnc);
|
||||
RESET_SETTING(settings, compressionVbrQualityOpusEnc);
|
||||
RESET_SETTING(settings, compressionVbrQualityWave);
|
||||
|
@ -58,7 +58,7 @@ static const char *update_mirrors_prim[] =
|
||||
"http://muldersoft.zxq.net/",
|
||||
"http://lamexp.sourceforge.net/",
|
||||
"http://lamexp.berlios.de/",
|
||||
"http://lordmulder.github.com/LameXP/",
|
||||
"http://lordmulder.github.io/LameXP/",
|
||||
"http://lord_mulder.bitbucket.org/",
|
||||
"http://www.tricksoft.de/",
|
||||
NULL
|
||||
|
@ -65,7 +65,7 @@ g_lamexp_tools[] =
|
||||
{"19c9dbe9089491c1f59ae48016d95d4336c4d3743577db4e782d8b59eca3b2bda6ed8f92f9004f88f434935b79e4974b", CPU_TYPE_ALL_ALL, "gpgv.gpg", UINT_MAX, ""},
|
||||
{"53cfab3896a47d48f523315f475fa07856d468ad1aefcc8cce19c18cdf509e2f92840dab92a442995df36d941cb7a6ca", CPU_TYPE_ALL_GEN, "lame.i386.exe", 3995, "Final"},
|
||||
{"9511e7ef2ad10de05386eedf7f14d637edab894a53dacd2f8f15c6f8ed582f12c25fb5bf88438e62c46b8eb92e7634b2", CPU_TYPE_ALL_SSE, "lame.sse2.exe", 3995, "Final"},
|
||||
{"0bc73180090547215d10cb7112d05503f7f666ef60ee0556d0f648a6c65172554ed04a05bc5d08b5645437c5408dffe9", CPU_TYPE_ALL_ALL, "mac.exe", 411, ""},
|
||||
{"fdbeb978025b9a5345300f37bb56446c31c7db594cf29407afdcc9ce20f4a5cec6eb8c03962c247d4f45b83c465ac705", CPU_TYPE_ALL_ALL, "mac.exe", 412, ""},
|
||||
{"21c4e79cc032d3b7ee635295cef99dc8ec1a0bf184ef613cdd372ec6d406ba2f376dc2873f65e6ab7e9fc0b38aabbb59", CPU_TYPE_X86_ALL, "mediainfo.i386.exe", 764, ""},
|
||||
{"4e74c7802f9b015c7da9a97a37af0c6eced9f0fead3ad6720e76ac9d429d0319b5013e7957106a28a22f7415fb01b3d3", CPU_TYPE_X64_ALL, "mediainfo.x64.exe", 764, ""},
|
||||
{"7e6346a057634ff07b2e1f427035324f7f02100cc996425990f87f71d767fce4c7b101588c7d944ba49cb2d7e51c9bdb", CPU_TYPE_ALL_ALL, "mpcdec.exe", 475, ""},
|
||||
@ -80,7 +80,8 @@ g_lamexp_tools[] =
|
||||
{"bdfa8dec142b6327a33af6bb314d7beb924588d1b73f2ef3f46b31fa6046fe2f4e64ca78b025b7eb9290a78320e2aa57", CPU_TYPE_ALL_ALL, "refalac.exe", 56, ""},
|
||||
{"d041b60de6c5c6e77cbad84440db57bbeb021af59dd0f7bebd3ede047d9e2ddc2a0c14179472687ba91063743d23e337", CPU_TYPE_ALL_ALL, "shorten.exe", 361, ""},
|
||||
{"cf988bfbb53e77a1dcaefbd5c08789abb4d67cc210723f1f8ba7850f17d34ebb7d0c426b67b963e7d2290a2744865244", CPU_TYPE_ALL_ALL, "sox.exe", 1441, ""},
|
||||
{"5a4261e1b41a59d1a5bc92e1d2766422a67454d77e06ea29af392811b7b4704e0f3e494ab9cb6375ce9e39257867c5ed", CPU_TYPE_ALL_ALL, "speexdec.exe", 12},
|
||||
{"5a4261e1b41a59d1a5bc92e1d2766422a67454d77e06ea29af392811b7b4704e0f3e494ab9cb6375ce9e39257867c5ed", CPU_TYPE_ALL_ALL, "speexdec.exe", 12, ""},
|
||||
{"75d4c18dbb74e2dbf7342698428248d45cc4070d5f95da8831ef755e63dcd7ff9c3a760f289e8ef8b5c06b82548edbd8", CPU_TYPE_ALL_ALL, "tag.exe", 100, ""},
|
||||
{"a83628880da0b7519ec368a74a92da5a5099d8d46aa0583131f92d7321f47c9e16a1841b2a3fb8ffcca7205ef4b1bb0a", CPU_TYPE_ALL_ALL, "tta.exe", 21, ""},
|
||||
{"9e1ade2137ea5cee0ad4657971c314a372df3068594fbe4f77d45b9eb65fa7c69e55027b0df81b6fe072a220e9a8ba8a", CPU_TYPE_ALL_ALL, "valdec.exe", 100, "a"},
|
||||
{"509df39fdd7033b0f1af831304d0d6c08b74d5a48e2c038857a78b9dfaa4fb83c6b5c7ea202ba2270c0384607f2316ee", CPU_TYPE_ALL_ALL, "wget.exe", 1140, ""},
|
||||
|
Loading…
Reference in New Issue
Block a user