diff --git a/LameXP_VS2013.vcxproj b/LameXP_VS2013.vcxproj
index dc7825be..485da211 100644
--- a/LameXP_VS2013.vcxproj
+++ b/LameXP_VS2013.vcxproj
@@ -317,6 +317,7 @@ del "$(TargetDir)imageformats\q???d4.dll"
+
@@ -381,6 +382,7 @@ del "$(TargetDir)imageformats\q???d4.dll"
+
@@ -571,6 +573,17 @@ del "$(TargetDir)imageformats\q???d4.dll"
$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)
$(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)
+
+ "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
+ "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
+ "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
+ MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"
+ MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"
+ MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp"
+ $(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)
+ $(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)
+ $(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs)
+
"$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)"
diff --git a/LameXP_VS2013.vcxproj.filters b/LameXP_VS2013.vcxproj.filters
index 61cc9e9d..1d09f0c2 100644
--- a/LameXP_VS2013.vcxproj.filters
+++ b/LameXP_VS2013.vcxproj.filters
@@ -424,6 +424,12 @@
Generated Files\QRC
+
+ Source Files\Encoders
+
+
+ Generated Files\MOC
+
@@ -558,6 +564,9 @@
Header Files\Misc\3rd Party
+
+ Header Files\Encoders
+
diff --git a/doc/Changelog.html b/doc/Changelog.html
index c89f1aea..c185e7a3 100644
--- a/doc/Changelog.html
+++ b/doc/Changelog.html
@@ -21,10 +21,12 @@ a:visited { color: #0000EE; }
Upgraded build environment to Microsoft Visual Studio 2013 RTM
Complete overhaul of the file analyzer, resulting in up to 2.5x faster file import speed
Reworked the application initialization code, resulting in notably faster startup speed
+Added encoding support for Monkey's Audio format, including APEv2 tagging support
Improved file analyzer to retain the original ordering of files imported from a playlist
Improved internal encoder API, so each encoder can define its own configuration options
Improved splash screen and working banner, using "sheet of glass" effect on supported OS
Improved dropbox widget, including proper multi-monitor support
+Updated Monkey's Audio binary to v4.12 (2013-06-26)
Updated mpg123 decoder to v1.16.0 (2013-10-06), compiled with GCC 4.8.1
Updated GNU Wget binary to v1.14.0 (2012-08-05), compiled with GCC 4.8.1
Updated GnuPG to v1.4.15 (2013-10-05), compiled with GCC 4.8.1
diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts
index 15e89bb5..bb0f5750 100644
--- a/etc/Translation/Blank.ts
+++ b/etc/Translation/Blank.ts
@@ -861,7 +861,7 @@
-
+
@@ -882,13 +882,13 @@
-
+
-
+
@@ -939,7 +939,7 @@
-
+
@@ -960,7 +960,7 @@
-
+
@@ -981,7 +981,7 @@
-
+
@@ -991,1613 +991,1618 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts
index 0fa3610e..e68be8ae 100644
--- a/etc/Translation/LameXP_DE.ts
+++ b/etc/Translation/LameXP_DE.ts
@@ -2022,6 +2022,10 @@
Abgelegte Dateien werden geladen, bitte warten...
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_EN.ts b/etc/Translation/LameXP_EN.ts
index de0f54ca..efee8a70 100644
--- a/etc/Translation/LameXP_EN.ts
+++ b/etc/Translation/LameXP_EN.ts
@@ -31,7 +31,7 @@
MainWindow
-
+
%n file have been rejected, because read access was not granted!
@@ -39,7 +39,7 @@
-
+
%n file have been rejected, because they are dummy CDDA files!
@@ -47,7 +47,7 @@
-
+
%n file have been rejected, because they appear to be Cue Sheet images!
@@ -55,7 +55,7 @@
-
+
%n file have been rejected, because the file format could not be recognized!
@@ -63,7 +63,7 @@
-
+
%n Instance
diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts
index f9fc1f01..c78634c4 100644
--- a/etc/Translation/LameXP_ES.ts
+++ b/etc/Translation/LameXP_ES.ts
@@ -2021,6 +2021,10 @@
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts
index 6e234817..6d3ddc06 100644
--- a/etc/Translation/LameXP_FR.ts
+++ b/etc/Translation/LameXP_FR.ts
@@ -2030,6 +2030,10 @@ Ouvrir le dossier récursivement...
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts
index a1963986..144b42e4 100644
--- a/etc/Translation/LameXP_IT.ts
+++ b/etc/Translation/LameXP_IT.ts
@@ -2022,6 +2022,10 @@
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts
index e3c93ec6..4b37f179 100644
--- a/etc/Translation/LameXP_KR.ts
+++ b/etc/Translation/LameXP_KR.ts
@@ -2014,6 +2014,10 @@
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts
index 1dfb3a1f..da1db550 100644
--- a/etc/Translation/LameXP_PL.ts
+++ b/etc/Translation/LameXP_PL.ts
@@ -867,7 +867,7 @@
-
+
Pliki źródłowe
@@ -888,13 +888,13 @@
-
+
Pokaż szczegóły
-
+
Folder docelowy
@@ -930,7 +930,7 @@
-
+
Tagi
@@ -951,7 +951,7 @@
-
+
Resetuj
@@ -972,7 +972,7 @@
-
+
Kompresja
@@ -982,239 +982,239 @@
Koder/Format
-
+
FLAC
-
+
Tryby przepływności bitów
-
+
Jakość - Zmienny bitrate (VBR)
-
+
Średni bitrate (ABR)
-
+
Stały bitrate (CBR)
-
+
Jakość/Przepływność bitów
-
+
Minimalna
-
+
Maksymalna
-
-
+
+
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):
-
+
Wg poziomu szczytowego
-
+
Wg poziomu RMS
-
+
Żaden
@@ -1234,846 +1234,851 @@
Pokaż ulubione
-
+
MP3
-
+
Ogg/Vorbis
-
+
AAC/MP4
-
+
PCM/Wave
-
+
A/52
-
+
DCA
-
+
Opus
-
+
+
+
+
+
+
Pokaż pomoc
-
+
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:
-
+
OpusEnc:
-
+
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
-
+
-
+
-
+
-
+
-
+
Speech
-
+
Ż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>
-
+
Format wyjściowy:
-
+
Przykładowa nazwa pliku:
-
+
Opcje kodera Opus
Opcje kodera Opus
-
+
Złożoność kompresji:
-
+
Rozmiar ramki:
-
+
Wyłącz zmianę częstotliwości dźwięku dekodera Opus (np. zawsze na wyjściu 48.000 Hz)
-
+
Tryb nadpisywania
-
+
Nadpisz istniejący plik
-
+
Pomiń plik
-
+
Zachowaj obydwa pliki (Domyślnie)
-
+
Jeśli plik o takiej samej nazwie już istnieje to:
-
+
Resetuj opcje zaawansowane
-
+
Kompresuj!
-
-
+
+
Info...
-
+
Wyjdź z programu
-
+
Plik
-
+
?
-
+
Widok
-
+
Styl
-
+
Język
-
+
Narzędzia
-
+
Konfiguracja
-
+
Zamknij
-
+
Otwórz plik(i)...
-
+
Oficjalna strona programu LameXP
-
+
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
-
+
Hibernuj zamiast zamykać
-
+
Otwartoźródłowe projekty MuldeR'a
-
+
Dodawanie plików, prosze czekać...
-
-
+
+
Dostęp zablokowany
-
+
To przeważnie oznacza, że plik jest zablokowany przez inny proces.
-
+
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
-
+
Prosze użyć przewodnika Cue Sheet w LameXP w celu importowania tych plików.
-
+
Pliki odrzucone
-
+
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 próbna LameXP wygasła %1.
-
+
LameXP jest darmowym oprogramowaniem i pełna wersja nie wygasa.
-
-
+
+
Wyjdź z programu
-
+
Najwyraźniej twoje oprogramowanie antywirusowe spowalnia uruchamianie się LameXP.
-
+
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.
-
+
b/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.
-
+
WERSJA PRÓBNA
-
+
(Podpowiedź: Zignoruj nazwę pobranego pliku ZIP, w zamian sprawdż załączony w archiwum plik "changelog.txt"!)
-
+
Jest wysoce zalecane zwolnić miejsce na dysku zanim zaczniesz kompresję!
-
+
Twój folder TEMP znajduję się:
-
+
Przerwij proces kompresji
-
+
Wykonaj oczyszczanie dysku
-
-
+
+
Ignoruj
-
+
%n plik został odrzucony, ponieważ nie dano praw odczytu!
@@ -2082,7 +2087,7 @@
-
+
%n plik został odrzucony, ponieważ jest to plik CDDA!
@@ -2091,7 +2096,7 @@
-
+
%n plik został odrzucony, ponieważ jest to plik Cue!
@@ -2100,7 +2105,7 @@
-
+
%n plik został odrzucony, ponieważ jego format nie został rozpoznany!
@@ -2109,473 +2114,473 @@
-
+
Ładowanie zestawu folderów, prosze czekać...
-
+
Odśwież foldery
-
+
Idź do głównego folderu
-
+
Eksportuj Tagi do pliku CVS
-
+
Importuj Tagi do pliku CVS
-
+
Pomijanie sprawdzania aktualizacji, prosze czekać...
-
+
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.
-
-
+
+
Hibernuj komputer
-
+
Czy na pewno chcesz aby komputer był hibernowany zamiast zamykany?
-
+
Od teraz LameXP będzie hibernował komputer zamiast zamykać.
-
+
LameXP od teraz <i>nie</i> będzie hibernował komputera tylko zamykał.
-
-
-
+
+
+
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
-
+
Ładowanie upuszczonych plików lub folderów, prosze czekać...
-
-
+
+
Zapisz plik CSV
-
-
-
-
+
+
+
+
Plik CSV
-
-
-
-
+
+
+
+
Eksportowanie CSV
-
+
Nie ma żadnych tagów, które można eksportować!
-
+
Nie można otworzyć pliku CSV aby go zapisać!
-
+
Nie można zapisać do pliku CSV!
-
+
Pliki CSV utworzone pomyślnie!
-
-
+
+
Otwórz plik CSV
-
+
Nie można otworzyć pliku CSV aby go wczytać!
-
-
-
-
-
+
+
+
+
+
Importowanie CSV
-
+
Próba odczytania pliku CSV zakończona niepowodzeniem!
-
+
Plik CSV nie zawiera żadnych znanych pól!
-
+
Plik CSV nie jest kompletny. Nie wszystkie pliki zostały zaktualizowane!
-
+
Pliki CSV zaimportowano pomyślnie!
-
-
+
+
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ść (Powoli)
-
+
Akceptowalna jakość (Szybko)
-
+
Wysoka jakość (Zalecane)
-
+
Obecny koder: %1
-
+
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
-
+
%n wątek
@@ -2584,37 +2589,37 @@
-
+
Nie można zapisać do wybranej lokalizacji. Prosze wybierz inną lokalizację!
-
+
Tryb nadpisywania
-
+
Ostrzeżenie: W tym trybie istniejące pliki będą nadpisywane bez możliwości ich odzyskania!
-
+
Kontynuuj
-
+
Cofnij
-
+
Już działa
-
+
LameXP już działa, przejdź do działającego procesu!
diff --git a/etc/Translation/LameXP_RU.ts b/etc/Translation/LameXP_RU.ts
index 2d4cc0f0..015575ba 100644
--- a/etc/Translation/LameXP_RU.ts
+++ b/etc/Translation/LameXP_RU.ts
@@ -2035,6 +2035,10 @@
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_SV.ts b/etc/Translation/LameXP_SV.ts
index 4cc28694..d791f655 100644
--- a/etc/Translation/LameXP_SV.ts
+++ b/etc/Translation/LameXP_SV.ts
@@ -865,7 +865,7 @@
-
+
Källfiler
@@ -886,13 +886,13 @@
-
+
Visa detaljer
-
+
Målmapp
@@ -943,7 +943,7 @@
-
+
Metadata
@@ -964,7 +964,7 @@
-
+
Återställ
@@ -985,7 +985,7 @@
-
+
Komprimering
@@ -995,791 +995,796 @@
Kodare / Format
-
+
MP3
-
+
Ogg/Vorbis
-
+
AAC/MP4
-
+
PCM/Wave
-
+
A/52
-
+
DCA
-
+
FLAC
-
+
Opus
-
+
+
+
+
+
+
Bithastighet
-
+
Kvallitetsbaserad bithastighet (VBR)
-
+
Genomsnittlig bithastighet (ABR)
-
+
Konstant bithastighet
-
+
Kvallitet / Bithastighet
-
+
Minimum
-
+
Maximum
-
+
Visa hjälp
-
-
+
+
Avancerat
-
+
Bithastighetshantering (LAME och OggEnc2)
-
+
Aktivera bithastighetshantering
-
+
Minimum (kbps):
-
+
Maximum (kbps):
-
+
Lame algoritm-kvallitet
-
+
Snabbare bearbetning
-
+
Bättre kvallitet
-
+
Varning! Ljudkvalliteten kommer att bli mycket dålig. Klagomål angående ljudkvallitet <u>undanbedes</u>!
-
+
Varning! Bearbetningen kommer att gå väldigt långsamt. Klagomål angående bearbetningshastigheten <u>undanbedes</u>!
-
+
Kanalläge / Samplingsfrekvens
-
-
+
+
Automatiskt (Standard)
-
+
Joint Stereo
-
+
Framtvingad Joint Stereo
-
+
Enkel
-
+
Dual Mono
-
+
Mono
-
+
MP3-kanalläge:
-
+
Samplingsfrekvens (Hz):
-
+
16.000
-
+
22.050
-
+
24.000
-
+
32.000
-
+
44.100
-
+
48.000
-
+
Framtvinga stereo-nedmixning av surround-källor (multikanal)
-
+
AAC-alternativ
-
+
Aktivera bearbetning i 2-pass (ABR-läge)
-
+
AAC-profil:
-
+
Automatiskt (rekommenderas)
-
+
Framtvinga LC-AAC
-
+
Framtvinga HE-AAC (AAC + SBR)
-
+
Framtvinga HE-AAC v2 (AAC + SBR + PS)
-
+
Volymnormalisering
-
+
Aktivera volymnormalisering
-
+
Toppvolym (dB):
-
+
Ingen
-
+
Toppnivå
-
+
RMS-nivå
-
+
Utjämningsläge:
-
+
Tonjustering
-
+
Diskant (dB):
-
+
Bas (dB):
-
+
Anpassade kodningsparametrar
-
-
-
-
-
-
+
+
+
+
+
+
Du kan ange anpassade parametrar här!
-
+
Lame MP3:
-
+
OggEnc2:
-
+
MPEG-4 AAC:
-
+
FLAC:
-
+
Varning! Anpassade parametrar kommer inte att kontrolleras. Använd dem på eget ansvar!
-
+
Aften A/52:
-
+
OpusEnc:
-
+
Flertrådskörning
-
+
Välj antal parallella instanser baserat på antal processorkärnor (rekommenderas)
-
+
Färre instanser
-
+
Fler instanser
-
+
Temporär destination
-
+
Bläddra...
-
+
Lagra temporära filer i systemets standardmapp (rekommenderas)
-
+
Aften A/52-alternativ
-
+
Film lätt
-
+
Film standard
-
+
Musik lätt
-
+
Musik standard
-
+
Tal
-
+
Ingen (standard)
-
+
Automatiskt
-
+
1+1 (Ch1,Ch2)
-
+
1/0 (C)
-
+
2/0 (V,H)
-
+
3/0 (V,H,C)
-
+
2/1 (V,H,S)
-
+
3/1 (V,H,C,S)
-
+
2/2 (V,H,SV,SH)
-
+
3/2 (V,H,C,SV,SH)
-
+
Ljudkodningsläge:
-
+
Dynamisk intervallkomprimering:
-
+
Snabb bitallokering (mindre exakt)
-
+
Exponentsökstorlek:
-
+
Namnändra utdatafiler
-
+
Ange namnändringsmall för utdatafiler här!
-
+
Namnändra utdatafiler
-
+
<a href="reset">Återställ</a> <a href="#">Visa lista över Macron</a>
-
+
Namnändringsmall:
-
+
Exempelnamn:
-
+
Opus-alternativ
-
+
Kodningskomplexitet:
-
+
Ramstorlek:
-
+
Inaktivera omsampling för Opus-avkodare (all utdata 48.000 Hz)
-
+
Överskrivningsläge
-
+
Skriv över befintlig fil
-
+
Hoppa över fil
-
+
Behåll båda filerna (Standard)
-
+
Om målfilen redan finns:
-
+
Återställ avancerade inställningar
-
+
Koda om nu!
-
-
+
+
Om...
-
+
Avsluta LameXP
-
+
Arkiv
-
+
?
-
+
Visa
-
+
Stil
-
+
Språk
-
+
Verktyg
-
+
Inställningar
-
+
Avsluta
-
+
Öppna fil(er)...
-
+
Officiell LameXP projektwebbsida
-
+
Besök hemsidan
-
-
-
-
+
+
+
+
Sök efter uppdateringar
-
+
Öppna mapp...
-
+
Rensa alla
-
+
Plastique
-
+
Cleanlooks
-
+
Windows Vista ("Aero")
-
+
Windows Classic
-
+
Windows XP ("Luna")
-
-
+
+
Inaktivera uppdateringsmeddelande
-
-
+
+
Inaktivera ljudeffekter
-
+
Installera WMA-avkodare
-
+
Inaktivera Nero AAC-meddelanden
-
+
Visa DropBox
-
+
Från fil...
-
+
Koda om!
-
+
Inaktivera utforskarintegration
-
+
Vanliga frågor
-
+
Ändringslogg
-
+
Översättningsguide
-
+
Hjälp && support
-
+
Öppna mapp rekursivt...
-
+
Sök efter beta-uppdateringar
-
+
Importera cue-fil
-
+
Inaktivera meddelanden om långsam uppstart
-
+
Försätt datorn i viloläge vid avslut
-
+
MuldeRs Öppen källkodsprojekt
-
+
Lägger till fil(er), vänta...
-
-
+
+
Åtkomst nekad
-
+
Det innebär oftast att filen är låst av någon annan process.
-
+
%n fil har avvisats, eftersom läsbehörighet saknas!
@@ -1787,22 +1792,22 @@
-
+
CDDA-filer
-
+
LameXP kan för närvarande inte extrahera ljudspår från en ljud-CD.
-
+
Vi rekommenderar att du använder %1 för det ändamålet.
-
+
%n fil har avvisats, eftersom det är en CDDA attrappfil (dummy)!
@@ -1810,17 +1815,17 @@
-
+
Cue-fil
-
+
Använd LameXPs cue-guide för att importera cue-filer.
-
+
%n fil har avvisats, eftersom det verkar vara en cue-avbildning!
@@ -1828,17 +1833,17 @@
-
+
Undantagna filer
-
+
Det innebär oftast att filen är skadad eller att filformatet inte stöds.
-
+
%n fil har avvisats, eftersom filformatet inte känns igen!
@@ -1846,729 +1851,729 @@
-
+
Genomsöker mapp(ar) efter fil(er), vänta...
-
+
DEMOVERSION
-
+
Du kan dra och släppa filer här!
-
+
Initierar mappdisposition, vänta...
-
+
Öppna fil i externt program
-
+
Öppna målmappen
-
+
Öppna markerad mapp
-
+
Uppdatera mappdisposition
-
+
Gå till överordnad mapp
-
+
Lägg till aktuell utdatamapp i favoriter
-
+
Exportera metadata till CSV-fil
-
+
Importera metadata från CSV-fil
-
+
Licensavtal avvisat
-
+
Du har nekat att godkänna licensavtalet. Programmet kommer nu att avslutas!
-
+
Hej då!
-
+
LameXP - Upphört
-
+
Denna demoversion av LameXP har upphört att gälla från %1.
-
+
LameXP är kostnadsfritt och release-versionerna upphör inte att gälla.
-
-
+
+
Avsluta programmet
-
+
Det verkar som ett antivirusprogram orsakar långsammare uppstart av LameXP.
-
+
Läs gärna %1 för detaljer och lösningar!
-
+
Långsam uppstart
-
-
-
-
-
+
+
+
+
+
Stäng
-
-
+
+
Visa inte igen
-
+
Viktig uppdatering
-
+
Din version av LameXP är mer än ett år gammal. Dags att uppdatera!
-
-
+
+
Ignorera
-
+
Hoppar över uppdateringskontrollen den här gången, vänta...
-
-
-
+
+
+
Uppdateringspåminnelse
-
+
Din senaste uppdateringskontroll var för mer än 14 dagar sedan. Vill du söka efter uppdateringar nu?
-
+
Du har inte genomfört uppdateringskontroll ännu. Vill du söka efter uppdateringar nu?
-
+
Skjut upp
-
+
LameXP har uptäckt att din version av Nero AAC-kodare är utdaterad!
-
+
Aktuell version är %1 (eller senare), men du har fortfarande version %2.
-
+
n/a
-
+
Du kan ladda ner senaste versionen av Nero AAC-kodare från Neros webbsida:
-
+
(Tips: Bortse från den nedladde zipfilens namn, och kontrollera istället den inkluderade textfilen 'changelog.txt'!)
-
+
AAC-kodare utdaterad
-
+
Neros AAC-kodare kan inte hittas. Stödet för AAC-kodning kommer att inaktiveras.
-
+
Placera 'neroAacEnc.exe', 'neroAacDec.exe' och 'neroAacTag.exe' i LameXPs programmmapp!
-
+
Din LameXP programmapp finns här:
-
+
Du kan ladda ner Nero AAC-kodare gratis från den officiella webbsidan:
-
+
AAC-stödet är inaktiverat
-
-
-
+
+
+
LameXP
-
+
Du måste lägga till minst en fil till listan innan du fortsätter!
-
+
Kan inte hittas
-
+
Din aktuella TEMP-mapp finns inte längre:
-
+
Återställ standard
-
+
Avbryt
-
+
Det finns mindre än %1 GB ledigt diskutrymme i systemets temp-mapp.
-
+
Du behöver frigöra mer diskutrymme innan du fortsätter med omkodningen!
-
+
Temp-mappens placering:
-
+
Varning för dåligt diskutrymme
-
+
Avbryt omkodningsprocessen
-
+
Rensa disken nu
-
+
Dåligt diskutrymme
-
+
Du fortsätter med dåligt diskutrymme. Problem kan uppstå!
-
+
En kodare som saknar stöd har valts!
-
+
Kan inte skriva till den valda utdatamappen.
-
+
Välj en annan målmapp!
-
+
Läs in översättning
-
+
Översättningsfiler
-
+
Vill du verkligen inaktivera uppdateringspåminnelsen?
-
-
-
-
-
-
-
+
+
+
+
+
+
+
Ja
-
-
-
-
-
-
-
+
+
+
+
+
+
+
Nej
-
+
Uppdateringspåminnelsen har inaktiverats.
-
+
Glöm inte att söka efter uppdateringar med jämna mellanrum!
-
+
Uppdateringspåminnelsen har återaktiverats.
-
+
Vill du verkligen inaktivera alla ljudeffekter?
-
-
+
+
Ljudeffekter
-
+
Alla ljudeffekter har inaktiverats.
-
+
Ljudeffekterna har återaktiverats.
-
-
+
+
Nero AAC-meddelanden
-
+
Vill du verkligen inaktivera alla Nero AAC-meddelanden?
-
+
Alla Nero AAC-meddelanden har inaktiverats.
-
+
Nero AAC-meddelanden har återaktiverats.
-
-
+
+
Meddelande om långsam uppstart
-
+
Vill du verkligen inaktivera meddelanden om långsam uppstart?
-
+
Meddelanden om långsam uppstart har inaktiverats.
-
+
Meddelanden om långsam uppstart har återaktiverats.
-
-
+
+
Öppna cue-fil
-
-
+
+
Cue-fil
-
-
+
+
Beta-uppdateringar
-
+
Vill du verkligen att LameXP skall söka efter beta-uppdateringar?
-
+
LameXP kommer i fortsättningen att söka efter beta-uppdatyeringar.
-
+
Sök nu
-
+
LameXP kommer i fortsättningen <i>inte</i> att söka efter beta-uppdateringar.
-
-
+
+
Viloläge
-
+
Vill du verkligen att datorn skall försättas i viloläge vid avslut?
-
+
LameXP kommer i fortsättningen att försätta datorn i viloläge vid avslut.
-
+
LameXP kommer i fortsättningen <i>inte</i> att försätta datorn i viloläge vid avslut.
-
-
-
+
+
+
Utforskarintegrering
-
+
Vill du verkligen inaktivera LameXPs utforskarintegration?
-
+
LameXPs utforskarintegration har inaktiverats.
-
+
LameXPs utforskarintegration har återaktiverats.
-
-
+
+
Lägg till fil(er)
-
-
+
+
Lägg till mapp
-
+
-
-
+
+
Spara CSV-fil
-
-
-
-
+
+
+
+
CSV-fil
-
-
-
-
+
+
+
+
CSV-export
-
+
Det finns ingen meta-data som kan exporteras!
-
+
Kunde inte öppna CSV-filen för skrivning!
-
+
Kunde inte skriva till CSV-filen!
-
+
CSV-filen skapades korrekt!
-
-
+
+
Öppna CSV-fil
-
-
-
-
-
+
+
+
+
+
CSV-import
-
+
Kunde inte öppna CSV-filen för läsning!
-
+
Kunde inte läsa från CSV-filen!
-
+
CSV-filen innehåller inga kända fält!
-
+
CSV-filen är inte komplett. Alla filer uppdaterades inte!
-
+
CSV-filen importerades korrekt!
-
-
+
+
Ny mapp
-
+
Namn på den nya mappen:
-
+
Kunde inte skapa någon mapp
-
+
Den nya mappen kunde inte skapas:
-
+
Diskenheten är skrivskyddad eller åtkomsträttigheter saknas!
-
-
+
+
Kvallitetsnivå %1
-
+
Kompression %1
-
+
Okomprimerad
-
+
Bäst kvalitet (Långsam)
-
+
Acceptabel kvalitet (Snabb)
-
+
Hög kvallitet (rekommenderas)
-
+
-
+
Dålig kvallitet (mycket snabb)
-
+
Filnamn utan filtillägg
-
+
Spårnummer med inledande nolla
-
+
Spårtitel
-
+
Artistnamn
-
+
Albumnamn
-
+
Årtal med (minst) fyra siffror
-
+
Kommentar
-
+
Förbjudna tecken i filnamn:
-
+
Namnändra macron
-
+
%n instans
@@ -2576,37 +2581,37 @@
-
+
Kan inte skriva till den specificerade mappen. Välj en annan destination!
-
+
Överskrivningsläge
-
+
Varning! Det här läget kan skriva över befintliga filer, utan möjlighet att återskapa!
-
+
Fortsätt
-
+
Återställ
-
+
Körs redan
-
+
LameXP körs redan, använd den redan startade instansen!
diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts
index 3be77925..2a15d75b 100644
--- a/etc/Translation/LameXP_TW.ts
+++ b/etc/Translation/LameXP_TW.ts
@@ -2013,6 +2013,10 @@
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts
index c35112af..3d676e75 100644
--- a/etc/Translation/LameXP_UK.ts
+++ b/etc/Translation/LameXP_UK.ts
@@ -2030,6 +2030,10 @@
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts
index 40429040..d7b895df 100644
--- a/etc/Translation/LameXP_ZH.ts
+++ b/etc/Translation/LameXP_ZH.ts
@@ -2013,6 +2013,10 @@
载入收集的文件或文件夹中,请稍候……
+
+
+
+
MetaInfo
diff --git a/gui/MainWindow.ui b/gui/MainWindow.ui
index 700ecf5f..276f6312 100644
--- a/gui/MainWindow.ui
+++ b/gui/MainWindow.ui
@@ -6,7 +6,7 @@
0
0
- 667
+ 676
443
@@ -805,39 +805,8 @@
-
-
-
-
-
-
- MP3
-
-
- true
-
-
-
- -
-
-
- Ogg/Vorbis
-
-
-
- -
-
-
- AAC/MP4
-
-
-
- -
-
-
- PCM/Wave
-
-
-
- -
+
+
-
Qt::Horizontal
@@ -853,21 +822,17 @@
- -
-
+
-
+
- A/52
+ MP3
+
+
+ true
- -
-
-
- DCA
-
-
-
- -
+
-
Qt::Horizontal
@@ -880,7 +845,34 @@
- -
+
-
+
+
+ Ogg/Vorbis
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 1
+ 20
+
+
+
+
+ -
+
+
+ Opus
+
+
+
+ -
Qt::Horizontal
@@ -893,7 +885,14 @@
- -
+
-
+
+
+ AAC/MP4
+
+
+
+ -
Qt::Horizontal
@@ -906,53 +905,34 @@
- -
-
-
- Qt::Horizontal
-
-
-
- 1
- 20
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 1
- 20
-
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 1
- 20
-
-
-
-
- -
+
-
FLAC
- -
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 1
+ 20
+
+
+
+
+ -
+
+
+ APE
+
+
+
+ -
Qt::Horizontal
@@ -965,15 +945,55 @@
- -
-
+
-
+
- Opus
+ A/52
- -
-
+
-
+
+
+ Qt::Horizontal
+
+
+
+ 1
+ 20
+
+
+
+
+ -
+
+
+ DCA
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 1
+ 20
+
+
+
+
+ -
+
+
+ PCM/Wave
+
+
+
+ -
+
Qt::Horizontal
@@ -1009,32 +1029,8 @@
-
-
-
-
-
-
- Quality-based (VBR)
-
-
- true
-
-
-
- -
-
-
- Average Bitrate (ABR)
-
-
-
- -
-
-
- Constant Bitrate (CBR)
-
-
-
- -
+
+
-
Qt::Horizontal
@@ -1050,7 +1046,17 @@
- -
+
-
+
+
+ Quality-based (VBR)
+
+
+ true
+
+
+
+ -
Qt::Horizontal
@@ -1063,7 +1069,14 @@
- -
+
-
+
+
+ Average Bitrate (ABR)
+
+
+
+ -
Qt::Horizontal
@@ -1076,7 +1089,14 @@
- -
+
-
+
+
+ Constant Bitrate (CBR)
+
+
+
+ -
Qt::Horizontal
@@ -1489,8 +1509,8 @@
0
0
- 604
- 1759
+ 602
+ 1750
@@ -4286,7 +4306,7 @@
0
0
- 667
+ 676
21
diff --git a/res/Tools_Misc_A.qrc b/res/Tools_Misc_A.qrc
index 1d8ed440..4bd5185b 100644
--- a/res/Tools_Misc_A.qrc
+++ b/res/Tools_Misc_A.qrc
@@ -5,6 +5,7 @@
tools/gpgv.exe
tools/gpgv.gpg
tools/sox.exe
+ tools/tag.exe
tools/wget.exe
tools/wupdate.exe
diff --git a/res/tools/mac.exe b/res/tools/mac.exe
index 7d0c77de..9095fc42 100644
Binary files a/res/tools/mac.exe and b/res/tools/mac.exe differ
diff --git a/res/tools/tag.exe b/res/tools/tag.exe
new file mode 100644
index 00000000..2c30d1ff
Binary files /dev/null and b/res/tools/tag.exe differ
diff --git a/src/Config.h b/src/Config.h
index cb3ea1b5..52df9e77 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -34,8 +34,8 @@
#define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 9
#define VER_LAMEXP_TYPE Alpha
-#define VER_LAMEXP_PATCH 9
-#define VER_LAMEXP_BUILD 1499
+#define VER_LAMEXP_PATCH 10
+#define VER_LAMEXP_BUILD 1502
#define VER_LAMEXP_CONFG 1348
///////////////////////////////////////////////////////////////////////////////
diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp
index 85149318..2b546ba5 100644
--- a/src/Dialog_MainWindow.cpp
+++ b/src/Dialog_MainWindow.cpp
@@ -385,6 +385,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel_MetaInfo *me
m_encoderButtonGroup->addButton(ui->radioButtonEncoderAAC, SettingsModel::AACEncoder);
m_encoderButtonGroup->addButton(ui->radioButtonEncoderAC3, SettingsModel::AC3Encoder);
m_encoderButtonGroup->addButton(ui->radioButtonEncoderFLAC, SettingsModel::FLACEncoder);
+ m_encoderButtonGroup->addButton(ui->radioButtonEncoderAPE, SettingsModel::MACEncoder);
m_encoderButtonGroup->addButton(ui->radioButtonEncoderOpus, SettingsModel::OpusEncoder);
m_encoderButtonGroup->addButton(ui->radioButtonEncoderDCA, SettingsModel::DCAEncoder);
m_encoderButtonGroup->addButton(ui->radioButtonEncoderPCM, SettingsModel::PCMEncoder);
@@ -1578,6 +1579,7 @@ void MainWindow::encodeButtonClicked(void)
case SettingsModel::FLACEncoder:
case SettingsModel::OpusEncoder:
case SettingsModel::DCAEncoder:
+ case SettingsModel::MACEncoder:
case SettingsModel::PCMEncoder:
break;
default:
diff --git a/src/Encoder_MAC.cpp b/src/Encoder_MAC.cpp
new file mode 100644
index 00000000..2bfc3c29
--- /dev/null
+++ b/src/Encoder_MAC.cpp
@@ -0,0 +1,302 @@
+///////////////////////////////////////////////////////////////////////////////
+// LameXP - Audio Encoder Front-End
+// Copyright (C) 2004-2013 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, but always including the *additional*
+// restrictions defined in the "License.txt" file.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// http://www.gnu.org/licenses/gpl-2.0.txt
+///////////////////////////////////////////////////////////////////////////////
+
+#include "Encoder_MAC.h"
+
+#include "Global.h"
+#include "Model_Settings.h"
+
+#include
+#include
+
+///////////////////////////////////////////////////////////////////////////////
+// Encoder Info
+///////////////////////////////////////////////////////////////////////////////
+
+class MACEncoderInfo : public AbstractEncoderInfo
+{
+ virtual bool isModeSupported(int mode) const
+ {
+ switch(mode)
+ {
+ case SettingsModel::VBRMode:
+ return true;
+ break;
+ case SettingsModel::ABRMode:
+ case SettingsModel::CBRMode:
+ return false;
+ break;
+ default:
+ THROW("Bad RC mode specified!");
+ }
+ }
+
+ virtual int valueCount(int mode) const
+ {
+ switch(mode)
+ {
+ case SettingsModel::VBRMode:
+ return 5;
+ break;
+ case SettingsModel::ABRMode:
+ case SettingsModel::CBRMode:
+ return -1;
+ break;
+ default:
+ THROW("Bad RC mode specified!");
+ }
+ }
+
+ virtual int valueAt(int mode, int index) const
+ {
+ switch(mode)
+ {
+ case SettingsModel::VBRMode:
+ return qBound(0, index + 1, 8);
+ break;
+ case SettingsModel::ABRMode:
+ case SettingsModel::CBRMode:
+ return -1;
+ break;
+ default:
+ THROW("Bad RC mode specified!");
+ }
+ }
+
+ virtual int valueType(int mode) const
+ {
+ switch(mode)
+ {
+ case SettingsModel::VBRMode:
+ return TYPE_COMPRESSION_LEVEL;
+ break;
+ case SettingsModel::ABRMode:
+ case SettingsModel::CBRMode:
+ return -1;
+ break;
+ default:
+ THROW("Bad RC mode specified!");
+ }
+ }
+
+ virtual const char *description(void) const
+ {
+ static const char* s_description = "Monkey's Audio (MAC)";
+ return s_description;
+ }
+}
+static const g_macEncoderInfo;
+
+///////////////////////////////////////////////////////////////////////////////
+// Encoder implementation
+///////////////////////////////////////////////////////////////////////////////
+
+MACEncoder::MACEncoder(void)
+:
+ m_binary_enc(lamexp_lookup_tool("mac.exe")),
+ m_binary_tag(lamexp_lookup_tool("tag.exe"))
+{
+ if(m_binary_enc.isEmpty() || m_binary_tag.isEmpty())
+ {
+ THROW("Error initializing MAC encoder. Tool 'mac.exe' or 'tag.exe' is not registred!");
+ }
+}
+
+MACEncoder::~MACEncoder(void)
+{
+}
+
+bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const QString &outputFile, volatile bool *abortFlag)
+{
+ QProcess process;
+ QStringList args;
+
+ const QString baseName = QFileInfo(outputFile).fileName();
+
+ args << QDir::toNativeSeparators(sourceFile);
+ args << QDir::toNativeSeparators(outputFile);
+
+ switch(m_configRCMode)
+ {
+ case SettingsModel::VBRMode:
+ args << QString().sprintf("-c%d", (m_configBitrate + 1) * 1000);
+ break;
+ default:
+ THROW("Bad rate-control mode!");
+ break;
+ }
+
+ if(!startProcess(process, m_binary_enc, args))
+ {
+ return false;
+ }
+
+ bool bTimeout = false;
+ bool bAborted = false;
+ int prevProgress = -1;
+
+ QRegExp regExp("Progress: (\\d+).(\\d+)%");
+
+ while(process.state() != QProcess::NotRunning)
+ {
+ if(*abortFlag)
+ {
+ process.kill();
+ bAborted = true;
+ emit messageLogged("\nABORTED BY USER !!!");
+ break;
+ }
+ process.waitForReadyRead(m_processTimeoutInterval);
+ if(!process.bytesAvailable() && process.state() == QProcess::Running)
+ {
+ process.kill();
+ qWarning("MAC process timed out <-- killing!");
+ emit messageLogged("\nPROCESS TIMEOUT !!!");
+ bTimeout = true;
+ break;
+ }
+ while(process.bytesAvailable() > 0)
+ {
+ QByteArray line = process.readLine();
+ QString text = QString::fromUtf8(line.constData()).simplified();
+ if(regExp.lastIndexIn(text) >= 0)
+ {
+ bool ok = false;
+ int progress = regExp.cap(1).toInt(&ok);
+ if(ok && (progress > prevProgress))
+ {
+ emit statusUpdated(progress);
+ prevProgress = qMin(progress + 2, 99);
+ }
+ }
+ else if(!text.isEmpty())
+ {
+ emit messageLogged(text);
+ }
+ }
+ }
+
+ process.waitForFinished();
+ if(process.state() != QProcess::NotRunning)
+ {
+ process.kill();
+ process.waitForFinished(-1);
+ }
+
+ emit statusUpdated(100);
+ emit messageLogged(QString().sprintf("\nExited with code: 0x%04X", process.exitCode()));
+
+ if(bTimeout || bAborted || process.exitCode() != EXIT_SUCCESS)
+ {
+ return false;
+ }
+
+ emit messageLogged("\n-------------------------------\n");
+
+ args.clear();
+ args << "APE2" << QDir::toNativeSeparators(outputFile);
+
+ if(!metaInfo.title().isEmpty()) args << QString("Title=%1").arg(cleanTag(metaInfo.title()));
+ if(!metaInfo.artist().isEmpty()) args << QString("Artist=%1").arg(cleanTag(metaInfo.artist()));
+ if(!metaInfo.album().isEmpty()) args << QString("Album=%1").arg(cleanTag(metaInfo.album()));
+ if(!metaInfo.genre().isEmpty()) args << QString("Genre=%1").arg(cleanTag(metaInfo.genre()));
+ if(!metaInfo.comment().isEmpty()) args << QString("Comment=%1").arg(cleanTag(metaInfo.comment()));
+ if(metaInfo.year()) args << QString("Year=%1").arg(QString::number(metaInfo.year()));
+ if(metaInfo.position()) args << QString("Track=%1").arg(QString::number(metaInfo.position()));
+
+ //if(!metaInfo.cover().isEmpty()) args << QString("-add-cover:%1:%2").arg("front", metaInfo.cover());
+
+ if(!startProcess(process, m_binary_tag, args))
+ {
+ return false;
+ }
+
+ bTimeout = false;
+
+ while(process.state() != QProcess::NotRunning)
+ {
+ if(*abortFlag)
+ {
+ process.kill();
+ bAborted = true;
+ emit messageLogged("\nABORTED BY USER !!!");
+ break;
+ }
+ process.waitForReadyRead(m_processTimeoutInterval);
+ if(!process.bytesAvailable() && process.state() == QProcess::Running)
+ {
+ process.kill();
+ qWarning("Tag process timed out <-- killing!");
+ emit messageLogged("\nPROCESS TIMEOUT !!!");
+ bTimeout = true;
+ break;
+ }
+ while(process.bytesAvailable() > 0)
+ {
+ QByteArray line = process.readLine();
+ QString text = QString::fromUtf8(line.constData()).simplified();
+ if(!text.isEmpty())
+ {
+ emit messageLogged(text);
+ }
+ }
+ }
+
+ process.waitForFinished();
+ if(process.state() != QProcess::NotRunning)
+ {
+ process.kill();
+ process.waitForFinished(-1);
+ }
+
+ emit messageLogged(QString().sprintf("\nExited with code: 0x%04X", process.exitCode()));
+
+ if(bTimeout || bAborted || process.exitCode() != EXIT_SUCCESS)
+ {
+ return false;
+ }
+
+ return true;
+}
+
+QString MACEncoder::extension(void)
+{
+ return "ape";
+}
+
+bool MACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
+{
+ if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ {
+ if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ {
+ return true;
+ }
+ }
+
+ return false;
+}
+
+const AbstractEncoderInfo *MACEncoder::getEncoderInfo(void)
+{
+ return &g_macEncoderInfo;
+}
diff --git a/src/Encoder_MAC.h b/src/Encoder_MAC.h
new file mode 100644
index 00000000..cfd73a0c
--- /dev/null
+++ b/src/Encoder_MAC.h
@@ -0,0 +1,47 @@
+///////////////////////////////////////////////////////////////////////////////
+// LameXP - Audio Encoder Front-End
+// Copyright (C) 2004-2013 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, but always including the *additional*
+// restrictions defined in the "License.txt" file.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with this program; if not, write to the Free Software Foundation, Inc.,
+// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+//
+// http://www.gnu.org/licenses/gpl-2.0.txt
+///////////////////////////////////////////////////////////////////////////////
+
+#pragma once
+
+#include "Encoder_Abstract.h"
+
+#include
+
+class MACEncoder : public AbstractEncoder
+{
+ Q_OBJECT
+
+public:
+ MACEncoder(void);
+ ~MACEncoder(void);
+
+ virtual bool encode(const QString &sourceFile, const AudioFileModel_MetaInfo &metaInfo, const unsigned int duration, const QString &outputFile, volatile bool *abortFlag);
+ virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
+ virtual QString extension(void);
+
+ //Encoder info
+ static const AbstractEncoderInfo *getEncoderInfo(void);
+
+private:
+ const QString m_binary_enc;
+ const QString m_binary_tag;
+};
diff --git a/src/Model_Settings.cpp b/src/Model_Settings.cpp
index 4b801c91..ffedd9f5 100644
--- a/src/Model_Settings.cpp
+++ b/src/Model_Settings.cpp
@@ -184,6 +184,7 @@ LAMEXP_MAKE_ID(compressionAbrBitrateAften, "Compression/AbrTaretBitrate/Aften"
LAMEXP_MAKE_ID(compressionAbrBitrateDcaEnc, "Compression/AbrTaretBitrate/DcaEnc");
LAMEXP_MAKE_ID(compressionAbrBitrateFLAC, "Compression/AbrTaretBitrate/FLAC");
LAMEXP_MAKE_ID(compressionAbrBitrateLAME, "Compression/AbrTaretBitrate/LAME");
+LAMEXP_MAKE_ID(compressionAbrBitrateMacEnc, "Compression/AbrTaretBitrate/MacEnc");
LAMEXP_MAKE_ID(compressionAbrBitrateOggEnc, "Compression/AbrTaretBitrate/OggEnc");
LAMEXP_MAKE_ID(compressionAbrBitrateOpusEnc, "Compression/AbrTaretBitrate/OpusEnc");
LAMEXP_MAKE_ID(compressionAbrBitrateWave, "Compression/AbrTaretBitrate/Wave");
@@ -192,6 +193,7 @@ LAMEXP_MAKE_ID(compressionCbrBitrateAften, "Compression/CbrTaretBitrate/Aften"
LAMEXP_MAKE_ID(compressionCbrBitrateDcaEnc, "Compression/CbrTaretBitrate/DcaEnc");
LAMEXP_MAKE_ID(compressionCbrBitrateFLAC, "Compression/CbrTaretBitrate/FLAC");
LAMEXP_MAKE_ID(compressionCbrBitrateLAME, "Compression/CbrTaretBitrate/LAME");
+LAMEXP_MAKE_ID(compressionCbrBitrateMacEnc, "Compression/CbrTaretBitrate/MacEnc");
LAMEXP_MAKE_ID(compressionCbrBitrateOggEnc, "Compression/CbrTaretBitrate/OggEnc");
LAMEXP_MAKE_ID(compressionCbrBitrateOpusEnc, "Compression/CbrTaretBitrate/OpusEnc");
LAMEXP_MAKE_ID(compressionCbrBitrateWave, "Compression/CbrTaretBitrate/Wave");
@@ -201,6 +203,7 @@ LAMEXP_MAKE_ID(compressionRCModeAften, "Compression/RCMode/Aften");
LAMEXP_MAKE_ID(compressionRCModeDcaEnc, "Compression/RCMode/DcaEnc");
LAMEXP_MAKE_ID(compressionRCModeFLAC, "Compression/RCMode/FLAC");
LAMEXP_MAKE_ID(compressionRCModeLAME, "Compression/RCMode/LAME");
+LAMEXP_MAKE_ID(compressionRCModeMacEnc, "Compression/RCMode/MacEnc");
LAMEXP_MAKE_ID(compressionRCModeOggEnc, "Compression/RCMode/OggEnc");
LAMEXP_MAKE_ID(compressionRCModeOpusEnc, "Compression/RCMode/OpusEnc");
LAMEXP_MAKE_ID(compressionRCModeWave, "Compression/RCMode/Wave");
@@ -209,6 +212,7 @@ LAMEXP_MAKE_ID(compressionVbrQualityAften, "Compression/VbrQualityLevel/Aften"
LAMEXP_MAKE_ID(compressionVbrQualityDcaEnc, "Compression/VbrQualityLevel/DcaEnc");
LAMEXP_MAKE_ID(compressionVbrQualityFLAC, "Compression/VbrQualityLevel/FLAC");
LAMEXP_MAKE_ID(compressionVbrQualityLAME, "Compression/VbrQualityLevel/LAME");
+LAMEXP_MAKE_ID(compressionVbrQualityMacEnc, "Compression/VbrQualityLevel/MacEnc");
LAMEXP_MAKE_ID(compressionVbrQualityOggEnc, "Compression/VbrQualityLevel/OggEnc");
LAMEXP_MAKE_ID(compressionVbrQualityOpusEnc, "Compression/VbrQualityLevel/OpusEnc");
LAMEXP_MAKE_ID(compressionVbrQualityWave, "Compression/VbrQualityLevel/Wave");
@@ -220,6 +224,7 @@ LAMEXP_MAKE_ID(customParametersAften, "AdvancedOptions/CustomParameters/A
LAMEXP_MAKE_ID(customParametersDcaEnc, "AdvancedOptions/CustomParameters/DcaEnc");
LAMEXP_MAKE_ID(customParametersFLAC, "AdvancedOptions/CustomParameters/FLAC");
LAMEXP_MAKE_ID(customParametersLAME, "AdvancedOptions/CustomParameters/LAME");
+LAMEXP_MAKE_ID(customParametersMacEnc, "AdvancedOptions/CustomParameters/MacEnc");
LAMEXP_MAKE_ID(customParametersOggEnc, "AdvancedOptions/CustomParameters/OggEnc");
LAMEXP_MAKE_ID(customParametersOpusEnc, "AdvancedOptions/CustomParameters/OpusEnc");
LAMEXP_MAKE_ID(customParametersWave, "AdvancedOptions/CustomParameters/Wave");
@@ -571,6 +576,7 @@ LAMEXP_MAKE_OPTION_I(compressionAbrBitrateAften, 17)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateDcaEnc, 13)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateFLAC, 5)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateLAME, 10)
+LAMEXP_MAKE_OPTION_I(compressionAbrBitrateMacEnc, 2)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateOggEnc, 16)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateOpusEnc, 11)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateWave, 0)
@@ -579,6 +585,7 @@ LAMEXP_MAKE_OPTION_I(compressionCbrBitrateAften, 17)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateDcaEnc, 13)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateFLAC, 5)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateLAME, 10)
+LAMEXP_MAKE_OPTION_I(compressionCbrBitrateMacEnc, 2)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateOggEnc, 16)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateOpusEnc, 11)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateWave, 0)
@@ -588,6 +595,7 @@ LAMEXP_MAKE_OPTION_I(compressionRCModeAften, 0)
LAMEXP_MAKE_OPTION_I(compressionRCModeDcaEnc, 2)
LAMEXP_MAKE_OPTION_I(compressionRCModeFLAC, 0)
LAMEXP_MAKE_OPTION_I(compressionRCModeLAME, 0)
+LAMEXP_MAKE_OPTION_I(compressionRCModeMacEnc, 0)
LAMEXP_MAKE_OPTION_I(compressionRCModeOggEnc, 0)
LAMEXP_MAKE_OPTION_I(compressionRCModeOpusEnc, 0)
LAMEXP_MAKE_OPTION_I(compressionRCModeWave, 2)
@@ -596,6 +604,7 @@ LAMEXP_MAKE_OPTION_I(compressionVbrQualityAften, 15)
LAMEXP_MAKE_OPTION_I(compressionVbrQualityDcaEnc, 13)
LAMEXP_MAKE_OPTION_I(compressionVbrQualityFLAC, 5)
LAMEXP_MAKE_OPTION_I(compressionVbrQualityLAME, 7)
+LAMEXP_MAKE_OPTION_I(compressionVbrQualityMacEnc, 2)
LAMEXP_MAKE_OPTION_I(compressionVbrQualityOggEnc, 7)
LAMEXP_MAKE_OPTION_I(compressionVbrQualityOpusEnc, 11)
LAMEXP_MAKE_OPTION_I(compressionVbrQualityWave, 0)
@@ -607,6 +616,7 @@ LAMEXP_MAKE_OPTION_S(customParametersAften, QString())
LAMEXP_MAKE_OPTION_S(customParametersDcaEnc, QString())
LAMEXP_MAKE_OPTION_S(customParametersFLAC, QString())
LAMEXP_MAKE_OPTION_S(customParametersLAME, QString())
+LAMEXP_MAKE_OPTION_S(customParametersMacEnc, QString())
LAMEXP_MAKE_OPTION_S(customParametersOggEnc, QString())
LAMEXP_MAKE_OPTION_S(customParametersOpusEnc, QString())
LAMEXP_MAKE_OPTION_S(customParametersWave, QString())
diff --git a/src/Model_Settings.h b/src/Model_Settings.h
index 0f223127..26c69d36 100644
--- a/src/Model_Settings.h
+++ b/src/Model_Settings.h
@@ -58,15 +58,16 @@ public:
//Enums
enum Encoder
{
- MP3Encoder = 0,
+ MP3Encoder = 0,
VorbisEncoder = 1,
- AACEncoder = 2,
- AC3Encoder = 3,
- FLACEncoder = 4,
- OpusEncoder = 5,
- DCAEncoder = 6,
- PCMEncoder = 7,
- ENCODER_COUNT = 8
+ AACEncoder = 2,
+ AC3Encoder = 3,
+ FLACEncoder = 4,
+ OpusEncoder = 5,
+ DCAEncoder = 6,
+ MACEncoder = 7,
+ PCMEncoder = 8,
+ ENCODER_COUNT = 9
};
enum RCMode
@@ -113,6 +114,7 @@ public:
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateDcaEnc)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateFLAC)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateLAME)
+ LAMEXP_MAKE_OPTION_I(compressionAbrBitrateMacEnc)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateOggEnc)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateOpusEnc)
LAMEXP_MAKE_OPTION_I(compressionAbrBitrateWave)
@@ -121,6 +123,7 @@ public:
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateDcaEnc)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateFLAC)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateLAME)
+ LAMEXP_MAKE_OPTION_I(compressionCbrBitrateMacEnc)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateOggEnc)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateOpusEnc)
LAMEXP_MAKE_OPTION_I(compressionCbrBitrateWave)
@@ -130,6 +133,7 @@ public:
LAMEXP_MAKE_OPTION_I(compressionRCModeDcaEnc)
LAMEXP_MAKE_OPTION_I(compressionRCModeFLAC)
LAMEXP_MAKE_OPTION_I(compressionRCModeLAME)
+ LAMEXP_MAKE_OPTION_I(compressionRCModeMacEnc)
LAMEXP_MAKE_OPTION_I(compressionRCModeOggEnc)
LAMEXP_MAKE_OPTION_I(compressionRCModeOpusEnc)
LAMEXP_MAKE_OPTION_I(compressionRCModeWave)
@@ -138,6 +142,7 @@ public:
LAMEXP_MAKE_OPTION_I(compressionVbrQualityDcaEnc)
LAMEXP_MAKE_OPTION_I(compressionVbrQualityFLAC)
LAMEXP_MAKE_OPTION_I(compressionVbrQualityLAME)
+ LAMEXP_MAKE_OPTION_I(compressionVbrQualityMacEnc)
LAMEXP_MAKE_OPTION_I(compressionVbrQualityOggEnc)
LAMEXP_MAKE_OPTION_I(compressionVbrQualityOpusEnc)
LAMEXP_MAKE_OPTION_I(compressionVbrQualityWave)
@@ -149,6 +154,7 @@ public:
LAMEXP_MAKE_OPTION_S(customParametersDcaEnc)
LAMEXP_MAKE_OPTION_S(customParametersFLAC)
LAMEXP_MAKE_OPTION_S(customParametersLAME)
+ LAMEXP_MAKE_OPTION_S(customParametersMacEnc)
LAMEXP_MAKE_OPTION_S(customParametersOggEnc)
LAMEXP_MAKE_OPTION_S(customParametersOpusEnc)
LAMEXP_MAKE_OPTION_S(customParametersWave)
diff --git a/src/Registry_Encoder.cpp b/src/Registry_Encoder.cpp
index b9382813..e1b23694 100644
--- a/src/Registry_Encoder.cpp
+++ b/src/Registry_Encoder.cpp
@@ -33,6 +33,7 @@
#include "Encoder_MP3.h"
#include "Encoder_Vorbis.h"
#include "Encoder_Opus.h"
+#include "Encoder_MAC.h"
#include "Encoder_Wave.h"
#define IS_VBR(RC_MODE) ((RC_MODE) == SettingsModel::VBRMode)
@@ -154,6 +155,13 @@ AbstractEncoder *EncoderRegistry::createInstance(const int encoderId, const Sett
encoder = dcaEncoder;
}
break;
+ /*-------- MACEncoder --------*/
+ case SettingsModel::MACEncoder:
+ {
+ MACEncoder *macEncoder = new MACEncoder();
+ encoder = macEncoder;
+ }
+ break;
/*-------- PCMEncoder --------*/
case SettingsModel::PCMEncoder:
{
@@ -196,6 +204,7 @@ const AbstractEncoderInfo *EncoderRegistry::getEncoderInfo(const int encoderId)
case SettingsModel::FLACEncoder: info = FLACEncoder::getEncoderInfo(); break;
case SettingsModel::OpusEncoder: info = OpusEncoder::getEncoderInfo(); break;
case SettingsModel::DCAEncoder: info = DCAEncoder::getEncoderInfo(); break;
+ case SettingsModel::MACEncoder: info = MACEncoder::getEncoderInfo(); break;
case SettingsModel::PCMEncoder: info = WaveEncoder::getEncoderInfo(); break;
case SettingsModel::AACEncoder:
switch(getAacEncoder())
@@ -252,6 +261,7 @@ void EncoderRegistry::saveEncoderMode(SettingsModel *settings, const int encoder
case SettingsModel::FLACEncoder: STORE_MODE(FLAC, rcMode); break;
case SettingsModel::OpusEncoder: STORE_MODE(OpusEnc, rcMode); break;
case SettingsModel::DCAEncoder: STORE_MODE(DcaEnc, rcMode); break;
+ case SettingsModel::MACEncoder: STORE_MODE(MacEnc, rcMode); break;
case SettingsModel::PCMEncoder: STORE_MODE(Wave, rcMode); break;
default: THROW("Unsupported encoder!");
}
@@ -271,6 +281,7 @@ int EncoderRegistry::loadEncoderMode(const SettingsModel *settings, const int en
case SettingsModel::FLACEncoder: LOAD_MODE(rcMode, FLAC); break;
case SettingsModel::OpusEncoder: LOAD_MODE(rcMode, OpusEnc); break;
case SettingsModel::DCAEncoder: LOAD_MODE(rcMode, DcaEnc); break;
+ case SettingsModel::MACEncoder: LOAD_MODE(rcMode, MacEnc); break;
case SettingsModel::PCMEncoder: LOAD_MODE(rcMode, Wave); break;
default: THROW("Unsupported encoder!");
}
@@ -316,6 +327,7 @@ void EncoderRegistry::saveEncoderValue(SettingsModel *settings, const int encode
case SettingsModel::FLACEncoder: STORE_VALUE(FLAC, rcMode, value); break;
case SettingsModel::OpusEncoder: STORE_VALUE(OpusEnc, rcMode, value); break;
case SettingsModel::DCAEncoder: STORE_VALUE(DcaEnc, rcMode, value); break;
+ case SettingsModel::MACEncoder: STORE_VALUE(MacEnc, rcMode, value); break;
case SettingsModel::PCMEncoder: STORE_VALUE(Wave, rcMode, value); break;
default: THROW("Unsupported encoder!");
}
@@ -341,6 +353,7 @@ int EncoderRegistry::loadEncoderValue(const SettingsModel *settings, const int e
case SettingsModel::FLACEncoder: LOAD_VALUE(value, FLAC, rcMode); break;
case SettingsModel::OpusEncoder: LOAD_VALUE(value, OpusEnc, rcMode); break;
case SettingsModel::DCAEncoder: LOAD_VALUE(value, DcaEnc, rcMode); break;
+ case SettingsModel::MACEncoder: LOAD_VALUE(value, MacEnc, rcMode); break;
case SettingsModel::PCMEncoder: LOAD_VALUE(value, Wave, rcMode); break;
default: THROW("Unsupported encoder!");
}
@@ -376,6 +389,7 @@ void EncoderRegistry::saveEncoderCustomParams(SettingsModel *settings, const int
case SettingsModel::FLACEncoder: STORE_PARAMS(FLAC, params.trimmed()); break;
case SettingsModel::OpusEncoder: STORE_PARAMS(OpusEnc, params.trimmed()); break;
case SettingsModel::DCAEncoder: STORE_PARAMS(DcaEnc, params.trimmed()); break;
+ case SettingsModel::MACEncoder: STORE_PARAMS(MacEnc, params.trimmed()); break;
case SettingsModel::PCMEncoder: STORE_PARAMS(Wave, params.trimmed()); break;
default: THROW("Unsupported encoder!");
}
@@ -395,6 +409,7 @@ QString EncoderRegistry::loadEncoderCustomParams(const SettingsModel *settings,
case SettingsModel::FLACEncoder: LOAD_PARAMS(params, FLAC); break;
case SettingsModel::OpusEncoder: LOAD_PARAMS(params, OpusEnc); break;
case SettingsModel::DCAEncoder: LOAD_PARAMS(params, DcaEnc); break;
+ case SettingsModel::MACEncoder: LOAD_PARAMS(params, MacEnc); break;
case SettingsModel::PCMEncoder: LOAD_PARAMS(params, Wave); break;
default: THROW("Unsupported encoder!");
}
@@ -419,6 +434,7 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
RESET_SETTING(settings, compressionAbrBitrateDcaEnc);
RESET_SETTING(settings, compressionAbrBitrateFLAC);
RESET_SETTING(settings, compressionAbrBitrateLAME);
+ RESET_SETTING(settings, compressionAbrBitrateMacEnc);
RESET_SETTING(settings, compressionAbrBitrateOggEnc);
RESET_SETTING(settings, compressionAbrBitrateOpusEnc);
RESET_SETTING(settings, compressionAbrBitrateWave);
@@ -428,6 +444,7 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
RESET_SETTING(settings, compressionCbrBitrateDcaEnc);
RESET_SETTING(settings, compressionCbrBitrateFLAC);
RESET_SETTING(settings, compressionCbrBitrateLAME);
+ RESET_SETTING(settings, compressionCbrBitrateMacEnc);
RESET_SETTING(settings, compressionCbrBitrateOggEnc);
RESET_SETTING(settings, compressionCbrBitrateOpusEnc);
RESET_SETTING(settings, compressionCbrBitrateWave);
@@ -437,6 +454,7 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
RESET_SETTING(settings, compressionRCModeDcaEnc);
RESET_SETTING(settings, compressionRCModeFLAC);
RESET_SETTING(settings, compressionRCModeLAME);
+ RESET_SETTING(settings, compressionRCModeMacEnc);
RESET_SETTING(settings, compressionRCModeOggEnc);
RESET_SETTING(settings, compressionRCModeOpusEnc);
RESET_SETTING(settings, compressionRCModeWave);
@@ -446,6 +464,7 @@ void EncoderRegistry::resetAllEncoders(SettingsModel *settings)
RESET_SETTING(settings, compressionVbrQualityDcaEnc);
RESET_SETTING(settings, compressionVbrQualityFLAC);
RESET_SETTING(settings, compressionVbrQualityLAME);
+ RESET_SETTING(settings, compressionVbrQualityMacEnc);
RESET_SETTING(settings, compressionVbrQualityOggEnc);
RESET_SETTING(settings, compressionVbrQualityOpusEnc);
RESET_SETTING(settings, compressionVbrQualityWave);
diff --git a/src/Thread_CheckUpdate.cpp b/src/Thread_CheckUpdate.cpp
index 7eedb273..6138e5f8 100644
--- a/src/Thread_CheckUpdate.cpp
+++ b/src/Thread_CheckUpdate.cpp
@@ -58,7 +58,7 @@ static const char *update_mirrors_prim[] =
"http://muldersoft.zxq.net/",
"http://lamexp.sourceforge.net/",
"http://lamexp.berlios.de/",
- "http://lordmulder.github.com/LameXP/",
+ "http://lordmulder.github.io/LameXP/",
"http://lord_mulder.bitbucket.org/",
"http://www.tricksoft.de/",
NULL
diff --git a/src/Tools.h b/src/Tools.h
index 52adfc32..84b93c66 100644
--- a/src/Tools.h
+++ b/src/Tools.h
@@ -65,7 +65,7 @@ g_lamexp_tools[] =
{"19c9dbe9089491c1f59ae48016d95d4336c4d3743577db4e782d8b59eca3b2bda6ed8f92f9004f88f434935b79e4974b", CPU_TYPE_ALL_ALL, "gpgv.gpg", UINT_MAX, ""},
{"53cfab3896a47d48f523315f475fa07856d468ad1aefcc8cce19c18cdf509e2f92840dab92a442995df36d941cb7a6ca", CPU_TYPE_ALL_GEN, "lame.i386.exe", 3995, "Final"},
{"9511e7ef2ad10de05386eedf7f14d637edab894a53dacd2f8f15c6f8ed582f12c25fb5bf88438e62c46b8eb92e7634b2", CPU_TYPE_ALL_SSE, "lame.sse2.exe", 3995, "Final"},
- {"0bc73180090547215d10cb7112d05503f7f666ef60ee0556d0f648a6c65172554ed04a05bc5d08b5645437c5408dffe9", CPU_TYPE_ALL_ALL, "mac.exe", 411, ""},
+ {"fdbeb978025b9a5345300f37bb56446c31c7db594cf29407afdcc9ce20f4a5cec6eb8c03962c247d4f45b83c465ac705", CPU_TYPE_ALL_ALL, "mac.exe", 412, ""},
{"21c4e79cc032d3b7ee635295cef99dc8ec1a0bf184ef613cdd372ec6d406ba2f376dc2873f65e6ab7e9fc0b38aabbb59", CPU_TYPE_X86_ALL, "mediainfo.i386.exe", 764, ""},
{"4e74c7802f9b015c7da9a97a37af0c6eced9f0fead3ad6720e76ac9d429d0319b5013e7957106a28a22f7415fb01b3d3", CPU_TYPE_X64_ALL, "mediainfo.x64.exe", 764, ""},
{"7e6346a057634ff07b2e1f427035324f7f02100cc996425990f87f71d767fce4c7b101588c7d944ba49cb2d7e51c9bdb", CPU_TYPE_ALL_ALL, "mpcdec.exe", 475, ""},
@@ -80,7 +80,8 @@ g_lamexp_tools[] =
{"bdfa8dec142b6327a33af6bb314d7beb924588d1b73f2ef3f46b31fa6046fe2f4e64ca78b025b7eb9290a78320e2aa57", CPU_TYPE_ALL_ALL, "refalac.exe", 56, ""},
{"d041b60de6c5c6e77cbad84440db57bbeb021af59dd0f7bebd3ede047d9e2ddc2a0c14179472687ba91063743d23e337", CPU_TYPE_ALL_ALL, "shorten.exe", 361, ""},
{"cf988bfbb53e77a1dcaefbd5c08789abb4d67cc210723f1f8ba7850f17d34ebb7d0c426b67b963e7d2290a2744865244", CPU_TYPE_ALL_ALL, "sox.exe", 1441, ""},
- {"5a4261e1b41a59d1a5bc92e1d2766422a67454d77e06ea29af392811b7b4704e0f3e494ab9cb6375ce9e39257867c5ed", CPU_TYPE_ALL_ALL, "speexdec.exe", 12},
+ {"5a4261e1b41a59d1a5bc92e1d2766422a67454d77e06ea29af392811b7b4704e0f3e494ab9cb6375ce9e39257867c5ed", CPU_TYPE_ALL_ALL, "speexdec.exe", 12, ""},
+ {"75d4c18dbb74e2dbf7342698428248d45cc4070d5f95da8831ef755e63dcd7ff9c3a760f289e8ef8b5c06b82548edbd8", CPU_TYPE_ALL_ALL, "tag.exe", 100, ""},
{"a83628880da0b7519ec368a74a92da5a5099d8d46aa0583131f92d7321f47c9e16a1841b2a3fb8ffcca7205ef4b1bb0a", CPU_TYPE_ALL_ALL, "tta.exe", 21, ""},
{"9e1ade2137ea5cee0ad4657971c314a372df3068594fbe4f77d45b9eb65fa7c69e55027b0df81b6fe072a220e9a8ba8a", CPU_TYPE_ALL_ALL, "valdec.exe", 100, "a"},
{"509df39fdd7033b0f1af831304d0d6c08b74d5a48e2c038857a78b9dfaa4fb83c6b5c7ea202ba2270c0384607f2316ee", CPU_TYPE_ALL_ALL, "wget.exe", 1140, ""},