Merge branch 'master' of github.com:lordmulder/LameXP

Conflicts:
	etc/Translation/Blank.ts
	etc/Translation/LameXP_DE.ts
	etc/Translation/LameXP_ES.ts
	etc/Translation/LameXP_FR.ts
	etc/Translation/LameXP_IT.ts
	etc/Translation/LameXP_KR.ts
	etc/Translation/LameXP_RU.ts
	etc/Translation/LameXP_UK.ts
	res/localization/LameXP_DE.qm
	src/Config.h
This commit is contained in:
LoRd_MuldeR 2011-05-09 08:35:06 +02:00
commit c526a7572d
27 changed files with 1328 additions and 62 deletions

View File

@ -34,11 +34,13 @@ a:visited { color: #0000EE; }
<li><a href="#9fd53558">How can I use LameXP as a "portable" application?</a>
<li><a href="#3d6684e9">Is there a way to use custom tools (binaries) with LameXP instead of the "built-in" ones?</a>
<li><a href="#df406578">The LameXP startup (splash screen) takes very long on my system. What can I do?</a>
<li><a href="#900a2a6c">Is there a way to hide/show the LameXP console ("DOS Box") window?</a>
<li><a href="#9b0a5c32">Why does application 'xyz' not open the Wave files created by LameXP?</a>
<li><a href="#89cbd3d0">Why does LameXP run only 'n' parallel instances/threads on my computer?</a>
<li><a href="#12d077d5">How can I force LameXP to create ID3 version 2 (ID3v2) tags?</a>
<li><a href="#d83ab3c6">Why does LameXP use LAME v3.99 rather than v3.98?</a><br>
<li><a href="#4213adbc">Can LameXP be used to convert/extract tracks from an Audio CD?</a>
<li><a href="#434f2578">Why is the maximum normalization level limited to -0.5 dB?</a>
<li><a href="#e7c9ae2b">Why do I get the error 'Executable doesn't support Windows compatibility mode' on startup?</a>
<li><a href="#328b0a18">Why do I get the error 'Executable requires Windows XP or later' on startup?</a>
<li><a href="#3ffe490e">Why do I get the error 'The procedure entry point De/EncodePointer could not be located' on startup?</a>
@ -92,10 +94,11 @@ The following platforms are NOT supported any longer:<br><ul>
<a name="29065b86"></a><b>What output formats (encoders) does LameXP support?</b><br>
<br>
Currently the following output formats are supported by LameXP:<br><ul>
<li>MPEG Audio-Layer III (MP3), using the LAME encoder [built-in]
<li>Ogg Vorbis, using the OggEnc2/libvorbis encoder [built-in]
<li>Advanced Audio Coding (AAC), using Nero AAC encoder [available as separate download]
<li>Free Lossless Audio Codec (FLAC) [built-in]
<li>MPEG Audio-Layer III (MP3), using the <a href="http://lamexp.sourceforge.net/" target="_blank">LAME</a> encoder [built-in]
<li>Ogg Vorbis, using the <a href="http://www.xiph.org/vorbis/" target="_blank">OggEnc2/libvorbis</a> encoder with <a href="http://www.geocities.jp/aoyoume/aotuv/" target="_blank">aoTuV</a> [built-in]
<li>Advanced Audio Coding (AAC), using <a href="http://www.audiocoding.com/nero_aacenc.html" target="_blank">Nero AAC</a> encoder [separate download!]
<li>ATSC A/52 (aka "AC-3"), using the <a href="http://aften.sourceforge.net/" target="_blank">Aften</a> encoder [built-in]
<li>Free Lossless Audio Codec (<a href="http://flac.sourceforge.net/" target="_blank">FLAC</a>) [built-in]
<li>Uncompressed PCM / Waveform Audio File (WAV/RIFF)</ul>
<br><br>
@ -373,6 +376,25 @@ the developer of the anti-virus software. And, if they don't fix the problem, sw
<br><br>
<a name="900a2a6c"></a><b>Is there a way to hide/show the LameXP console ("DOS Box") window?</b><br>
<br>
It is common for many people to run an alleged "DOS" program inside Windows, using a so-called "DOS Box".<br>
Everything works fine. But when you try to run such a program in DOS, you get an ugly message "This program<br>
cannot be run in DOS mode". What's wrong? Well, the affected program is NOT a "DOS" one. It is a Windows<br>
Console program. "DOS" is NOT a synonym of Console. And "Windows" is NOT a synonym of GUI (Graphical User<br>
Interface). Both, DOS and Windows programs, can be either Console or GUI. Actually Windows programs can be<br>
Console *and* GUI at the same time, i.e. a Windows GUI program can have a Console attached.<br>
<br>
LameXP is a GUI program for Windows. However it can have a "Debug" console attached. The purpose of this<br>
console is providing users an insight into what's happening behind the scenes. While the console is mainly<br>
intended for developers, it may be helpful for "regular" users too. Nonetheless you usually will NOT need the<br>
console, unless something is going wrong. Therefore the LameXP console is disabled by default in all<br>
"release" builds. You can enable the console by passing the "--console" command-line parameter, if required.<br>
At the same time the console is enabled by default in all "beta" (pre-release) builds of LameXP. You can<br>
still disable the console by passing the "--no-console" command-line parameter, if you don't like it.<br><br>
<br><br>
<a name="9b0a5c32"></a><b>Why does application 'xyz' not open the Wave files created by LameXP?</b><br>
<br>
Some of the decoders used in LameXP will insert an additional 'JUNK' chunk into the Wave/RIFF file, right<br>
@ -465,6 +487,41 @@ the '.cda' files directly is destined to fail (as the '.cda' files do NOT actual
<br><br>
<a name="434f2578"></a><b>Why is the maximum normalization level limited to -0.5 dB?</b><br>
<br>
When an analogue [audio] signal is converted to the digital domain, the signal is sampled at a fixed rate<br>
(e.g. 44100 samples per second) and each "sample" value is stored with a fixed number of bits (e.g. 16 or 24<br>
bits per sample). Consequently [uncompressed] digital audio is represented as a sequence of binary sample<br>
values. The range of possible sample values is determined by the word size ("bits per sample"). For example<br>
with a word size of 16 bit, the minimum value is &minus;32768 and the maximum value is 32767 - assuming the values<br>
are signed. The range of the sample values corresponds to the voltage range of the electrical input signal.<br>
The maximum digital sample value (i.e. 32767 at 16-Bit) often is referred to as 0dBFS (0dB "full scale").<br>
<br>
Performing a Normalization in the digital domain seems straightforward: We simply multiply all sample values<br>
with the same factor. And we choose this factor in such a way that the highest sample value(s) in the track<br>
will become exactly 0dBFS after the normalization has been performed. However one needs to be aware that when<br>
playing back the digital audio track, it needs to be converted back to an analogue signal. The D/A converter<br>
will convert each sample from its binary representation to the corresponding voltage. Then a "reconstruction"<br>
filter will be applied in order to recover a continuous signal from these individual voltages. And for the<br>
reconstructed analogue signal it is possible to have voltages that are higher than the highest digital sample<br>
in the audio track! This is illustrated in the following image (samples are represented as tiny squares):<br>
<br>
<a target="_blank" href="http://img3.imageshack.us/img3/9153/sine0dbfs.png"><img src="http://img3.imageshack.us/img3/9153/sine0dbfs.th.png" border="0"></a><br>
<br>
Consequently normalizing the sample values to 0dBFS is NOT a very good idea, as this may very well result in<br>
a reconstructed analogue signal which exceeds(!) 0dBFS. And, as the analogue parts of the playback equipment<br>
generally are NOT prepared for +0dBFS voltages, this may cause problems, such as annoying distortions!<br>
<br>
The help document of a well-known audio editing software contains the following advice:<br>
<blockquote>If you're planning to put normalized audio on CD, you might want to normalize the waveforms to<br>
no more than 96% [-0.36 dB] as some audio compact disc players have problems accurately reproducing<br>
bits that have been processed to 100% (maximum) amplitude [0dBFS].</blockquote>
For details please refer to the following article:<br><ul>
<li><a href="http://www.audioholics.com/education/audio-formats-technology/issues-with-0dbfs-levels-on-digital-audio-playback-systems" target="_blank">http://www.audioholics.com/...issues-with-0dbfs-levels-on-digital-audio-playback-systems</a></ul>
<br><br>
<a name="e7c9ae2b"></a><b>Why do I get the error 'Executable doesn't support Windows compatibility mode' on startup?</b><br>
<br>
LameXP was designed to run on all supported platforms natively (except for Linux/Wine). If you see this error<br>

View File

@ -103,6 +103,10 @@
<source>Available from vendor web-site as free download:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Aften &amp;minus; A/52 audio encoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>FLAC &amp;minus; Free Lossless Audio Codec</source>
<translation type="unfinished"></translation>
@ -163,6 +167,14 @@
<source>The True Audio &amp;minus; Lossless Audio Codec</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ALAC Decoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2004 David Hammerton. Contributions by Cody Brocious.</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>MediaInfo &amp;minus; Media File Analysis Tool</source>
<translation type="unfinished"></translation>
@ -199,10 +211,6 @@
<source>n/a</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Aften &amp;minus; A/52 audio encoder</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -424,6 +432,10 @@
<source>FLAC</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Aften A/52</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> Rate Control Method </source>
<translation type="unfinished"></translation>
@ -600,6 +612,10 @@
<source> Custom Encoder Parameters </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Lame MP3:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>OggEnc2:</source>
<translation type="unfinished"></translation>
@ -616,6 +632,10 @@
<source>Warning: Custom parameters won&apos;t be checked at all. Use them at your own risk !!!</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Aften A/52:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> Multi-Threading </source>
<translation type="unfinished"></translation>
@ -644,6 +664,86 @@
<source>Store temporary files in your system&apos;s default TEMP directory (Recommended)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> Aften A/52 Options </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Speech</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>None (Default)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Auto Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1+1 (Ch1,Ch2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1/0 (C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/0 (L,R)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/0 (L,R,C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/1 (L,R,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/1 (L,R,C,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/2 (L,R,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/2 (L,R,C,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Audio Coding Mode:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dynamic Range Compression:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fast Bit Allocation (Less Accurate)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exponent Search Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reset Advanced Options </source>
<translation type="unfinished"></translation>
@ -988,6 +1088,14 @@
<source>AAC Support Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Discard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Don&apos;t Show Again</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LameXP has detected that the WMA File Decoder component is not currently installed on your system.</source>
<translation type="unfinished"></translation>
@ -1248,10 +1356,6 @@
<source>Check Now</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Discard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>LameXP will &lt;i&gt;not&lt;/i&gt; check for Beta (pre-release) updates from now on.</source>
<translation type="unfinished"></translation>
@ -1272,18 +1376,6 @@
<source>The LameXP shell integration has been re-enabled.</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"></translation>
</message>
<message>
<source>Aften A/52:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -201,7 +201,15 @@
</message>
<message>
<source>Aften &amp;minus; A/52 audio encoder</source>
<translation type="unfinished"></translation>
<translation>Aften &amp;minus; A/52 Audio-Kodierer</translation>
</message>
<message>
<source>ALAC Decoder</source>
<translation>ALAC Dekodierer</translation>
</message>
<message>
<source>Copyright (c) 2004 David Hammerton. Contributions by Cody Brocious.</source>
<translation>Copyright (c) 2004 David Hammerton. Unter Mitwirkung von Cody Brocious.</translation>
</message>
</context>
<context>
@ -1275,15 +1283,99 @@
</message>
<message>
<source>Aften A/52</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<source>Lame MP3:</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<source>Aften A/52:</source>
<translation type="unfinished"></translation>
<translation></translation>
</message>
<message>
<source> Aften A/52 Options </source>
<translation> Aften A/52 Optionen </translation>
</message>
<message>
<source>Film Light</source>
<translation>Film (Gering)</translation>
</message>
<message>
<source>Film Standard</source>
<translation>Film (Normal)</translation>
</message>
<message>
<source>Music Light</source>
<translation>Musik (Gering)</translation>
</message>
<message>
<source>Music Standard</source>
<translation>Musik (Normal)</translation>
</message>
<message>
<source>Speech</source>
<translation>Sprache</translation>
</message>
<message>
<source>None (Default)</source>
<translation>Keine (Standard)</translation>
</message>
<message>
<source>Auto Select</source>
<translation>Automatisch</translation>
</message>
<message>
<source>1+1 (Ch1,Ch2)</source>
<translation></translation>
</message>
<message>
<source>1/0 (C)</source>
<translation></translation>
</message>
<message>
<source>2/0 (L,R)</source>
<translation></translation>
</message>
<message>
<source>3/0 (L,R,C)</source>
<translation></translation>
</message>
<message>
<source>2/1 (L,R,S)</source>
<translation></translation>
</message>
<message>
<source>3/1 (L,R,C,S)</source>
<translation></translation>
</message>
<message>
<source>2/2 (L,R,SL,SR)</source>
<translation></translation>
</message>
<message>
<source>3/2 (L,R,C,SL,SR)</source>
<translation></translation>
</message>
<message>
<source>Audio Coding Mode:</source>
<translation>Ton-Kodierungsmodus:</translation>
</message>
<message>
<source>Dynamic Range Compression:</source>
<translation>Dynamik-Kompression:</translation>
</message>
<message>
<source>Fast Bit Allocation (Less Accurate)</source>
<translation>Schnelle Bit-Zuteilung (weniger genau)</translation>
</message>
<message>
<source>Exponent Search Size:</source>
<translation>Exponenten Such-Größe:</translation>
</message>
<message>
<source>Don&apos;t Show Again</source>
<translation>Nicht mehr anzeigen</translation>
</message>
</context>
<context>

View File

@ -203,6 +203,14 @@
<source>Aften &amp;minus; A/52 audio encoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ALAC Decoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2004 David Hammerton. Contributions by Cody Brocious.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1284,6 +1292,90 @@
<source>Aften A/52:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> Aften A/52 Options </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Speech</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>None (Default)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Auto Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1+1 (Ch1,Ch2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1/0 (C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/0 (L,R)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/0 (L,R,C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/1 (L,R,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/1 (L,R,C,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/2 (L,R,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/2 (L,R,C,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Audio Coding Mode:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dynamic Range Compression:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fast Bit Allocation (Less Accurate)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exponent Search Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Don&apos;t Show Again</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -207,6 +207,14 @@
<source>Aften &amp;minus; A/52 audio encoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ALAC Decoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2004 David Hammerton. Contributions by Cody Brocious.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1294,6 +1302,90 @@ Ouvrir le dossier récursivement...</translation>
<source>Aften A/52:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> Aften A/52 Options </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Speech</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>None (Default)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Auto Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1+1 (Ch1,Ch2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1/0 (C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/0 (L,R)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/0 (L,R,C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/1 (L,R,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/1 (L,R,C,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/2 (L,R,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/2 (L,R,C,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Audio Coding Mode:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dynamic Range Compression:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fast Bit Allocation (Less Accurate)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exponent Search Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Don&apos;t Show Again</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -203,6 +203,14 @@
<source>Aften &amp;minus; A/52 audio encoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ALAC Decoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2004 David Hammerton. Contributions by Cody Brocious.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1285,6 +1293,90 @@
<source>Aften A/52:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> Aften A/52 Options </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Speech</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>None (Default)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Auto Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1+1 (Ch1,Ch2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1/0 (C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/0 (L,R)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/0 (L,R,C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/1 (L,R,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/1 (L,R,C,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/2 (L,R,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/2 (L,R,C,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Audio Coding Mode:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dynamic Range Compression:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fast Bit Allocation (Less Accurate)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exponent Search Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Don&apos;t Show Again</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -203,6 +203,14 @@
<source>Aften &amp;minus; A/52 audio encoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ALAC Decoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2004 David Hammerton. Contributions by Cody Brocious.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1284,6 +1292,90 @@
<source>Aften A/52:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> Aften A/52 Options </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Speech</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>None (Default)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Auto Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1+1 (Ch1,Ch2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1/0 (C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/0 (L,R)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/0 (L,R,C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/1 (L,R,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/1 (L,R,C,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/2 (L,R,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/2 (L,R,C,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Audio Coding Mode:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dynamic Range Compression:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fast Bit Allocation (Less Accurate)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exponent Search Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Don&apos;t Show Again</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -203,6 +203,14 @@
<source>Aften &amp;minus; A/52 audio encoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ALAC Decoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2004 David Hammerton. Contributions by Cody Brocious.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1286,6 +1294,90 @@
<source>Aften A/52:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> Aften A/52 Options </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Speech</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>None (Default)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Auto Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1+1 (Ch1,Ch2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1/0 (C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/0 (L,R)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/0 (L,R,C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/1 (L,R,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/1 (L,R,C,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/2 (L,R,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/2 (L,R,C,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Audio Coding Mode:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dynamic Range Compression:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fast Bit Allocation (Less Accurate)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exponent Search Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Don&apos;t Show Again</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -203,6 +203,14 @@
<source>Aften &amp;minus; A/52 audio encoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>ALAC Decoder</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Copyright (c) 2004 David Hammerton. Contributions by Cody Brocious.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>AudioFileModel</name>
@ -1284,6 +1292,90 @@
<source>Aften A/52:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source> Aften A/52 Options </source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Film Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Light</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Music Standard</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Speech</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>None (Default)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Auto Select</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1+1 (Ch1,Ch2)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>1/0 (C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/0 (L,R)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/0 (L,R,C)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/1 (L,R,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/1 (L,R,C,S)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>2/2 (L,R,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>3/2 (L,R,C,SL,SR)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Audio Coding Mode:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Dynamic Range Compression:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Fast Bit Allocation (Less Accurate)</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Exponent Search Size:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Don&apos;t Show Again</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MetaInfo</name>

View File

@ -33,6 +33,7 @@
..\..\src\Dialog_WorkingBanner.cpp
..\..\src\Encoder_AAC.cpp
..\..\src\Encoder_Abstract.cpp
..\..\src\Encoder_AC3.cpp
..\..\src\Encoder_FLAC.cpp
..\..\src\Encoder_MP3.cpp
..\..\src\Encoder_Vorbis.cpp
@ -92,6 +93,7 @@
..\..\src\Dialog_WorkingBanner.h
..\..\src\Encoder_AAC.h
..\..\src\Encoder_Abstract.h
..\..\src\Encoder_AC3.h
..\..\src\Encoder_FLAC.h
..\..\src\Encoder_MP3.h
..\..\src\Encoder_Vorbis.h

View File

@ -1068,7 +1068,7 @@
<x>0</x>
<y>0</y>
<width>604</width>
<height>1117</height>
<height>1244</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_22">
@ -1705,7 +1705,7 @@
</layout>
</widget>
</item>
<item row="4" column="0">
<item row="5" column="0">
<widget class="QGroupBox" name="groupBox_9">
<property name="font">
<font>
@ -1850,7 +1850,7 @@
</layout>
</widget>
</item>
<item row="5" column="0">
<item row="6" column="0">
<widget class="QGroupBox" name="groupBox_10">
<property name="font">
<font>
@ -2028,7 +2028,7 @@
</layout>
</widget>
</item>
<item row="6" column="0">
<item row="7" column="0">
<widget class="QGroupBox" name="groupBox_11">
<property name="font">
<font>
@ -2237,7 +2237,7 @@
</layout>
</widget>
</item>
<item row="7" column="0">
<item row="8" column="0">
<widget class="QGroupBox" name="groupBox_12">
<property name="font">
<font>
@ -2401,7 +2401,7 @@
</layout>
</widget>
</item>
<item row="8" column="0">
<item row="9" column="0">
<widget class="QGroupBox" name="groupBox_13">
<property name="font">
<font>
@ -2531,6 +2531,258 @@
</layout>
</widget>
</item>
<item row="4" column="0">
<widget class="QGroupBox" name="groupBox_14">
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="title">
<string> Aften A/52 Options </string>
</property>
<layout class="QGridLayout" name="gridLayout_36">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_35">
<item row="1" column="5">
<widget class="QComboBox" name="comboBoxAftenDRCMode">
<property name="currentIndex">
<number>5</number>
</property>
<item>
<property name="text">
<string>Film Light</string>
</property>
</item>
<item>
<property name="text">
<string>Film Standard</string>
</property>
</item>
<item>
<property name="text">
<string>Music Light</string>
</property>
</item>
<item>
<property name="text">
<string>Music Standard</string>
</property>
</item>
<item>
<property name="text">
<string>Speech</string>
</property>
</item>
<item>
<property name="text">
<string>None (Default)</string>
</property>
</item>
</widget>
</item>
<item row="1" column="2">
<widget class="QComboBox" name="comboBoxAftenCodingMode">
<item>
<property name="text">
<string>Auto Select</string>
</property>
</item>
<item>
<property name="text">
<string>1+1 (Ch1,Ch2)</string>
</property>
</item>
<item>
<property name="text">
<string>1/0 (C)</string>
</property>
</item>
<item>
<property name="text">
<string>2/0 (L,R)</string>
</property>
</item>
<item>
<property name="text">
<string>3/0 (L,R,C)</string>
</property>
</item>
<item>
<property name="text">
<string>2/1 (L,R,S)</string>
</property>
</item>
<item>
<property name="text">
<string>3/1 (L,R,C,S)</string>
</property>
</item>
<item>
<property name="text">
<string>2/2 (L,R,SL,SR)</string>
</property>
</item>
<item>
<property name="text">
<string>3/2 (L,R,C,SL,SR)</string>
</property>
</item>
</widget>
</item>
<item row="1" column="1">
<widget class="QLabel" name="label_14">
<property name="text">
<string>Audio Coding Mode:</string>
</property>
</widget>
</item>
<item row="1" column="4">
<widget class="QLabel" name="label_15">
<property name="text">
<string>Dynamic Range Compression:</string>
</property>
</widget>
</item>
<item row="1" column="3">
<spacer name="horizontalSpacer_39">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0" rowspan="3">
<spacer name="horizontalSpacer_40">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="7" rowspan="3">
<spacer name="horizontalSpacer_41">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1" colspan="6">
<spacer name="verticalSpacer_23">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>8</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="1" colspan="6">
<spacer name="verticalSpacer_24">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>8</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="6">
<spacer name="horizontalSpacer_42">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="1" colspan="6">
<spacer name="verticalSpacer_25">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>6</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="1" colspan="2">
<widget class="QCheckBox" name="checkBoxAftenFastAllocation">
<property name="text">
<string>Fast Bit Allocation (Less Accurate)</string>
</property>
</widget>
</item>
<item row="3" column="4">
<widget class="QLabel" name="label_16">
<property name="text">
<string>Exponent Search Size:</string>
</property>
</widget>
</item>
<item row="3" column="5">
<widget class="QSpinBox" name="spinBoxAftenSearchSize">
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>32</number>
</property>
<property name="value">
<number>8</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
</layout>
</item>
<item row="6" column="0">
@ -2819,9 +3071,10 @@
<addaction name="separator"/>
<addaction name="actionCheckForBetaUpdates"/>
</widget>
<addaction name="menuConfiguration"/>
<addaction name="actionInstallWMADecoder"/>
<addaction name="actionShowDropBoxWidget"/>
<addaction name="separator"/>
<addaction name="menuConfiguration"/>
</widget>
<addaction name="menuFile"/>
<addaction name="menuView"/>
@ -3191,6 +3444,10 @@
<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"/>
<include location="../res/Icons.qrc"/>
<include location="../res/Icons.qrc"/>
</resources>
<connections>
<connection>

Binary file not shown.

View File

@ -29,8 +29,8 @@
#define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 2
#define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 11
#define VER_LAMEXP_BUILD 486
#define VER_LAMEXP_PATCH 13
#define VER_LAMEXP_BUILD 494
///////////////////////////////////////////////////////////////////////////////
// Tools versions

View File

@ -127,7 +127,7 @@ AboutDialog::AboutDialog(SettingsModel *settings, QWidget *parent, bool firstSta
aboutText += "GNU General Public License for more details.<br><br>";
aboutText += "You should have received a copy of the GNU General Public License<br>";
aboutText += "along with this program; if not, write to the Free Software<br>";
aboutText += "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</tt></nobr><br>";
aboutText += "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110&minus;1301, USA.</tt></nobr><br>";
aboutText += "<hr><table><tr>";
aboutText += "<td valign=\"middle\"><img src=\":/icons/error_big.png\"</td><td>&nbsp;</td>";
aboutText += QString("<td><font color=\"darkred\">%1</font></td>").arg(tr("Note: LameXP is free software. Do <b>not</b> pay money to obtain or use LameXP! If some third-party website tries to make you pay for downloading LameXP, you should <b>not</b> respond to the offer !!!"));
@ -432,6 +432,13 @@ void AboutDialog::showMoreAbout(void)
"http://tta.sourceforge.net/"
);
moreAboutText += makeToolText
(
tr("ALAC Decoder"),
"alac.exe", "v?.?.?",
tr("Copyright (c) 2004 David Hammerton. Contributions by Cody Brocious."),
"http://craz.net/programs/itunes/alac.html"
);
moreAboutText += makeToolText
(
tr("MediaInfo &minus; Media File Analysis Tool"),
"mediainfo.exe", "v?.?.??",
@ -452,8 +459,6 @@ void AboutDialog::showMoreAbout(void)
tr("Released under the terms of the GNU Lesser General Public License."),
"http://www.gnupg.org/"
);
moreAboutText += makeToolText
(
tr("GNU Wget &minus; Software for retrieving files using HTTP"),
@ -461,8 +466,6 @@ void AboutDialog::showMoreAbout(void)
tr("Released under the terms of the GNU Lesser General Public License."),
"http://www.gnu.org/software/wget/"
);
moreAboutText += makeToolText
(
tr("Silk Icons &minus; Over 700 icons in PNG format"),
@ -470,9 +473,9 @@ void AboutDialog::showMoreAbout(void)
tr("By Mark James, released under the Creative Commons 'by' License."),
"http://www.famfamfam.com/lab/icons/silk/"
);
moreAboutText += QString("</ul></td><td>&nbsp;</td></tr></table></div><i>%1</i><br>").arg
moreAboutText += QString("</ul></td><td>&nbsp;</td></tr></table></div><i><nobr>%1</nobr></i><br>").arg
(
tr("LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of thrird-party software used in LameXP belongs to the individual authors.")
tr("LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of thrird-party software used in LameXP belongs to the individual authors.").replace("-", "&minus;")
);
QMessageBox *moreAboutBox = new QMessageBox(this);

View File

@ -214,11 +214,15 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
spinBoxNormalizationFilter->setValue(static_cast<double>(m_settings->normalizationFilterMaxVolume()) / 100.0);
spinBoxToneAdjustBass->setValue(static_cast<double>(m_settings->toneAdjustBass()) / 100.0);
spinBoxToneAdjustTreble->setValue(static_cast<double>(m_settings->toneAdjustTreble()) / 100.0);
spinBoxAftenSearchSize->setValue(m_settings->aftenExponentSearchSize());
comboBoxMP3ChannelMode->setCurrentIndex(m_settings->lameChannelMode());
comboBoxSamplingRate->setCurrentIndex(m_settings->samplingRate());
comboBoxNeroAACProfile->setCurrentIndex(m_settings->neroAACProfile());
comboBoxAftenCodingMode->setCurrentIndex(m_settings->aftenAudioCodingMode());
comboBoxAftenDRCMode->setCurrentIndex(m_settings->aftenDynamicRangeCompression());
while(checkBoxBitrateManagement->isChecked() != m_settings->bitrateManagementEnabled()) checkBoxBitrateManagement->click();
while(checkBoxNeroAAC2PassMode->isChecked() != m_settings->neroAACEnable2Pass()) checkBoxNeroAAC2PassMode->click();
while(checkBoxAftenFastAllocation->isChecked() != m_settings->aftenFastBitAllocation()) checkBoxAftenFastAllocation->click();
while(checkBoxNormalizationFilter->isChecked() != m_settings->normalizationFilterEnabled()) checkBoxNormalizationFilter->click();
while(checkBoxAutoDetectInstances->isChecked() != (m_settings->maximumInstances() < 1)) checkBoxAutoDetectInstances->click();
while(checkBoxUseSystemTempFolder->isChecked() == m_settings->customTempPathEnabled()) checkBoxUseSystemTempFolder->click();
@ -237,6 +241,10 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
connect(checkBoxNeroAAC2PassMode, SIGNAL(clicked(bool)), this, SLOT(neroAAC2PassChanged(bool)));
connect(comboBoxNeroAACProfile, SIGNAL(currentIndexChanged(int)), this, SLOT(neroAACProfileChanged(int)));
connect(checkBoxNormalizationFilter, SIGNAL(clicked(bool)), this, SLOT(normalizationEnabledChanged(bool)));
connect(comboBoxAftenCodingMode, SIGNAL(currentIndexChanged(int)), this, SLOT(aftenCodingModeChanged(int)));
connect(comboBoxAftenDRCMode, SIGNAL(currentIndexChanged(int)), this, SLOT(aftenDRCModeChanged(int)));
connect(spinBoxAftenSearchSize, SIGNAL(valueChanged(int)), this, SLOT(aftenSearchSizeChanged(int)));
connect(checkBoxAftenFastAllocation, SIGNAL(clicked(bool)), this, SLOT(aftenFastAllocationChanged(bool)));
connect(spinBoxNormalizationFilter, SIGNAL(valueChanged(double)), this, SLOT(normalizationMaxVolumeChanged(double)));
connect(spinBoxToneAdjustBass, SIGNAL(valueChanged(double)), this, SLOT(toneAdjustBassChanged(double)));
connect(spinBoxToneAdjustTreble, SIGNAL(valueChanged(double)), this, SLOT(toneAdjustTrebleChanged(double)));
@ -652,12 +660,14 @@ void MainWindow::changeEvent(QEvent *e)
{
if(e->type() == QEvent::LanguageChange)
{
int comboBoxIndex[3];
int comboBoxIndex[5];
//Backup combobox indices, as retranslateUi() resets
comboBoxIndex[0] = comboBoxMP3ChannelMode->currentIndex();
comboBoxIndex[1] = comboBoxSamplingRate->currentIndex();
comboBoxIndex[2] = comboBoxNeroAACProfile->currentIndex();
comboBoxIndex[3] = comboBoxAftenCodingMode->currentIndex();
comboBoxIndex[4] = comboBoxAftenDRCMode->currentIndex();
//Re-translate from UIC
Ui::MainWindow::retranslateUi(this);
@ -666,6 +676,8 @@ void MainWindow::changeEvent(QEvent *e)
comboBoxMP3ChannelMode->setCurrentIndex(comboBoxIndex[0]);
comboBoxSamplingRate->setCurrentIndex(comboBoxIndex[1]);
comboBoxNeroAACProfile->setCurrentIndex(comboBoxIndex[2]);
comboBoxAftenCodingMode->setCurrentIndex(comboBoxIndex[3]);
comboBoxAftenDRCMode->setCurrentIndex(comboBoxIndex[4]);
//Update the window title
if(LAMEXP_DEBUG)
@ -919,13 +931,17 @@ void MainWindow::windowShown(void)
QString appPath = QDir(QCoreApplication::applicationDirPath()).canonicalPath();
if(appPath.isEmpty()) appPath = QCoreApplication::applicationDirPath();
QString messageText;
messageText += QString("<nobr>%1<br>").arg(tr("The Nero AAC encoder could not be found. AAC encoding support will be disabled."));
messageText += QString("%1<br><br>").arg(tr("Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory!"));
messageText += QString("%1<br>").arg(tr("Your LameXP directory is located here:"));
messageText += QString("<i><nobr><a href=\"file:///%1\">%1</a></nobr></i><br><br>").arg(QDir::toNativeSeparators(appPath));
messageText += QString("%1<br>").arg(tr("You can download the Nero AAC encoder for free from the official Nero website at:"));
messageText += QString("<nobr>%1</nobr><br>").arg(tr("The Nero AAC encoder could not be found. AAC encoding support will be disabled.").replace("-", "&minus;"));
messageText += QString("<nobr>%1</nobr><br><br>").arg(tr("Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory!").replace("-", "&minus;"));
messageText += QString("<nobr>%1</nobr><br>").arg(tr("Your LameXP directory is located here:").replace("-", "&minus;"));
messageText += QString("<nobr><i><a href=\"file:///%1\">%2</a></i></nobr><br><br>").arg(QDir::toNativeSeparators(appPath), QDir::toNativeSeparators(appPath).replace("-", "&minus;"));
messageText += QString("<nobr>%1</nobr><br>").arg(tr("You can download the Nero AAC encoder for free from the official Nero website at:").replace("-", "&minus;"));
messageText += "<tt>" + LINK(AboutDialog::neroAacUrl) + "</tt><br></nobr>";
QMessageBox::information(this, tr("AAC Support Disabled"), messageText);
if(QMessageBox::information(this, tr("AAC Support Disabled"), messageText, tr("Discard"), tr("Don't Show Again")) == 1)
{
m_settings->neroAacNotificationsEnabled(false);
actionDisableNeroAacNotifications->setChecked(!m_settings->neroAacNotificationsEnabled());
}
}
}
@ -935,10 +951,11 @@ void MainWindow::windowShown(void)
if(!lamexp_check_tool("wmawav.exe"))
{
QString messageText;
messageText += QString("<nobr>%1<br>").arg(tr("LameXP has detected that the WMA File Decoder component is not currently installed on your system."));
messageText += QString("%1<br><br>").arg(tr("You won't be able to process WMA files as input unless the WMA File Decoder component is installed!"));
messageText += QString("%1</nobr>").arg(tr("Do you want to download and install the WMA File Decoder component now?"));
if(QMessageBox::information(this, tr("WMA Decoder Missing"), messageText, tr("Download && Install"), tr("Postpone")) == 0)
messageText += QString("<nobr>%1</nobr><br>").arg(tr("LameXP has detected that the WMA File Decoder component is not currently installed on your system.").replace("-", "&minus;"));
messageText += QString("<nobr>%1</nobr><br><br>").arg(tr("You won't be able to process WMA files as input unless the WMA File Decoder component is installed!").replace("-", "&minus;"));
messageText += QString("<nobr>%1</nobr>").arg(tr("Do you want to download and install the WMA File Decoder component now?").replace("-", "&minus;"));
int result = QMessageBox::information(this, tr("WMA Decoder Missing"), messageText, tr("Download && Install"), tr("Don't Show Again"), tr("Postpone"));
if(result == 0)
{
if(installWMADecoder())
{
@ -946,6 +963,11 @@ void MainWindow::windowShown(void)
return;
}
}
else if(result == 1)
{
m_settings->wmaDecoderNotificationsEnabled(false);
actionDisableWmaDecoderNotifications->setChecked(!m_settings->wmaDecoderNotificationsEnabled());
}
}
}
@ -1897,7 +1919,7 @@ void MainWindow::updateBitrate(int value)
labelBitrate->setText(tr("Compression %1").arg(value));
break;
case SettingsModel::AC3Encoder:
labelBitrate->setText(tr("Quality Level %1").arg(min(1023, max(0, value * 64))));
labelBitrate->setText(tr("Quality Level %1").arg(min(1024, max(0, value * 64))));
break;
case SettingsModel::PCMEncoder:
labelBitrate->setText(tr("Uncompressed"));
@ -1937,7 +1959,7 @@ void MainWindow::updateBitrate(int value)
labelBitrate->setText(tr("Compression %1").arg(value));
break;
case SettingsModel::AC3Encoder:
labelBitrate->setText(QString("&asymp; %1 kbps").arg(SettingsModel::ac3Bitrates[value]));
labelBitrate->setText(QString("%1 kbps").arg(SettingsModel::ac3Bitrates[value]));
break;
case SettingsModel::PCMEncoder:
labelBitrate->setText(tr("Uncompressed"));
@ -2056,6 +2078,38 @@ void MainWindow::neroAACProfileChanged(int value)
if(value >= 0) m_settings->neroAACProfile(value);
}
/*
* Aften audio coding mode changed
*/
void MainWindow::aftenCodingModeChanged(int value)
{
if(value >= 0) m_settings->aftenAudioCodingMode(value);
}
/*
* Aften DRC mode changed
*/
void MainWindow::aftenDRCModeChanged(int value)
{
if(value >= 0) m_settings->aftenDynamicRangeCompression(value);
}
/*
* Aften exponent search size changed
*/
void MainWindow::aftenSearchSizeChanged(int value)
{
if(value >= 0) m_settings->aftenExponentSearchSize(value);
}
/*
* Aften fast bit allocation changed
*/
void MainWindow::aftenFastAllocationChanged(bool checked)
{
m_settings->aftenFastBitAllocation(checked);
}
/*
* Normalization filter enabled changed
*/
@ -2196,14 +2250,18 @@ void MainWindow::resetAdvancedOptionsButtonClicked(void)
spinBoxNormalizationFilter->setValue(static_cast<double>(m_settings->normalizationFilterMaxVolumeDefault()) / 100.0);
spinBoxToneAdjustBass->setValue(static_cast<double>(m_settings->toneAdjustBassDefault()) / 100.0);
spinBoxToneAdjustTreble->setValue(static_cast<double>(m_settings->toneAdjustTrebleDefault()) / 100.0);
spinBoxAftenSearchSize->setValue(m_settings->aftenExponentSearchSizeDefault());
comboBoxMP3ChannelMode->setCurrentIndex(m_settings->lameChannelModeDefault());
comboBoxSamplingRate->setCurrentIndex(m_settings->samplingRateDefault());
comboBoxNeroAACProfile->setCurrentIndex(m_settings->neroAACProfileDefault());
comboBoxAftenCodingMode->setCurrentIndex(m_settings->aftenAudioCodingModeDefault());
comboBoxAftenDRCMode->setCurrentIndex(m_settings->aftenDynamicRangeCompressionDefault());
while(checkBoxBitrateManagement->isChecked() != m_settings->bitrateManagementEnabledDefault()) checkBoxBitrateManagement->click();
while(checkBoxNeroAAC2PassMode->isChecked() != m_settings->neroAACEnable2PassDefault()) checkBoxNeroAAC2PassMode->click();
while(checkBoxNormalizationFilter->isChecked() != m_settings->normalizationFilterEnabledDefault()) checkBoxNormalizationFilter->click();
while(checkBoxAutoDetectInstances->isChecked() != (m_settings->maximumInstancesDefault() < 1)) checkBoxAutoDetectInstances->click();
while(checkBoxUseSystemTempFolder->isChecked() == m_settings->customTempPathEnabledDefault()) checkBoxUseSystemTempFolder->click();
while(checkBoxAftenFastAllocation->isChecked() != m_settings->aftenFastBitAllocationDefault()) checkBoxAftenFastAllocation->click();
lineEditCustomParamLAME->setText(m_settings->customParametersLAMEDefault());
lineEditCustomParamOggEnc->setText(m_settings->customParametersOggEncDefault());
lineEditCustomParamNeroAAC->setText(m_settings->customParametersNeroAACDefault());

View File

@ -88,6 +88,10 @@ private slots:
void channelModeChanged(int value);
void neroAACProfileChanged(int value);
void neroAAC2PassChanged(bool checked);
void aftenCodingModeChanged(int value);
void aftenDRCModeChanged(int value);
void aftenSearchSizeChanged(int value);
void aftenFastAllocationChanged(bool checked);
void normalizationEnabledChanged(bool checked);
void normalizationMaxVolumeChanged(double volume);
void toneAdjustBassChanged(double value);

View File

@ -607,6 +607,10 @@ void ProcessingDialog::startNextJob(void)
ac3Encoder->setBitrate(m_settings->compressionBitrate());
ac3Encoder->setRCMode(m_settings->compressionRCMode());
ac3Encoder->setCustomParams(m_settings->customParametersAften());
ac3Encoder->setAudioCodingMode(m_settings->aftenAudioCodingMode());
ac3Encoder->setDynamicRangeCompression(m_settings->aftenDynamicRangeCompression());
ac3Encoder->setExponentSearchSize(m_settings->aftenExponentSearchSize());
ac3Encoder->setFastBitAllocation(m_settings->aftenFastBitAllocation());
encoder = ac3Encoder;
}
break;

View File

@ -145,6 +145,12 @@ UpdateDialog::UpdateDialog(SettingsModel *settings, QWidget *parent)
labelAnimationCenter->setMovie(m_animator);
m_animator->start();
//Indicate beta updates
if(m_betaUpdates)
{
setWindowTitle(windowTitle().append(" [Beta]"));
}
//Enable button
connect(retryButton, SIGNAL(clicked()), this, SLOT(checkForUpdates()));
connect(installButton, SIGNAL(clicked()), this, SLOT(applyUpdate()));

View File

@ -38,6 +38,11 @@ AC3Encoder::AC3Encoder(void)
{
throw "Error initializing FLAC encoder. Tool 'aften.exe' is not registred!";
}
m_configAudioCodingMode = 0;
m_configDynamicRangeCompression = 5;
m_configExponentSearchSize = 8;
m_configFastBitAllocation = false;
}
AC3Encoder::~AC3Encoder(void)
@ -62,6 +67,23 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel &metaInf
break;
}
if(m_configAudioCodingMode >= 1)
{
args << "-acmod" << QString::number(m_configAudioCodingMode - 1);
}
if(m_configDynamicRangeCompression != 5)
{
args << "-dynrng" << QString::number(m_configDynamicRangeCompression);
}
if(m_configExponentSearchSize != 8)
{
args << "-exps" << QString::number(m_configExponentSearchSize);
}
if(m_configFastBitAllocation)
{
args << "-fba" << QString::number(1);
}
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
args << QDir::toNativeSeparators(sourceFile);
@ -130,11 +152,37 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel &metaInf
return true;
}
void AC3Encoder::setAudioCodingMode(int value)
{
m_configAudioCodingMode = min(8, max(0, value));
}
void AC3Encoder::setDynamicRangeCompression(int value)
{
m_configDynamicRangeCompression = min(5, max(0, value));
}
void AC3Encoder::setExponentSearchSize(int value)
{
m_configExponentSearchSize = min(32, max(1, value));
}
void AC3Encoder::setFastBitAllocation(bool value)
{
m_configFastBitAllocation = value;
}
QString AC3Encoder::extension(void)
{
return "ac3";
}
const unsigned int *AC3Encoder::requiresDownsample(void)
{
static const unsigned int supportedRates[] = {48000, 44100, 32000, NULL};
return supportedRates;
}
bool AC3Encoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)

View File

@ -36,7 +36,18 @@ public:
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 *requiresDownsample(void);
//Advanced options
virtual void setAudioCodingMode(int value);
virtual void setDynamicRangeCompression(int value);
virtual void setExponentSearchSize(int value);
virtual void setFastBitAllocation(bool value);
private:
const QString m_binary;
int m_configAudioCodingMode;
int m_configDynamicRangeCompression;
int m_configExponentSearchSize;
bool m_configFastBitAllocation;
};

View File

@ -45,11 +45,19 @@ void AbstractEncoder::setCustomParams(const QString &customParams) { m_configCus
/*
* Default implementation
*/
// Does encoder require the input to be downmixed to stereo?
bool AbstractEncoder::requiresDownmix(void)
{
return false;
}
// Does encoder require the input to be downsampled? (NULL-terminated array of supported sampling rates)
const unsigned int *AbstractEncoder::requiresDownsample(void)
{
return NULL;
}
/*
* Helper functions
*/

View File

@ -41,6 +41,7 @@ public:
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion) = 0;
virtual QString extension(void) = 0;
virtual bool requiresDownmix(void);
virtual const unsigned int *requiresDownsample(void);
//Common setter methods
void setBitrate(int bitrate);

View File

@ -91,6 +91,10 @@ LAMEXP_MAKE_ID(lameChannelMode, "AdvancedOptions/LAME/ChannelMode");
LAMEXP_MAKE_ID(bitrateManagementEnabled, "AdvancedOptions/BitrateManagement/Enabled");
LAMEXP_MAKE_ID(bitrateManagementMinRate, "AdvancedOptions/BitrateManagement/MinRate");
LAMEXP_MAKE_ID(bitrateManagementMaxRate, "AdvancedOptions/BitrateManagement/MaxRate");
LAMEXP_MAKE_ID(aftenAudioCodingMode, "AdvancedOptions/Aften/AudioCodingMode");
LAMEXP_MAKE_ID(aftenDynamicRangeCompression, "AdvancedOptions/Aften/DynamicRangeCompression");
LAMEXP_MAKE_ID(aftenFastBitAllocation, "AdvancedOptions/Aften/FastBitAllocation");
LAMEXP_MAKE_ID(aftenExponentSearchSize, "AdvancedOptions/Aften/ExponentSearchSize");
LAMEXP_MAKE_ID(samplingRate, "AdvancedOptions/Common/Resampling");
LAMEXP_MAKE_ID(neroAACEnable2Pass, "AdvancedOptions/NeroAAC/Enable2Pass");
LAMEXP_MAKE_ID(neroAACProfile, "AdvancedOptions/NeroAAC/ForceProfile");
@ -278,6 +282,10 @@ LAMEXP_MAKE_OPTION_I(bitrateManagementMaxRate, 500)
LAMEXP_MAKE_OPTION_I(samplingRate, 0)
LAMEXP_MAKE_OPTION_B(neroAACEnable2Pass, true)
LAMEXP_MAKE_OPTION_I(neroAACProfile, 0)
LAMEXP_MAKE_OPTION_I(aftenAudioCodingMode, 0);
LAMEXP_MAKE_OPTION_I(aftenDynamicRangeCompression, 5);
LAMEXP_MAKE_OPTION_B(aftenFastBitAllocation, false);
LAMEXP_MAKE_OPTION_I(aftenExponentSearchSize, 8);
LAMEXP_MAKE_OPTION_B(normalizationFilterEnabled, false)
LAMEXP_MAKE_OPTION_I(normalizationFilterMaxVolume, -50)
LAMEXP_MAKE_OPTION_I(toneAdjustBass, 0)

View File

@ -104,6 +104,10 @@ public:
LAMEXP_MAKE_OPTION_I(samplingRate);
LAMEXP_MAKE_OPTION_B(neroAACEnable2Pass);
LAMEXP_MAKE_OPTION_I(neroAACProfile);
LAMEXP_MAKE_OPTION_I(aftenAudioCodingMode);
LAMEXP_MAKE_OPTION_I(aftenDynamicRangeCompression);
LAMEXP_MAKE_OPTION_B(aftenFastBitAllocation);
LAMEXP_MAKE_OPTION_I(aftenExponentSearchSize);
LAMEXP_MAKE_OPTION_B(normalizationFilterEnabled);
LAMEXP_MAKE_OPTION_I(normalizationFilterMaxVolume);
LAMEXP_MAKE_OPTION_I(toneAdjustBass);

View File

@ -54,8 +54,8 @@ g_lamexp_tools[] =
{
{"0a6252606c1ceda7b8973e5935ef72d60b8fd64d", CPU_TYPE_X86, "aften.i386.exe", 8},
{"22253052acba92a0088bbf0aa82a8c505c07b854", CPU_TYPE_SSE, "aften.sse2.exe", 8},
{"2996a48b01b65a2c1806482654beeea7ffcf1f80", CPU_TYPE_X64, "aften.x64.exe", 8},
{"3b41f85dde8d4a5a0f4cd5f461099d0db24610ba", CPU_TYPE_ALL, "alac.exe", UINT_MAX},
{"2996a48b01b65a2c1806482654beeea7ffcf1f80", CPU_TYPE_X64, "aften.x64.exe", 8},
{"3b41f85dde8d4a5a0f4cd5f461099d0db24610ba", CPU_TYPE_ALL, "alac.exe", 20},
{"fb74ac8b73ad8cba2c3b4e6e61f23401d630dc22", CPU_TYPE_ALL, "elevator.exe", UINT_MAX},
{"80e372d8b20be24102c18284286fcdf5fa14bd86", CPU_TYPE_ALL, "faad.exe", 27},
{"d33cd86f04bd4067e244d2804466583c7b90a4e2", CPU_TYPE_ALL, "flac.exe", 121},
@ -64,13 +64,13 @@ g_lamexp_tools[] =
{"d5b3b80220d85a9fd2f486e37c1fb6511f3c2d72", CPU_TYPE_ALL, "lame.exe", 3990},
{"a4e929cfaa42fa2e61a3d0c6434c77a06d45aef3", CPU_TYPE_ALL, "mac.exe", 406},
{"a9aa99209fb9ad6ceb97b7a46774fc97141d3dce", CPU_TYPE_GEN, "mediainfo.i386.exe", 745},
{"9f6b81378e4c408fe5ded8a26ddd0d6c705d81cb", CPU_TYPE_X64, "mediainfo.x64.exe", 745},
{"9f6b81378e4c408fe5ded8a26ddd0d6c705d81cb", CPU_TYPE_X64, "mediainfo.x64.exe", 745},
{"aa89763a5ba4d1a5986549b9ee53e005c51940c1", CPU_TYPE_ALL, "mpcdec.exe", 435},
{"c327400fcee268f581d8c03e2a5cbbe8031abb6f", CPU_TYPE_ALL, "mpg123.exe", 1133},
{"8dd7138714c3bcb39f5a3213413addba13d06f1e", CPU_TYPE_ALL, "oggdec.exe", UINT_MAX},
{"97fed9ab0657baa36b6c7764461d66318654dbe6", CPU_TYPE_X86, "oggenc2.i386.exe", 287603},
{"e6dc1f31ce822588fa9cf52a341cebffd526546c", CPU_TYPE_SSE, "oggenc2.sse2.exe", 287603},
{"79aa9da24b2a0728cdf0a6927be316b864595b83", CPU_TYPE_X64, "oggenc2.x64.exe", 287603},
{"79aa9da24b2a0728cdf0a6927be316b864595b83", CPU_TYPE_X64, "oggenc2.x64.exe", 287603},
{"0d9035bb62bdf46a2785261f8be5a4a0972abd15", CPU_TYPE_ALL, "shorten.exe", 361},
{"50ead3b852cbfc067a402e6c2d0d0d8879663dec", CPU_TYPE_ALL, "sox.exe", 1432},
{"8671e16497a2d217d3707d4aa418678d02b16bcc", CPU_TYPE_ALL, "speexdec.exe", 12},

View File

@ -28,6 +28,7 @@
#include "Decoder_Abstract.h"
#include "Filter_Abstract.h"
#include "Filter_Downmix.h"
#include "Filter_Resample.h"
#include "Registry_Decoder.h"
#include "Model_Settings.h"
@ -40,6 +41,9 @@
#include <limits.h>
#include <time.h>
#include <stdlib.h>
#define DIFF(X,Y) ((X > Y) ? (X-Y) : (Y-X))
QMutex *ProcessThread::m_mutex_genFileName = NULL;
@ -83,6 +87,10 @@ ProcessThread::~ProcessThread(void)
LAMEXP_DELETE(m_encoder);
}
////////////////////////////////////////////////////////////
// Thread Entry Point
////////////////////////////////////////////////////////////
void ProcessThread::run()
{
try
@ -117,7 +125,13 @@ void ProcessThread::processFile()
emit processStateFinished(m_jobId, outFileName, false);
return;
}
//Do we need to take of downsampling the input?
if(m_encoder->requiresDownsample())
{
insertDownsampleFilter();
}
//Do we need Stereo downmix?
if(m_audioFile.formatAudioChannels() > 2 && m_encoder->requiresDownmix())
{
@ -324,6 +338,50 @@ QString ProcessThread::generateTempFileName(void)
return tempFileName;
}
void ProcessThread::insertDownsampleFilter(void)
{
bool applyDownsampling = true;
//Check if downsampling filter is already in the chain
for(int i = 0; i < m_filters.count(); i++)
{
if(dynamic_cast<ResampleFilter*>(m_filters.at(i)))
{
qWarning("Encoder requires downsampling, but user has already set resamling filter!");
applyDownsampling = false;
}
}
//Now add the downsampling filter, if needed
if(applyDownsampling)
{
const unsigned int *supportedRates = m_encoder->requiresDownsample();
const unsigned int inputRate = m_audioFile.formatAudioSamplerate();
unsigned int currentDiff = UINT_MAX, minimumDiff = UINT_MAX, bestRate = UINT_MAX;
//Find the most suitable supported sampling rate
for(int i = 0; supportedRates[i]; i++)
{
currentDiff = DIFF(inputRate, supportedRates[i]);
if(currentDiff < minimumDiff)
{
bestRate = supportedRates[i];
minimumDiff = currentDiff;
if(!(minimumDiff > 0)) break;
}
}
if(bestRate != inputRate)
{
m_filters.prepend(new ResampleFilter((bestRate != UINT_MAX) ? bestRate : supportedRates[0]));
}
}
}
////////////////////////////////////////////////////////////
// PUBLIC FUNCTIONS
////////////////////////////////////////////////////////////
void ProcessThread::addFilter(AbstractFilter *filter)
{
m_filters.append(filter);

View File

@ -67,6 +67,7 @@ private:
void processFile();
QString generateOutFileName(void);
QString generateTempFileName(void);
void insertDownsampleFilter(void);
const QUuid m_jobId;
AudioFileModel m_audioFile;