diff --git a/doc/Changelog.html b/doc/Changelog.html
index 0e1b564e..66cb1bc0 100644
--- a/doc/Changelog.html
+++ b/doc/Changelog.html
@@ -19,6 +19,7 @@ a:visited { color: #0000EE; }
Changes between v4.03 and v4.04:
- Added support for the QAAC Encoder, requires QuickTime v7.7.1 or newer (see FAQ doc for details)
- Added Chinese and Taiwanese translations, thanks to 456Vv <123@456vv.com>
+
- Added experimental support for dcaenc, created by Alexander E. Patrakov <patrakov@gmail.com>
- Updated Qt runtime libraries to v4.8.0 (2011-12-15), compiled with MSVC 10.0
- Updated LAME encoder to v3.99.2 Final (2011-11-18), compiled with ICL 12.1.7 and MSVC 10.0 (details)
- Updated MediaInfo to v0.7.52 (2011-12-19), compiled with ICL 12.1.6 and MSVC 10.0
diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts
index 3c16d2ef..1f6a3051 100644
--- a/etc/Translation/Blank.ts
+++ b/etc/Translation/Blank.ts
@@ -66,7 +66,7 @@
-
+
@@ -108,10 +108,10 @@
-
+
@@ -252,46 +252,46 @@
-
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
+
-
+
-
+
@@ -729,7 +729,7 @@
-
+
@@ -750,13 +750,13 @@
-
+
-
+
@@ -792,7 +792,7 @@
-
+
@@ -833,7 +833,7 @@
-
+
@@ -873,1373 +873,1378 @@
-
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
-
-
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2533,112 +2538,112 @@
ProcessThread
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2689,141 +2694,141 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
+
diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts
index 290fe7b3..734ccc11 100644
--- a/etc/Translation/LameXP_DE.ts
+++ b/etc/Translation/LameXP_DE.ts
@@ -87,10 +87,6 @@
Offene und patentfreie Technlogie zur verlustfreien Audiokompression.
-
-
- Von Mark James, veröffentlicht unter der Creative Commons 'by' Lizenz.
-
Über Drittsoftware
@@ -191,10 +187,6 @@
GNU Wget - Software für den Datei-Download über HTTP
-
-
- Silk Icons - Über 700 Symbole im PNG Format
-
Hinweise: Diese Demo (Test) Version von LameXP läuft am %1 ab. Noch %2 Tage übrig.
@@ -227,6 +219,14 @@
avs2wav - Avisynth zu Wave Audio Konverter
+
+
+
+
+
+
+
+
AudioFileModel
@@ -1730,6 +1730,10 @@
Update-Überprüfung wird übersprungen, bitte warten...
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts
index 6584986c..0a324fcc 100644
--- a/etc/Translation/LameXP_ES.ts
+++ b/etc/Translation/LameXP_ES.ts
@@ -87,10 +87,6 @@
Tecnología de codificación de audio sin pérdidas, abierta y libre de patentes.
-
-
- Por Mark James, distribuido bajo Licencia Creative Commons.
-
Acerca del Software de terceros
@@ -167,10 +163,6 @@
GnuPG - Guardián de privacidad GNU
-
-
- Silk Icons - Más de 700 iconos en formato PNG
-
Codificador MPEG-4 Nero AAC
@@ -227,6 +219,14 @@
avs2wav - Conversor de Avisynth a WAV
+
+
+
+
+
+
+
+
AudioFileModel
@@ -1729,6 +1729,10 @@
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts
index 5ed87c5a..b0392e5f 100644
--- a/etc/Translation/LameXP_FR.ts
+++ b/etc/Translation/LameXP_FR.ts
@@ -88,10 +88,6 @@
Technologie de compression audio sans perte ouverte et libre de brevets.
-
-
- Par Mark James, publié sous licence Creative Commons.
-
A propos des logiciels tiers
@@ -171,10 +167,6 @@
GnuPG - The GNU Privacy Guard
-
-
- Silk Icons - Plus de 700 icônes au format PNG
-
Encodeur de référence MPEG-4 Nero AAC
@@ -231,6 +223,14 @@
+
+
+
+
+
+
+
+
AudioFileModel
@@ -1739,6 +1739,10 @@ Ouvrir le dossier récursivement...
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts
index 54055631..aad2d054 100644
--- a/etc/Translation/LameXP_IT.ts
+++ b/etc/Translation/LameXP_IT.ts
@@ -87,10 +87,6 @@
Tecnologia di compressione audio libera e non vincolata da brevetti.
-
-
- Di Mark James, rilasciato sotto Licenza 'by' Creative Commons.
-
Riguardo Software Terze Parti
@@ -167,10 +163,6 @@
-
-
-
-
@@ -227,6 +219,14 @@
+
+
+
+
+
+
+
+
AudioFileModel
@@ -1730,6 +1730,10 @@
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts
index 8c43d15a..e850cd51 100644
--- a/etc/Translation/LameXP_KR.ts
+++ b/etc/Translation/LameXP_KR.ts
@@ -175,14 +175,6 @@
GNU Wget - HTTP를 사용하여 파일을 검색하기 위한 소프트웨어
-
-
- Silk Icons - PNG 형식의 700 이상의 아이콘
-
-
-
- By Mark James, 크리에이티브 커먼즈 'by' 라이센스 하에 출시됨.
-
LameXP 전체는 LoRd_MuldeR에게 저작권이 있습니다. LameXP에 사용된 타사 소프트웨어는 각 소프트웨어의 저작자에게 저작권이 있습니다.
@@ -227,6 +219,14 @@
+
+
+
+
+
+
+
+
AudioFileModel
@@ -1729,6 +1729,10 @@
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts
index 68535b5d..81209870 100644
--- a/etc/Translation/LameXP_PL.ts
+++ b/etc/Translation/LameXP_PL.ts
@@ -66,7 +66,7 @@
-
+
Zamknij
@@ -108,10 +108,10 @@
-
+
Wydane na warunkach licencji GNU Lesser General Public License.
@@ -252,46 +252,46 @@
+
+
+
+
+
+
+
+
+
+
MediaInfo - Narzędzie do analizy plików multimedialnych
-
+
SoX - Sound eXchange
-
+
GnuPG - GNU Privacy Guard
-
+
GNU Wget - Oprogramowanie służące do pobierania plików za pomocą protokołu HTTP
-
-
- Silk Icons - Ponad 700 ikon w formacie PNG
-
-
-
-
- Autorem pakietu jest Mark James, wydano na licencji Creative Commons.
-
-
-
+
Do programu LameXP jako całości, prawa autorskie posiada LoRd_MuldeR. Prawa autorskie oprogramowania firm trzecich należą do autorów poszczególnych programów.
-
+
Informacje o programach firm trzecich
-
+
n/d
@@ -729,7 +729,7 @@
-
+
Pliki źródłowe
@@ -750,13 +750,13 @@
-
+
Pokaż szczegóły
-
+
Folder docelowy
@@ -792,7 +792,7 @@
-
+
Tagi
@@ -833,7 +833,7 @@
-
+
Kompresja
@@ -873,1373 +873,1378 @@
Aften A/52
-
+
+
+
+
+
+
Tryby przepływności bitów
-
+
Jakość - Zmienny bitrate (VBR)
-
+
Średni bitrate (ABR)
-
+
Stały bitrate (CBR)
-
+
Jakość/Bitrate
-
+
Minimalny
-
+
Maksymalny
-
-
+
+
Opcje zaawansowane
-
+
Zarządzanie bitami (LAME i OggEnc2)
-
+
Włącz zarządzanie bitami
-
+
Minimalny (kbps):
-
+
Maksymalny (kbps):
-
+
Jakość algorytmu LAME
-
+
Szybsza kompresja
-
+
Lepsza jakość
-
+
Ostrzeżnie: Jakość dźwięku będzie bardzo niska. Prosze <b>nie<b> kierować skarg do autora programu!
-
+
Ostrzeżenie: Kompresja może trwać bardzo długo. Prosze <b>nie<b> kierować skarg do autora programu!
-
+
Tryb kanałów/Częstotliwość próbkowania
-
-
+
+
Automatycznie (Domyślnie)
-
+
Joint Stereo
-
+
Wymuś Joint Stereo
-
+
Simple
-
+
Dual Mono
-
+
Mono
-
+
Tryb kanałów MP3:
-
+
Próbkowanie (Hz):
-
+
16.000
-
+
22.050
-
+
24.000
-
+
32.000
-
+
44.100
-
+
48.000
-
+
Wymuś miksowanie plików wielokanałowych do stereo
-
+
Opcje kodera AAC
-
+
Włącz kompresję dwuprzebiegową (w trybie ABR)
-
+
Wybierz profil AAC:
-
+
Automatyczny (Zalecane)
-
+
Wymuś LC-AAC
-
+
Wymuś HE-AAC (AAC + SBR)
-
+
Wymuś HE-AAC v2 (AAC + SBR + PS)
-
+
Normalizacja dźwięku
-
+
Włącz filtr normalizacji
-
+
Najwyższa głośność (dB):
-
+
-
+
-
+
-
+
Tryb korekcji:
-
+
Zmiana tonów
-
+
Zmień tony wysokie (dB):
-
+
Zmień tony niskie (dB):
-
+
Własne parametry kodowania
-
-
-
-
-
+
+
+
+
+
Tutaj możesz wpisać własne parametry kodowania!
-
+
Lame MP3:
-
+
OggEnc2:
-
+
MPEG-4 AAC:
-
+
FLAC:
-
+
Ostrzeżenie: Włąśne parametry kompresji nie będą weryfikowane. Używasz je na własne ryzyko!!!
-
+
Aften A/52:
-
+
Wielowątkowość
-
+
Wybierz ilość równoległych kodowań na podstawie ilości wątków procesora (Zalecane)
-
+
Mniej
-
+
Więcej
-
+
Folder tymczasowy
-
+
Wybierz...
-
+
Zapisuj pliki tymczasowe w systemowej lokalizacji TEMP (Zalecane)
-
+
Opcje A/52
-
+
-
+
-
+
-
+
-
+
Mowa
-
+
Żadna (Domyślnie)
-
+
Automatycznie
-
+
1+1 (Ch1,Ch2)
-
+
1/0 (C)
-
+
2/0 (L,R)
-
+
3/0 (L,R,C)
-
+
2/1 (L,R,S)
-
+
3/1 (L,R,C,S)
-
+
2/2 (L,R,SL,SR)
-
+
3/2 (L,R,C,SL,SR)
-
+
Ilość kanałów:
-
+
Kompresja dynamiki (DRC):
-
+
Szybka alokacja bitów (Mniejsza dokładność)
-
+
-
+
Zmiana nazwy plików wyjściowych
-
+
Zapisz tutaj wzór wg którego zmienisz nazwy!
-
+
Zmieniaj nazwy plików
-
+
<a href="reset">Resetuj</a> <a href="#">Pokaż listę makr</a>
-
+
Wzór wyjściowy:
-
+
Przykładowa nazwa pliku:
-
+
Resetuj opcje zaawansowane
-
+
Kompresuj!
-
-
+
+
Info...
-
+
Wyjdź z programu
-
+
Plik
-
+
?
-
+
Widok
-
+
Styl
-
+
Język
-
+
Narzędzia
-
+
Konfiguracja
-
+
Zamknij
-
+
Otwórz plik(i)...
-
-
+
+
Odwiedź oficjalną stronę
-
-
-
-
+
+
+
+
Sprawdź aktualizacje
-
+
Otwórz folder...
-
+
Wyczyść wszystko
-
+
Plastique
-
+
Cleanlooks
-
+
Windows Vista ("Aero")
-
+
Windows Classic
-
+
Windows XP ("Luna")
-
-
+
+
Wyłącz przypominanie o aktualizacji
-
-
+
+
Wyłącz efekty dźwiękowe
-
+
Zainstaluj Dekoder WMA
-
+
Wyłącz powiadomienia Nero AAC
-
+
Pokaż DropBoxa
-
+
Z pliku...
-
+
Kompresuj!
-
+
Wyłącz integrację z systemem
-
+
Pytania i Odpowiedzi
-
+
Lista zmian
-
+
Przewodnik tłumacza
-
+
Pomoc i Wsparcie
-
+
Otwórz folder rekurencyjnie...
-
+
Sprawdzaj czy jest Beta
-
+
Importuj plik Cue
-
+
Wyłącz powiadomienia o powolnym starcie
-
+
-
+
Dodawanie plików, prosze czekać...
-
-
+
+
Dostęp zablokowany
-
+
%1 plik(ów) zostało odrzuconych z powodu braku dostępu do pliku!
-
+
To przeważnie oznacza, że plik jest zablokowany przez inny proces.
-
+
Pliki CDDA
-
+
%1 plik(ów) zostało odrzuconych ponieważ to nie są właściwe pliki CDDA!
-
+
LameXP nie może teraz wyekstrachować ścieżki z płyty Audio-CD.
-
+
Zaleca się użycie w tym celu %1.
-
+
Cue Sheet
-
+
%1 plik(ów) zostało odrzuconych, ponieważ to nie są pliki obrazów Cue Sheet!
-
+
Prosze użyć przewodnika Cue Sheet w LameXP w celu importowania tych plików.
-
+
Pliki odrzucone
-
+
%1 plik(ów) zostało odrzuconych, ponieważ ich format nie został rozpoznany!
-
+
To przeważnie oznacza że plik jest uszkodzony lub format pliku nie jest wspierany.
-
+
Skanowanie folderu/ów, prosze czekać...
-
+
Tutaj możesz upuścić pliki dźwiękowe!
-
+
Otwórz plik w zewnętrznym programie
-
+
Otwórz lokalizację pliku
-
+
Otwórz wybrany folder
-
+
Zapamiętaj wybrany folder
-
+
Licencja odrzucona
-
+
Odrzuciłeś licencję. W takim razie program zostanie teraz zamknięty!
-
+
Naraska!
-
+
LameXP - Termin wygasł
-
+
Ta wersja demo (beta) LameXP wygasła %1.
-
+
LameXP jest darmowym oprogramowaniem i pełna wersja nie wygasa.
-
-
+
+
Wyjdź z programu
-
+
-
+
Prosze sprawdzić dokument %1 w celu dalszych szcegółów i rozwiązań!
-
+
Powolny start
-
-
-
-
-
-
+
+
+
+
+
+
Zamknij
-
-
+
+
Nie pokazuj ponownie
-
+
Ważna aktualizacja
-
+
Twoja wersja LameXP jest starsza niż rok! Czas na aktualizację!
-
-
-
+
+
+
Powiadomienie aktualizacji
-
+
Ostatnie sprawdzenie aktualizacji było ponad 14 dni temu. Sprawdzić teraz aktualizacje?
-
+
Nie sprawdzałeś jeszcze aktualizacji LameXP. Sprawdzić teraz aktualizacje?
-
+
Przełóż
-
+
LameXP wykrył że Twoja wersja kodera Nero AAC jest nieaktualna!
-
+
Wersją dostępną obecnie jest %1, Twoja wersja to %2.
-
+
n/d
-
+
Możesz pobrać najnowszą wersję kodera Nero AAC ze strony Nero:
-
+
Koder AAC jest nieaktualny
-
+
Nie można odnaleźć kodera Nero AAC. Kompresja formatu AAC zostanie wyłączona.
-
+
Prosze skopiować 'neroAacEnc.exe', 'neroAacDec.exe', oraz 'neroAacTag.exe' do folderu LameXP!
-
+
Folder aplikacji LameXP znajduje się tutaj:
-
+
Możesz pobrać koder Nero AAC za darmo z oficjalnej strony Nero:
-
+
Wsparcie dla AAC wyłączone
-
-
-
+
+
+
LameXP
-
+
Powinienieś dodać przynajmniej jeden plik do listy aby zacząć działać!
-
+
Nie znaleziono
-
+
Wybrany przez Ciebie folder tymczasowy TEMP już nie istnieje:
-
+
Przywróć domyślne
-
+
Anuluj
-
+
Ostrzeżenie o małej ilości miejsca na dysku
-
+
Jest mniej niż %1 GB dostępnego miejsca w systemowym folderze TEMP.
-
+
-
+
-
+
Jest wysoce zalecane zwolnić miejsce na dysku zanim zaczniesz kompresję!
-
+
Twój folder TEMP znajduję się:
-
+
Przerwij proces kompresji
-
+
Wykonaj oczyszczanie dysku
-
-
+
+
Ignoruj
-
+
-
+
Mało miejsca na dysku
-
+
Chcesz zacząć działać z małą ilością miejsca na dysku. Mogą wystąpić problemy!
-
+
Został wybrany koder, który nie jest wspierany!
-
+
Nie można zapisać do wybranej lokalizacji.
-
+
Prosze wybrać inną lokalizację!
-
+
Zaladuj plik językowy
-
+
Pliki językowe
-
+
Czy na pewno chcesz wyłączyć przypominanie o aktualizacjach?
-
-
-
-
-
-
-
+
+
+
+
+
+
+
Tak
-
-
-
-
-
-
-
+
+
+
+
+
+
+
Nie
-
+
Przypominanie o aktualizacjach wyłączone.
-
+
Prosze pamiętać o okresowym sprawdzaniu aktualizacji!
-
+
Przypominanie o aktualizacjach ponownie włączone.
-
+
Czy na pewno chcesz wyłączyć wszystkie dźwiękowe?
-
-
+
+
Efekty dźwiękowe
-
+
Wszystkie efekty dźwiękowe zostały wyłączone.
-
+
Efekty dźwiękowe zostały ponownie włączone.
-
-
-
+
+
+
Powiadomienia Nero AAC
-
+
Czy na pewno chcesz wyłączyć wszystkie powiadomienia Nero AAC?
-
+
Wszystkie powiadomienia kodera Nero AAC zostały wyłączone.
-
+
Powiadomienia Nero AAC zostały ponownie włączone.
-
-
-
+
+
+
Powiadomienia o powolnym starcie
-
+
Czy na pewno chcesz wyłączyć powiadomienia o powolnym starcie?
-
+
Powiadomienia o powolnym starcie zostały wyłączone.
-
+
Powiadomienia o powolnym starcie zostały ponownie włączone.
-
-
+
+
Otwórz plik Cue Sheet
-
-
+
+
Plik Cue Sheet
-
-
-
+
+
+
Aktualizacje Beta
-
+
Czy na pewno chcesz aby LameXP sprawdzał aktualizacje Beta?
-
+
Od teraz LameXP będzie sprawdzał aktualizacje Beta.
-
+
Sprawdź teraz
-
+
LameXP od teraz <i>nie będzie</i> sprawdzał aktualizacji Beta.
-
-
-
+
+
+
-
+
-
+
-
+
-
-
+
+
Integracja z systemem
-
+
Czy na pewno chcesz wyłączyć integrację LameXP z systemem?
-
+
Integracja LameXP z systemem zostałą wyłączona.
-
+
Integracja LameXP z systemem została ponownie włączona.
-
-
+
+
Dodaj plik(i)
-
-
+
+
Dodaj folder
-
-
+
+
Nowy folder
-
+
Wprowadź nazwę nowego folderu:
-
+
Utworzenie folderu zakończone niepowodzeniem
-
+
Nowy folder nie mógł zostać stworzony:
-
+
Dysk tylko do odczytu lub brak praw dostępu!
-
-
-
-
+
+
+
+
Poziom jakości %1
-
-
-
+
+
+
Kompresja %1
-
-
-
+
+
+
Nieskompresowany
-
+
Najlepsza jakość (Bardzo wolno)
-
+
Wysoka jakość (Zalecane)
-
+
Średnia jakość (Domyślnie)
-
+
Niska jakość (Szybko)
-
+
Najniższa jakość (Bardzo szybko)
-
+
Nazwa pliku bez rozszerzenia
-
+
Numer ścieżki z zerem na początku
-
+
Nazwa ścieżki
-
+
Nazwa Artysty
-
+
Nazwa Albumu
-
+
Rok z (przynajmniej) czterema cyframi
-
+
Komentarz
-
+
Zabronione znaki w nazwach plików:
-
+
Zmień nazwy makr
-
+
%1 wątek/ki
-
+
Nie można zapisać do wybranej lokalizacji. Prosze wybierz inną lokalizację!
-
+
Już działa
-
+
LameXP już działa, przejdź do działającego programu!
@@ -2533,112 +2538,112 @@
ProcessThread
-
+
Rozpoczynanie...
-
+
Nie znaleziono!
-
+
Format tego pliku NIE jest obsługiwany:
-
+
Format kontenera:
-
+
Format dźwięku:
-
+
Nieobsługiwany!
-
+
Zrobione.
-
+
Przerwane!
-
+
Niepowodzenie!
-
+
Kompresowanie
-
+
-
+
Filtrowanie
-
+
Dekodowanie
-
+
Źródłowy plik dźwiękowy nie został odnaleziony:
-
+
Źródłowy plik dźwiękowy nie mógł zostać otworzony:
-
+
Lokalizacja docelowa nie istnieje lu NIE mogła zostać utworzona:
-
+
Nie można zapisać do lokalizacji docelowej:
-
+
Nieznana nazwa pliku
-
+
Nieznany Tytuł
-
+
Nieznany Artysta
-
+
Nieznany Album
-
+
Nieznany Komentarz
@@ -2689,141 +2694,141 @@
Powrót
-
+
Pokaż szczegóły wybranego zadania
-
+
Wybierz lokalizację dla plików wyjściowych
-
+
Kompresowanie plików
-
+
Twoje pliki są właśnie kompresowane, prosze być cierpliwy...
-
+
Kompresowanie plików, prosze czekać...
-
+
Wielowątkowosć włączona: Równolegle wykonywanych jest %1 kodowań!
-
+
Przerwano! Czekanie na wyłączenie procesu...
-
+
Kompresja: Prosze czekać, jak dotąd wykonano %1 z %2 plików...
-
+
Tworzenie pliku playlisty, prosze czekać...
-
+
Proces został przerwany przez użytkownika po wykonaniu %1 plików!
-
+
Proces został przedwcześnie zakończony przez użytkownika!
-
+
LameXP - Przerwano
-
+
Proces został przerwany przez użytkownika.
-
+
-
+
Błąd: %1 z %2 plików nie zostało skompresowanych. Kliknij dwukrotnie na plik aby zobaczyć szczegóły!
-
+
LameXP - Błąd
-
+
Przynajmniej jeden plik nie został skompresowany!
-
+
Kompresja wszystkich plików zakończona powodzeniem.
-
+
LameXP - Zrobione
-
+
Tworzenie playlisty zakończone niepowodzeniem
-
+
Playlista nie mogła zostać utworzona:
-
+
Ostrzeżenie: Komputer zostanie zamknięty za %1 sekund/y...
-
-
+
+
Anuluj wyłączenie komputera
-
+
-
-
+
+
-
-
+
+
-
+
diff --git a/etc/Translation/LameXP_RU.ts b/etc/Translation/LameXP_RU.ts
index 393faf49..1a44da5a 100644
--- a/etc/Translation/LameXP_RU.ts
+++ b/etc/Translation/LameXP_RU.ts
@@ -175,14 +175,6 @@
-
-
-
-
-
-
-
-
LameXP защищена авторским правом LoRd_MuldeR. Авторское право на программное обеспечение третьих сторон, используемое в LameXP, принадлежит индивидуальным авторам.
@@ -227,6 +219,14 @@
+
+
+
+
+
+
+
+
AudioFileModel
@@ -1735,6 +1735,10 @@
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts
index 90f89e33..8d491415 100644
--- a/etc/Translation/LameXP_TW.ts
+++ b/etc/Translation/LameXP_TW.ts
@@ -87,10 +87,6 @@
打開和專利自由無損音頻壓縮技術.
-
-
- By Mark James,在知識共享的許可證發布.
-
關于第三方軟件
@@ -163,10 +159,6 @@
GnuPG - GNU 隱私
-
-
- Silk Icons - 超過 700 圖標 PNG 格式
-
Nero AAC 參考 MPEG-4 編碼器
@@ -227,6 +219,14 @@
LameXP是作為一個整體版權由 LoRd_MuldeR 保護.在 LameXP 中使用的第三方軟件作著權屬于第三方.
+
+
+
+
+
+
+
+
AudioFileModel
@@ -1729,6 +1729,10 @@
跳過檢查更新的時間,請耐心等待...
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts
index 047ab66a..afbe2c5c 100644
--- a/etc/Translation/LameXP_UK.ts
+++ b/etc/Translation/LameXP_UK.ts
@@ -175,14 +175,6 @@
GNU Wget - Software for retrieving files using HTTP
-
-
- Silk Icons - Більш ніж 700 іконок в форматі PNG
-
-
-
- Створено Mark James, випущено під ліцензією Creative Commons 'by' License.
-
Всі права на LameXP належать LoRd_MuldeR. Права на стороннє ПЗ, що використовується в LameXP, належать авторам цього ПЗ.
@@ -228,6 +220,14 @@
avs2wav - аудіоконвертер у Wave аудіо, що базується на Avisynth
+
+
+
+
+
+
+
+
AudioFileModel
@@ -1730,6 +1730,10 @@
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts
index f267ec92..bb935486 100644
--- a/etc/Translation/LameXP_ZH.ts
+++ b/etc/Translation/LameXP_ZH.ts
@@ -87,10 +87,6 @@
打开和专利自由无损音频压缩技术.
-
-
- By Mark James,在知识共享的许可证发布.
-
关于第三方软件
@@ -163,10 +159,6 @@
GnuPG - GNU 隐私
-
-
- Silk Icons - 超过 700 图标 PNG 格式
-
Nero AAC 参考 MPEG-4 编码器
@@ -227,6 +219,14 @@
LameXP是作为一个整体版权由 LoRd_MuldeR 保护.在 LameXP 中使用的第三方软件作著权属于第三方.
+
+
+
+
+
+
+
+
AudioFileModel
@@ -1729,6 +1729,10 @@
跳过检查更新的时间,请耐心等待...
+
+
+
+
MetaInfo
diff --git a/gui/MainWindow.ui b/gui/MainWindow.ui
index 2c8e2bf0..584cefc4 100644
--- a/gui/MainWindow.ui
+++ b/gui/MainWindow.ui
@@ -770,7 +770,7 @@
-
-
+
-
Wave (PCM)
@@ -807,6 +807,13 @@
+ -
+
+
+ DCA Enc
+
+
+
@@ -1099,8 +1106,8 @@
0
0
- 602
- 1515
+ 604
+ 1524
diff --git a/res/Tools_Encd.qrc b/res/Tools_Encd.qrc
index bbc344c2..4c59c0a7 100644
--- a/res/Tools_Encd.qrc
+++ b/res/Tools_Encd.qrc
@@ -4,6 +4,7 @@
tools/aften.i386.exe
tools/aften.sse2.exe
tools/aften.x64.exe
+ tools/dcaenc.exe
tools/flac.exe
tools/lame.i386.exe
tools/lame.sse2.exe
diff --git a/res/localization/LameXP_DE.qm b/res/localization/LameXP_DE.qm
index 27582946..fd2c6529 100644
Binary files a/res/localization/LameXP_DE.qm and b/res/localization/LameXP_DE.qm differ
diff --git a/res/localization/LameXP_ES.qm b/res/localization/LameXP_ES.qm
index 14ec4ce5..a49b90cd 100644
Binary files a/res/localization/LameXP_ES.qm and b/res/localization/LameXP_ES.qm differ
diff --git a/res/localization/LameXP_FR.qm b/res/localization/LameXP_FR.qm
index 03e753b4..7ad42a05 100644
Binary files a/res/localization/LameXP_FR.qm and b/res/localization/LameXP_FR.qm differ
diff --git a/res/localization/LameXP_IT.qm b/res/localization/LameXP_IT.qm
index 983260cc..a8491a0a 100644
Binary files a/res/localization/LameXP_IT.qm and b/res/localization/LameXP_IT.qm differ
diff --git a/res/localization/LameXP_KR.qm b/res/localization/LameXP_KR.qm
index a2327ea2..e98c8642 100644
Binary files a/res/localization/LameXP_KR.qm and b/res/localization/LameXP_KR.qm differ
diff --git a/res/localization/LameXP_PL.qm b/res/localization/LameXP_PL.qm
index 95066207..187c3cb2 100644
Binary files a/res/localization/LameXP_PL.qm and b/res/localization/LameXP_PL.qm differ
diff --git a/res/localization/LameXP_TW.qm b/res/localization/LameXP_TW.qm
index 191a92f5..2a00b429 100644
Binary files a/res/localization/LameXP_TW.qm and b/res/localization/LameXP_TW.qm differ
diff --git a/res/localization/LameXP_UK.qm b/res/localization/LameXP_UK.qm
index 82d415f3..d0d29f3f 100644
Binary files a/res/localization/LameXP_UK.qm and b/res/localization/LameXP_UK.qm differ
diff --git a/res/localization/LameXP_ZH.qm b/res/localization/LameXP_ZH.qm
index 509e540e..af6bdb6b 100644
Binary files a/res/localization/LameXP_ZH.qm and b/res/localization/LameXP_ZH.qm differ
diff --git a/src/Config.h b/src/Config.h
index 2d238b01..12f2d8f6 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -29,8 +29,8 @@
#define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 4
#define VER_LAMEXP_TYPE Alpha
-#define VER_LAMEXP_PATCH 11
-#define VER_LAMEXP_BUILD 827
+#define VER_LAMEXP_PATCH 12
+#define VER_LAMEXP_BUILD 830
///////////////////////////////////////////////////////////////////////////////
// Tool versions (minimum expected versions!)
diff --git a/src/Dialog_About.cpp b/src/Dialog_About.cpp
index 1a3b5ee0..8e47f89a 100644
--- a/src/Dialog_About.cpp
+++ b/src/Dialog_About.cpp
@@ -430,7 +430,7 @@ void AboutDialog::showMoreAbout(void)
);
moreAboutText += QString
(
- "
| " /* ----------------------------------------- */
);
moreAboutText += makeToolText
(
@@ -475,6 +475,13 @@ void AboutDialog::showMoreAbout(void)
"http://forum.doom9.org/showthread.php?t=70882"
);
moreAboutText += makeToolText
+ (
+ tr("dcaenc"),
+ "dcaenc.exe", "????-??-??",
+ tr("Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL."),
+ "http://gitorious.org/dtsenc/dtsenc/trees/master"
+ );
+ moreAboutText += makeToolText
(
tr("MediaInfo - Media File Analysis Tool"),
"mediainfo.exe", "v?.?.??",
@@ -502,13 +509,13 @@ void AboutDialog::showMoreAbout(void)
tr("Released under the terms of the GNU Lesser General Public License."),
"http://www.gnu.org/software/wget/"
);
- moreAboutText += makeToolText
- (
- tr("Silk Icons - Over 700 icons in PNG format"),
- QString(), "v1.3",
- tr("By Mark James, released under the Creative Commons 'by' License."),
- "http://www.famfamfam.com/lab/icons/silk/"
- );
+ //moreAboutText += makeToolText
+ //(
+ // tr("Silk Icons - Over 700 icons in PNG format"),
+ // QString(), "v1.3",
+ // tr("By Mark James, released under the Creative Commons 'by' License."),
+ // "http://www.famfamfam.com/lab/icons/silk/"
+ //);
moreAboutText += QString(" | | %1
").arg
(
NOBR(tr("LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors."))
diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp
index 282a3483..64ff5897 100644
--- a/src/Dialog_MainWindow.cpp
+++ b/src/Dialog_MainWindow.cpp
@@ -203,6 +203,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
m_encoderButtonGroup->addButton(radioButtonEncoderAAC, SettingsModel::AACEncoder);
m_encoderButtonGroup->addButton(radioButtonEncoderAC3, SettingsModel::AC3Encoder);
m_encoderButtonGroup->addButton(radioButtonEncoderFLAC, SettingsModel::FLACEncoder);
+ m_encoderButtonGroup->addButton(radioButtonEncoderDCA, SettingsModel::DCAEncoder);
m_encoderButtonGroup->addButton(radioButtonEncoderPCM, SettingsModel::PCMEncoder);
m_modeButtonGroup = new QButtonGroup(this);
m_modeButtonGroup->addButton(radioButtonModeQuality, SettingsModel::VBRMode);
@@ -214,6 +215,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
radioButtonEncoderAAC->setChecked((m_settings->compressionEncoder() == SettingsModel::AACEncoder) && (m_neroEncoderAvailable || m_fhgEncoderAvailable || m_qaacEncoderAvailable));
radioButtonEncoderAC3->setChecked(m_settings->compressionEncoder() == SettingsModel::AC3Encoder);
radioButtonEncoderFLAC->setChecked(m_settings->compressionEncoder() == SettingsModel::FLACEncoder);
+ radioButtonEncoderDCA->setChecked(m_settings->compressionEncoder() == SettingsModel::DCAEncoder);
radioButtonEncoderPCM->setChecked(m_settings->compressionEncoder() == SettingsModel::PCMEncoder);
radioButtonModeQuality->setChecked(m_settings->compressionRCMode() == SettingsModel::VBRMode);
radioButtonModeAverageBitrate->setChecked(m_settings->compressionRCMode() == SettingsModel::ABRMode);
@@ -1217,6 +1219,7 @@ void MainWindow::encodeButtonClicked(void)
case SettingsModel::AACEncoder:
case SettingsModel::AC3Encoder:
case SettingsModel::FLACEncoder:
+ case SettingsModel::DCAEncoder:
case SettingsModel::PCMEncoder:
break;
default:
@@ -2481,6 +2484,13 @@ void MainWindow::updateEncoder(int id)
radioButtonConstBitrate->setEnabled(true);
sliderBitrate->setEnabled(true);
break;
+ case SettingsModel::DCAEncoder:
+ radioButtonModeQuality->setEnabled(false);
+ radioButtonModeAverageBitrate->setEnabled(false);
+ radioButtonConstBitrate->setEnabled(true);
+ radioButtonConstBitrate->setChecked(true);
+ sliderBitrate->setEnabled(true);
+ break;
default:
radioButtonModeQuality->setEnabled(true);
radioButtonModeAverageBitrate->setEnabled(true);
@@ -2557,6 +2567,10 @@ void MainWindow::updateRCMode(int id)
sliderBitrate->setMinimum(0);
sliderBitrate->setMaximum(8);
break;
+ case SettingsModel::DCAEncoder:
+ sliderBitrate->setMinimum(1);
+ sliderBitrate->setMaximum(192);
+ break;
case SettingsModel::PCMEncoder:
sliderBitrate->setMinimum(0);
sliderBitrate->setMaximum(2);
@@ -2638,6 +2652,9 @@ void MainWindow::updateBitrate(int value)
case SettingsModel::AC3Encoder:
labelBitrate->setText(QString("%1 kbps").arg(SettingsModel::ac3Bitrates[value]));
break;
+ case SettingsModel::DCAEncoder:
+ labelBitrate->setText(QString("%1 kbps").arg(value * 32));
+ break;
case SettingsModel::PCMEncoder:
labelBitrate->setText(tr("Uncompressed"));
break;
diff --git a/src/Dialog_Processing.cpp b/src/Dialog_Processing.cpp
index ed875d47..21ae2493 100644
--- a/src/Dialog_Processing.cpp
+++ b/src/Dialog_Processing.cpp
@@ -31,13 +31,14 @@
#include "Thread_RAMObserver.h"
#include "Thread_DiskObserver.h"
#include "Dialog_LogView.h"
-#include "Encoder_MP3.h"
-#include "Encoder_Vorbis.h"
#include "Encoder_AAC.h"
#include "Encoder_AAC_FHG.h"
#include "Encoder_AAC_QAAC.h"
#include "Encoder_AC3.h"
+#include "Encoder_DCA.h"
#include "Encoder_FLAC.h"
+#include "Encoder_MP3.h"
+#include "Encoder_Vorbis.h"
#include "Encoder_Wave.h"
#include "Filter_Downmix.h"
#include "Filter_Normalize.h"
@@ -638,10 +639,66 @@ void ProcessingDialog::startNextJob(void)
m_currentFile++;
AudioFileModel currentFile = updateMetaInfo(m_pendingJobs.takeFirst());
- AbstractEncoder *encoder = NULL;
bool nativeResampling = false;
//Create encoder instance
+ AbstractEncoder *encoder = makeEncoder(&nativeResampling);
+
+ //Create processing thread
+ ProcessThread *thread = new ProcessThread
+ (
+ currentFile,
+ (m_settings->outputToSourceDir() ? QFileInfo(currentFile.filePath()).absolutePath() : m_settings->outputDir()),
+ (m_settings->customTempPathEnabled() ? m_settings->customTempPath() : lamexp_temp_folder2()),
+ encoder,
+ m_settings->prependRelativeSourcePath() && (!m_settings->outputToSourceDir())
+ );
+
+ //Add audio filters
+ if(m_settings->forceStereoDownmix())
+ {
+ thread->addFilter(new DownmixFilter());
+ }
+ if((m_settings->samplingRate() > 0) && !nativeResampling)
+ {
+ if(SettingsModel::samplingRates[m_settings->samplingRate()] != currentFile.formatAudioSamplerate() || currentFile.formatAudioSamplerate() == 0)
+ {
+ thread->addFilter(new ResampleFilter(SettingsModel::samplingRates[m_settings->samplingRate()]));
+ }
+ }
+ if((m_settings->toneAdjustBass() != 0) || (m_settings->toneAdjustTreble() != 0))
+ {
+ thread->addFilter(new ToneAdjustFilter(m_settings->toneAdjustBass(), m_settings->toneAdjustTreble()));
+ }
+ if(m_settings->normalizationFilterEnabled())
+ {
+ thread->addFilter(new NormalizeFilter(m_settings->normalizationFilterMaxVolume(), m_settings->normalizationFilterEqualizationMode()));
+ }
+ if(m_settings->renameOutputFilesEnabled() && (!m_settings->renameOutputFilesPattern().simplified().isEmpty()))
+ {
+ thread->setRenamePattern(m_settings->renameOutputFilesPattern());
+ }
+
+ m_threadList.append(thread);
+ m_allJobs.append(thread->getId());
+
+ //Connect thread signals
+ connect(thread, SIGNAL(finished()), this, SLOT(doneEncoding()), Qt::QueuedConnection);
+ connect(thread, SIGNAL(processStateInitialized(QUuid,QString,QString,int)), m_progressModel, SLOT(addJob(QUuid,QString,QString,int)), Qt::QueuedConnection);
+ connect(thread, SIGNAL(processStateChanged(QUuid,QString,int)), m_progressModel, SLOT(updateJob(QUuid,QString,int)), Qt::QueuedConnection);
+ connect(thread, SIGNAL(processStateFinished(QUuid,QString,bool)), this, SLOT(processFinished(QUuid,QString,bool)), Qt::QueuedConnection);
+ connect(thread, SIGNAL(processMessageLogged(QUuid,QString)), m_progressModel, SLOT(appendToLog(QUuid,QString)), Qt::QueuedConnection);
+
+ //Give it a go!
+ m_runningThreads++;
+ thread->start();
+}
+
+AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
+{
+ AbstractEncoder *encoder = NULL;
+ *nativeResampling = false;
+
switch(m_settings->compressionEncoder())
{
case SettingsModel::MP3Encoder:
@@ -657,7 +714,7 @@ void ProcessingDialog::startNextJob(void)
if(m_settings->samplingRate() > 0)
{
mp3Encoder->setSamplingRate(SettingsModel::samplingRates[m_settings->samplingRate()]);
- nativeResampling = true;
+ *nativeResampling = true;
}
mp3Encoder->setChannelMode(m_settings->lameChannelMode());
mp3Encoder->setCustomParams(m_settings->customParametersLAME());
@@ -676,7 +733,7 @@ void ProcessingDialog::startNextJob(void)
if(m_settings->samplingRate() > 0)
{
vorbisEncoder->setSamplingRate(SettingsModel::samplingRates[m_settings->samplingRate()]);
- nativeResampling = true;
+ *nativeResampling = true;
}
vorbisEncoder->setCustomParams(m_settings->customParametersOggEnc());
encoder = vorbisEncoder;
@@ -736,6 +793,14 @@ void ProcessingDialog::startNextJob(void)
encoder = flacEncoder;
}
break;
+ case SettingsModel::DCAEncoder:
+ {
+ DCAEncoder *dcaEncoder = new DCAEncoder();
+ dcaEncoder->setBitrate(m_settings->compressionBitrate());
+ dcaEncoder->setRCMode(m_settings->compressionRCMode());
+ encoder = dcaEncoder;
+ }
+ break;
case SettingsModel::PCMEncoder:
{
WaveEncoder *waveEncoder = new WaveEncoder();
@@ -748,54 +813,7 @@ void ProcessingDialog::startNextJob(void)
throw "Unsupported encoder!";
}
- //Create processing thread
- ProcessThread *thread = new ProcessThread
- (
- currentFile,
- (m_settings->outputToSourceDir() ? QFileInfo(currentFile.filePath()).absolutePath() : m_settings->outputDir()),
- (m_settings->customTempPathEnabled() ? m_settings->customTempPath() : lamexp_temp_folder2()),
- encoder,
- m_settings->prependRelativeSourcePath() && (!m_settings->outputToSourceDir())
- );
-
- //Add audio filters
- if(m_settings->forceStereoDownmix())
- {
- thread->addFilter(new DownmixFilter());
- }
- if((m_settings->samplingRate() > 0) && !nativeResampling)
- {
- if(SettingsModel::samplingRates[m_settings->samplingRate()] != currentFile.formatAudioSamplerate() || currentFile.formatAudioSamplerate() == 0)
- {
- thread->addFilter(new ResampleFilter(SettingsModel::samplingRates[m_settings->samplingRate()]));
- }
- }
- if((m_settings->toneAdjustBass() != 0) || (m_settings->toneAdjustTreble() != 0))
- {
- thread->addFilter(new ToneAdjustFilter(m_settings->toneAdjustBass(), m_settings->toneAdjustTreble()));
- }
- if(m_settings->normalizationFilterEnabled())
- {
- thread->addFilter(new NormalizeFilter(m_settings->normalizationFilterMaxVolume(), m_settings->normalizationFilterEqualizationMode()));
- }
- if(m_settings->renameOutputFilesEnabled() && (!m_settings->renameOutputFilesPattern().simplified().isEmpty()))
- {
- thread->setRenamePattern(m_settings->renameOutputFilesPattern());
- }
-
- m_threadList.append(thread);
- m_allJobs.append(thread->getId());
-
- //Connect thread signals
- connect(thread, SIGNAL(finished()), this, SLOT(doneEncoding()), Qt::QueuedConnection);
- connect(thread, SIGNAL(processStateInitialized(QUuid,QString,QString,int)), m_progressModel, SLOT(addJob(QUuid,QString,QString,int)), Qt::QueuedConnection);
- connect(thread, SIGNAL(processStateChanged(QUuid,QString,int)), m_progressModel, SLOT(updateJob(QUuid,QString,int)), Qt::QueuedConnection);
- connect(thread, SIGNAL(processStateFinished(QUuid,QString,bool)), this, SLOT(processFinished(QUuid,QString,bool)), Qt::QueuedConnection);
- connect(thread, SIGNAL(processMessageLogged(QUuid,QString)), m_progressModel, SLOT(appendToLog(QUuid,QString)), Qt::QueuedConnection);
-
- //Give it a go!
- m_runningThreads++;
- thread->start();
+ return encoder;
}
void ProcessingDialog::writePlayList(void)
diff --git a/src/Dialog_Processing.h b/src/Dialog_Processing.h
index 2deb92e3..21e51566 100644
--- a/src/Dialog_Processing.h
+++ b/src/Dialog_Processing.h
@@ -36,6 +36,7 @@ class SettingsModel;
class CPUObserverThread;
class RAMObserverThread;
class DiskObserverThread;
+class AbstractEncoder;
enum shutdownFlag_t
{
@@ -79,6 +80,7 @@ protected:
private:
void setCloseButtonEnabled(bool enabled);
void startNextJob(void);
+ AbstractEncoder *makeEncoder(bool *nativeResampling);
AudioFileModel updateMetaInfo(const AudioFileModel &audioFile);
void writePlayList(void);
bool shutdownComputer(void);
diff --git a/src/Encoder_DCA.cpp b/src/Encoder_DCA.cpp
new file mode 100644
index 00000000..91bfd1cc
--- /dev/null
+++ b/src/Encoder_DCA.cpp
@@ -0,0 +1,152 @@
+///////////////////////////////////////////////////////////////////////////////
+// LameXP - Audio Encoder Front-End
+// Copyright (C) 2004-2011 LoRd_MuldeR
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// http://www.gnu.org/licenses/gpl-2.0.txt
+///////////////////////////////////////////////////////////////////////////////
+
+#include "Encoder_DCA.h"
+
+#include "Global.h"
+#include "Model_Settings.h"
+
+#include
+#include
+#include
+
+DCAEncoder::DCAEncoder(void)
+:
+ m_binary(lamexp_lookup_tool("dcaenc.exe"))
+{
+ if(m_binary.isEmpty())
+ {
+ throw "Error initializing DCA encoder. Tool 'dcaenc.exe' is not registred!";
+ }
+}
+
+DCAEncoder::~DCAEncoder(void)
+{
+}
+
+bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel &metaInfo, const QString &outputFile, volatile bool *abortFlag)
+{
+ QProcess process;
+ QStringList args;
+
+ int bitrate = qBound(32, m_configBitrate * 32, 6144);
+
+ args << QDir::toNativeSeparators(sourceFile);
+ args << QDir::toNativeSeparators(outputFile);
+ args << QString::number(bitrate);
+
+ if(!startProcess(process, m_binary, args))
+ {
+ return false;
+ }
+
+ bool bTimeout = false;
+ bool bAborted = false;
+ int prevProgress = -1;
+
+ QRegExp regExp("\\[(\\d+)\\.(\\d+)%\\]");
+
+ while(process.state() != QProcess::NotRunning)
+ {
+ if(*abortFlag)
+ {
+ process.kill();
+ bAborted = true;
+ emit messageLogged("\nABORTED BY USER !!!");
+ break;
+ }
+ process.waitForReadyRead(m_processTimeoutInterval);
+ if(!process.bytesAvailable() && process.state() == QProcess::Running)
+ {
+ process.kill();
+ qWarning("DCAENC process timed out <-- killing!");
+ emit messageLogged("\nPROCESS TIMEOUT !!!");
+ bTimeout = true;
+ break;
+ }
+ while(process.bytesAvailable() > 0)
+ {
+ QByteArray line = process.readLine();
+ QString text = QString::fromUtf8(line.constData()).simplified();
+ if(regExp.lastIndexIn(text) >= 0)
+ {
+ bool ok = false;
+ int progress = regExp.cap(1).toInt(&ok);
+ if(ok && (progress > prevProgress))
+ {
+ emit statusUpdated(progress);
+ prevProgress = qMin(progress + 2, 99);
+ }
+ }
+ else if(!text.isEmpty())
+ {
+ emit messageLogged(text);
+ }
+ }
+ }
+
+ process.waitForFinished();
+ if(process.state() != QProcess::NotRunning)
+ {
+ process.kill();
+ process.waitForFinished(-1);
+ }
+
+ emit statusUpdated(100);
+ emit messageLogged(QString().sprintf("\nExited with code: 0x%04X", process.exitCode()));
+
+ if(bTimeout || bAborted || process.exitCode() != EXIT_SUCCESS)
+ {
+ return false;
+ }
+
+ return true;
+}
+
+QString DCAEncoder::extension(void)
+{
+ return "dts";
+}
+
+bool DCAEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
+{
+ if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ {
+ if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+const unsigned int *DCAEncoder::supportedSamplerates(void)
+{
+ static const unsigned int supportedRates[] = {48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, NULL};
+ return supportedRates;
+}
+
+const unsigned int *DCAEncoder::supportedBitdepths(void)
+{
+ static const unsigned int supportedBPS[] = {16, 32, NULL};
+ return supportedBPS;
+}
diff --git a/src/Encoder_DCA.h b/src/Encoder_DCA.h
new file mode 100644
index 00000000..a941e21a
--- /dev/null
+++ b/src/Encoder_DCA.h
@@ -0,0 +1,45 @@
+///////////////////////////////////////////////////////////////////////////////
+// LameXP - Audio Encoder Front-End
+// Copyright (C) 2004-2011 LoRd_MuldeR
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// http://www.gnu.org/licenses/gpl-2.0.txt
+///////////////////////////////////////////////////////////////////////////////
+
+#pragma once
+
+#include "Encoder_Abstract.h"
+
+#include
+
+class DCAEncoder : public AbstractEncoder
+{
+ Q_OBJECT
+
+public:
+ DCAEncoder(void);
+ ~DCAEncoder(void);
+
+ virtual bool encode(const QString &sourceFile, const AudioFileModel &metaInfo, const QString &outputFile, volatile bool *abortFlag);
+ virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
+ virtual QString extension(void);
+ virtual const unsigned int *supportedBitdepths(void);
+ virtual const unsigned int *supportedSamplerates(void);
+
+private:
+ const QString m_binary;
+ int clipBitrate(int bitrate);
+};
diff --git a/src/Model_Settings.h b/src/Model_Settings.h
index 19a0fd24..2bc93d48 100644
--- a/src/Model_Settings.h
+++ b/src/Model_Settings.h
@@ -62,7 +62,8 @@ public:
AACEncoder = 2,
AC3Encoder = 3,
FLACEncoder = 4,
- PCMEncoder = 5
+ DCAEncoder = 5,
+ PCMEncoder = 6
};
enum RCMode
{
diff --git a/src/Thread_Process.cpp b/src/Thread_Process.cpp
index dcc7166f..b7842246 100644
--- a/src/Thread_Process.cpp
+++ b/src/Thread_Process.cpp
@@ -420,7 +420,7 @@ void ProcessThread::insertDownsampleFilter(void)
for(int i = 0; supportedRates[i]; i++)
{
currentDiff = DIFF(inputRate, supportedRates[i]);
- if(currentDiff < minimumDiff)
+ if((currentDiff < minimumDiff) || ((currentDiff == minimumDiff) && (bestRate < supportedRates[i])))
{
bestRate = supportedRates[i];
minimumDiff = currentDiff;
@@ -446,7 +446,7 @@ void ProcessThread::insertDownsampleFilter(void)
for(int i = 0; supportedBPS[i]; i++)
{
currentDiff = DIFF(inputBPS, supportedBPS[i]);
- if(currentDiff < minimumDiff)
+ if((currentDiff < minimumDiff) || ((currentDiff == minimumDiff) && (bestBPS < supportedBPS[i])))
{
bestBPS = supportedBPS[i];
minimumDiff = currentDiff;
diff --git a/src/Tools.h b/src/Tools.h
index be872b22..080e621e 100644
--- a/src/Tools.h
+++ b/src/Tools.h
@@ -56,6 +56,7 @@ g_lamexp_tools[] =
{"29da0d3e810bc3e8d2cddb3db452325eefca0d0c1fff1379fa17806ad447752be1b88e2f", CPU_TYPE_X64_ALL, "aften.x64.exe", 8},
{"1cca303fabd889a18fc01c32a7fd861194cfcac60ba63740ea2d7c55d049dbf8f59259fa", CPU_TYPE_ALL_ALL, "alac.exe", 20},
{"6d22d4bbd7ce2162e38f70ac9187bc84eb28233b36ee6c0492d0a6195318782d7f05c444", CPU_TYPE_ALL_ALL, "avs2wav.exe", 13},
+ {"d94bea403cbd24a890d91f55a4e4fed47898b21b62de3ba1202da55dc0917187304171f6", CPU_TYPE_ALL_ALL, "dcaenc.exe", 20111222},
{"e53a787d4a0319453f4fe48c3145f190fcce7ac4802e521db908771437f6250746116e6c", CPU_TYPE_ALL_ALL, "elevator.exe", UINT_MAX},
{"9ae98a3fc779f69ee876a3b477fbc35a709ba5066823b2eb62eeb015057c38807e4be51f", CPU_TYPE_ALL_ALL, "faad.exe", 27},
{"446054f9a7f705f1aadc9053ca7b8a86a775499ef159978954ebdea92de056c34f8841f7", CPU_TYPE_ALL_ALL, "flac.exe", 121},