diff --git a/doc/Changelog.html b/doc/Changelog.html
index d3189798..ca4891f6 100644
--- a/doc/Changelog.html
+++ b/doc/Changelog.html
@@ -17,7 +17,7 @@ a:visited { color: #0000EE; }
LameXP - Version History
Changes between v4.04 and v4.05 [unreleased]:
-- Added support for Opus Audio Codec, based on Opus-Tools v0.1.3 (2012-07-10) by Xiph.org/Mozilla
+
- Added support for Opus Audio Codec, based on Opus-Tools v0.1.3+ (2012-07-21) by Xiph.org/Mozilla
- Added Swedish translation, thanks to Åke Engelbrektson <eson57@gmail.com>
- Updated Qt runtime libraries to v4.8.2 (2012-05-22), compiled with MSVC 10.0
- Updated mpg123 decoder to v1.14.3 (2012-07-01), compiled with GCC 4.6.1
diff --git a/etc/Deployment/_deploy.bat b/etc/Deployment/_deploy.bat
index 3477d324..4eb9b4d6 100644
--- a/etc/Deployment/_deploy.bat
+++ b/etc/Deployment/_deploy.bat
@@ -72,10 +72,11 @@ if not "%LAMEXP_ERROR%"=="0" (
GOTO:EOF
)
REM ------------------------------------------
-set "OUT_FILE=%OUT_PATH%\..\%VER_LAMEXP_BASENAME%.%ISO_DATE%.%LAMEXP_CONFIG:_=-%.Build-%VER_LAMEXP_BUILD%"
+mkdir "%~dp0\..\..\out" 2> NUL
+set "OUT_FILE=%~dp0\..\..\out\%VER_LAMEXP_BASENAME%.%ISO_DATE%.%LAMEXP_CONFIG:_=-%.Build-%VER_LAMEXP_BUILD%"
for /L %%n in (1, 1, 99) do (
- if exist "!OUT_FILE!.exe" set "OUT_FILE=%OUT_PATH%\..\%VER_LAMEXP_BASENAME%.%ISO_DATE%.%LAMEXP_CONFIG:_=-%.Build-%VER_LAMEXP_BUILD%.Update-%%n"
- if exist "!OUT_FILE!.zip" set "OUT_FILE=%OUT_PATH%\..\%VER_LAMEXP_BASENAME%.%ISO_DATE%.%LAMEXP_CONFIG:_=-%.Build-%VER_LAMEXP_BUILD%.Update-%%n"
+ if exist "!OUT_FILE!.exe" set "OUT_FILE=%~dp0\..\..\out\%VER_LAMEXP_BASENAME%.%ISO_DATE%.%LAMEXP_CONFIG:_=-%.Build-%VER_LAMEXP_BUILD%.Update-%%n"
+ if exist "!OUT_FILE!.zip" set "OUT_FILE=%~dp0\..\..\out\%VER_LAMEXP_BASENAME%.%ISO_DATE%.%LAMEXP_CONFIG:_=-%.Build-%VER_LAMEXP_BUILD%.Update-%%n"
)
REM ------------------------------------------
REM :: DELETE OLD OUTPUT FILE ::
diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts
index a3268ac4..90009b5a 100644
--- a/etc/Translation/Blank.ts
+++ b/etc/Translation/Blank.ts
@@ -760,7 +760,7 @@
-
+
@@ -781,13 +781,13 @@
-
+
-
+
@@ -833,7 +833,7 @@
-
+
@@ -874,7 +874,7 @@
-
+
@@ -960,7 +960,7 @@
-
+
@@ -1281,6 +1281,7 @@
+
@@ -1290,1133 +1291,1193 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
-
-
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
-
-
-
+
+
+
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
-
-
+
+
+
-
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
+
-
+
-
+
-
+
-
-
+
+
-
-
-
-
-
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2968,45 +3029,45 @@
-
+
-
+
-
+
-
-
+
+
-
+
-
-
+
+
-
-
+
+
-
+
diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts
index 5e38dd3c..aa400cd3 100644
--- a/etc/Translation/LameXP_DE.ts
+++ b/etc/Translation/LameXP_DE.ts
@@ -1836,31 +1836,79 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+ Opus Kodierer Optionen
+
+
+
+ Optimieren für Signaltyp:
+
+
+
+ Kodierer Komplexität:
+
+
+
+ Musik
+
+
+
+ (Undefiniert)
+
+
+
+ Framegröße:
+
+
+
+ 2,5
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -2181,7 +2229,7 @@
-
+ WARNUNG: Dekodierte Dateigröße übersteigt 4 GB, Probleme sind vorprogrammiert!
diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts
index c20db787..2593f5a4 100644
--- a/etc/Translation/LameXP_ES.ts
+++ b/etc/Translation/LameXP_ES.ts
@@ -1861,6 +1861,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.5
+
+
+
+ 5
+
+
+
+ 10
+
+
+
+ 20
+
+
+
+ 40
+
+
+
+ 60
+
MetaInfo
diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts
index 4f15ce83..2ddbeab0 100644
--- a/etc/Translation/LameXP_FR.ts
+++ b/etc/Translation/LameXP_FR.ts
@@ -1871,6 +1871,54 @@ Ouvrir le dossier récursivement...
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.5
+
+
+
+ 5
+
+
+
+ 10
+
+
+
+ 20
+
+
+
+ 40
+
+
+
+ 60
+
MetaInfo
diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts
index 47410007..ef8a6321 100644
--- a/etc/Translation/LameXP_IT.ts
+++ b/etc/Translation/LameXP_IT.ts
@@ -1862,6 +1862,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts
index 64656d9a..27d88d06 100644
--- a/etc/Translation/LameXP_KR.ts
+++ b/etc/Translation/LameXP_KR.ts
@@ -1861,6 +1861,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts
index 04d43407..9a1c4bc8 100644
--- a/etc/Translation/LameXP_PL.ts
+++ b/etc/Translation/LameXP_PL.ts
@@ -760,7 +760,7 @@
-
+
Pliki źródłowe
@@ -781,13 +781,13 @@
-
+
Pokaż szczegóły
-
+
Folder docelowy
@@ -823,7 +823,7 @@
-
+
Tagi
@@ -864,7 +864,7 @@
-
+
Kompresja
@@ -915,7 +915,7 @@
-
+
Opcje zaawansowane
@@ -1281,6 +1281,7 @@
+
@@ -1290,1133 +1291,1193 @@
Ż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:
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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
-
+
Hibernuj zamiast zamykać
-
+
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
-
+
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.
-
+
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.
-
+
WERSJA DEMO
-
+
(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
-
+
Ładowanie zestawu folderów, prosze czekać...
-
+
Odśwież foldery
-
+
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
-
-
+
+
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!
-
+
QAAC (Apple)
-
+
FHG AAC (Winamp)
-
+
Nero AAC
-
+
Niedostępny!
-
+
Obecny koder AAC: %1
-
-
-
-
+
+
+
+
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!
@@ -2968,45 +3029,45 @@
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
-
+
godzinie/ach
-
-
+
+
minutach
-
-
+
+
sekundach
-
+
milisekundach
diff --git a/etc/Translation/LameXP_RU.ts b/etc/Translation/LameXP_RU.ts
index 35b0113e..91b71777 100644
--- a/etc/Translation/LameXP_RU.ts
+++ b/etc/Translation/LameXP_RU.ts
@@ -1867,6 +1867,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
MetaInfo
diff --git a/etc/Translation/LameXP_SV.ts b/etc/Translation/LameXP_SV.ts
index 8e76da0d..162c4037 100644
--- a/etc/Translation/LameXP_SV.ts
+++ b/etc/Translation/LameXP_SV.ts
@@ -760,7 +760,7 @@
-
+
Källfiler
@@ -781,13 +781,13 @@
-
+
Visa detaljer
-
+
Målmapp
@@ -833,7 +833,7 @@
-
+
Metadata
@@ -874,7 +874,7 @@
-
+
Komprimering
@@ -960,7 +960,7 @@
-
+
Avancerat
@@ -1281,6 +1281,7 @@
+
Tal
@@ -1290,1133 +1291,1193 @@
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:
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.5
+
+
+
+
+ 5
+
+
+
+
+ 10
+
+
+
+
+ 20
+
+
+
+
+ 40
+
+
+
+
+ 60
+
+
+
Återställ avancerade inställningar
-
+
Koda om nu!
-
-
+
+
Om...
-
+
Avsluta LameXP
-
+
Arkiv
-
+
Info
-
+
Visa
-
+
Stil
-
+
Språk
-
+
Verktyg
-
+
Inställningar
-
+
Avsluta
-
+
Öppna fil(er)...
-
-
+
+
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
-
+
Lägger till fil(er), vänta...
-
-
+
+
Åtkomst nekad
-
+
%1 fil(er) har undantagits, på grund av att åtkomst nekades!
-
+
Det innebär oftast att filen är låst av någon annan process.
-
+
CDDA-filer
-
+
%1 fil(er) har undantagits, på grund av att det är fejkade 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.
-
+
Cue-fil
-
+
%1 fil(er) har undantagits, på grund av att de verkar vara cue-filer!
-
+
Använd LameXPs cue-guide för att importera cue-filer.
-
+
Undantagna filer
-
+
%1 fil(er) har undantagits, på grund av att filformatet inte känns igen!
-
+
Det innebär oftast att filen är skadad eller att filformatet inte stöds.
-
+
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
-
+
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!
-
+
QAAC (Apple)
-
+
FHG AAC (Winamp)
-
+
Nero AAC
-
+
Ej tillgänglig!
-
+
Aktuell AAC-kodare: %1
-
-
-
-
+
+
+
+
Kvallitetsnivå %1
-
-
-
+
+
+
Kompression %1
-
-
-
+
+
+
Okomprimerad
-
+
Bäst kvallitet (långsam)
-
+
Hög kvallitet (rekommenderas)
-
+
Medelkvallitet (standard)
-
+
Låg kvallitet (snabb)
-
+
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
-
+
%1 instans(er)
-
+
Kan inte skriva till den specificerade mappen. Välj en annan destination!
-
+
Körs redan
-
+
LameXP körs redan, använd den redan startade instansen!
@@ -2968,45 +3029,45 @@
LameXP - Klar
-
+
Kunde inte skapa spelningslista!
-
+
Spelningslistan kunde inte skapas:
-
+
Varning! Datorn kommer att stängas av om %1 sekunder...
-
-
+
+
Avbryt avstängning
-
+
timma(r)
-
-
+
+
minut(er)
-
-
+
+
sekund(er)
-
+
millisekund(er)
diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts
index 14bb6fc4..1eb62930 100644
--- a/etc/Translation/LameXP_TW.ts
+++ b/etc/Translation/LameXP_TW.ts
@@ -1861,6 +1861,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.5
+
+
+
+ 5
+
+
+
+ 10
+
+
+
+ 20
+
+
+
+ 40
+
+
+
+ 60
+
MetaInfo
diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts
index 04ca966d..0d0b79c9 100644
--- a/etc/Translation/LameXP_UK.ts
+++ b/etc/Translation/LameXP_UK.ts
@@ -1862,6 +1862,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.5
+
+
+
+ 5
+
+
+
+ 10
+
+
+
+ 20
+
+
+
+ 40
+
+
+
+ 60
+
MetaInfo
diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts
index 4c6b2afa..3a97e48a 100644
--- a/etc/Translation/LameXP_ZH.ts
+++ b/etc/Translation/LameXP_ZH.ts
@@ -1861,6 +1861,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 2.5
+
+
+
+ 5
+
+
+
+ 10
+
+
+
+ 20
+
+
+
+ 40
+
+
+
+ 60
+
MetaInfo
diff --git a/etc/Translation/update.lst b/etc/Translation/update.lst
index 2066076a..b4faaf9c 100644
--- a/etc/Translation/update.lst
+++ b/etc/Translation/update.lst
@@ -17,6 +17,7 @@
..\..\src\Decoder_MAC.cpp
..\..\src\Decoder_MP3.cpp
..\..\src\Decoder_Musepack.cpp
+..\..\src\Decoder_Opus.cpp
..\..\src\Decoder_Shorten.cpp
..\..\src\Decoder_Speex.cpp
..\..\src\Decoder_TTA.cpp
@@ -42,6 +43,7 @@
..\..\src\Encoder_DCA.cpp
..\..\src\Encoder_FLAC.cpp
..\..\src\Encoder_MP3.cpp
+..\..\src\Encoder_Opus.cpp
..\..\src\Encoder_Vorbis.cpp
..\..\src\Encoder_Wave.cpp
..\..\src\Filter_Abstract.cpp
@@ -89,6 +91,7 @@
..\..\src\Decoder_MAC.h
..\..\src\Decoder_MP3.h
..\..\src\Decoder_Musepack.h
+..\..\src\Decoder_Opus.h
..\..\src\Decoder_Shorten.h
..\..\src\Decoder_Speex.h
..\..\src\Decoder_TTA.h
@@ -114,6 +117,7 @@
..\..\src\Encoder_DCA.h
..\..\src\Encoder_FLAC.h
..\..\src\Encoder_MP3.h
+..\..\src\Encoder_Opus.h
..\..\src\Encoder_Vorbis.h
..\..\src\Encoder_Wave.h
..\..\src\Filter_Abstract.h
diff --git a/gui/MainWindow.ui b/gui/MainWindow.ui
index 53d40ca8..a6200bf6 100644
--- a/gui/MainWindow.ui
+++ b/gui/MainWindow.ui
@@ -1324,7 +1324,7 @@
0
0
604
- 1524
+ 1639
@@ -2060,7 +2060,7 @@
-
-
+
-
@@ -2253,7 +2253,7 @@
- -
+
-
@@ -2431,7 +2431,7 @@
- -
+
-
@@ -2670,7 +2670,7 @@
- -
+
-
@@ -2834,7 +2834,7 @@
- -
+
-
@@ -3017,6 +3017,9 @@
-
+
+ 0
+
-
Auto Select
@@ -3216,7 +3219,7 @@
- -
+
-
@@ -3414,6 +3417,241 @@
+ -
+
+
+
+ 50
+ false
+
+
+
+ Opus Encoder Options
+
+
+
-
+
+
-
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 10
+ 20
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+ QSizePolicy::Fixed
+
+
+
+ 10
+ 20
+
+
+
+
+ -
+
+
+ Optimize for Signal Type:
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 8
+
+
+
+
+ -
+
+
+ Qt::Vertical
+
+
+ QSizePolicy::Fixed
+
+
+
+ 20
+ 8
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 1
+ 20
+
+
+
+
+ -
+
+
+ Qt::Horizontal
+
+
+
+ 1
+ 20
+
+
+
+
+ -
+
+
+ Encoding Complexity:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 128
+ 0
+
+
+
+ 0
+
+
-
+
+ Music
+
+
+ -
+
+ Speech
+
+
+ -
+
+ (Undefined)
+
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 128
+ 0
+
+
+
+ 10
+
+
+ 10
+
+
+
+ -
+
+
+ Frame Size:
+
+
+
+ -
+
+
+
+ 0
+ 0
+
+
+
+
+ 128
+ 0
+
+
+
+ 3
+
+
-
+
+ 2.5
+
+
+ -
+
+ 5
+
+
+ -
+
+ 10
+
+
+ -
+
+ 20
+
+
+ -
+
+ 40
+
+
+ -
+
+ 60
+
+
+
+
+
+
+
+
+
-
@@ -4124,6 +4362,8 @@
+
+
diff --git a/res/localization/LameXP_DE.qm b/res/localization/LameXP_DE.qm
index e8885999..d17a4003 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 a3ca2387..07004d7f 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 d9b457fa..63468dee 100644
Binary files a/res/localization/LameXP_FR.qm and b/res/localization/LameXP_FR.qm differ
diff --git a/res/localization/LameXP_SV.qm b/res/localization/LameXP_SV.qm
index b75a5f60..f1ea55c7 100644
Binary files a/res/localization/LameXP_SV.qm and b/res/localization/LameXP_SV.qm differ
diff --git a/res/localization/LameXP_TW.qm b/res/localization/LameXP_TW.qm
index 7baf9b6a..13f2cb64 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 6738c71e..0885c233 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 80245fbc..a34d9890 100644
Binary files a/res/localization/LameXP_ZH.qm and b/res/localization/LameXP_ZH.qm differ
diff --git a/res/tools/opusdec.exe b/res/tools/opusdec.exe
index 4c56032e..eab797ab 100644
Binary files a/res/tools/opusdec.exe and b/res/tools/opusdec.exe differ
diff --git a/res/tools/opusenc.exe b/res/tools/opusenc.exe
index f5f70050..813997ef 100644
Binary files a/res/tools/opusenc.exe and b/res/tools/opusenc.exe differ
diff --git a/src/Config.h b/src/Config.h
index 2f141eb2..8bd703f3 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -29,8 +29,8 @@
#define VER_LAMEXP_MINOR_HI 0
#define VER_LAMEXP_MINOR_LO 5
#define VER_LAMEXP_TYPE Alpha
-#define VER_LAMEXP_PATCH 8
-#define VER_LAMEXP_BUILD 1052
+#define VER_LAMEXP_PATCH 9
+#define VER_LAMEXP_BUILD 1056
///////////////////////////////////////////////////////////////////////////////
// Tool versions (minimum expected versions!)
diff --git a/src/Decoder_Opus.cpp b/src/Decoder_Opus.cpp
index 5a557433..8736c592 100644
--- a/src/Decoder_Opus.cpp
+++ b/src/Decoder_Opus.cpp
@@ -59,7 +59,7 @@ bool OpusDecoder::decode(const QString &sourceFile, const QString &outputFile, v
bool bAborted = false;
int prevProgress = -1;
- //QRegExp regExp("\\s+Time:\\s+(\\d+):(\\d+)\\.(\\d+)\\s+\\[(\\d+):(\\d+)\\.(\\d+)\\],");
+ QRegExp regExp("\\[(-|\\\\|/|\\|)\\]");
//The ALAC Decoder doesn't actually send any status updates :-[
emit statusUpdated(20 + (QUuid::createUuid().data1 % 60));
@@ -86,8 +86,10 @@ bool OpusDecoder::decode(const QString &sourceFile, const QString &outputFile, v
{
QByteArray line = process.readLine();
QString text = QString::fromUtf8(line.constData()).simplified();
- /* if(regExp.lastIndexIn(text) >= 0)
+ if(regExp.lastIndexIn(text) >= 0)
{
+ __noop;
+ /*
int values[6];
for(int i = 0; i < 6; i++)
{
@@ -106,8 +108,9 @@ bool OpusDecoder::decode(const QString &sourceFile, const QString &outputFile, v
prevProgress = qMin(newProgress + 2, 99);
}
}
- } */
- if(!text.isEmpty())
+ */
+ }
+ else if(!text.isEmpty())
{
emit messageLogged(text);
}
diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp
index b5ff33d5..75a908bb 100644
--- a/src/Dialog_MainWindow.cpp
+++ b/src/Dialog_MainWindow.cpp
@@ -260,12 +260,15 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
spinBoxToneAdjustBass->setValue(static_cast(m_settings->toneAdjustBass()) / 100.0);
spinBoxToneAdjustTreble->setValue(static_cast(m_settings->toneAdjustTreble()) / 100.0);
spinBoxAftenSearchSize->setValue(m_settings->aftenExponentSearchSize());
+ spinBoxOpusComplexity->setValue(m_settings->opusComplexity());
comboBoxMP3ChannelMode->setCurrentIndex(m_settings->lameChannelMode());
comboBoxSamplingRate->setCurrentIndex(m_settings->samplingRate());
comboBoxAACProfile->setCurrentIndex(m_settings->aacEncProfile());
comboBoxAftenCodingMode->setCurrentIndex(m_settings->aftenAudioCodingMode());
comboBoxAftenDRCMode->setCurrentIndex(m_settings->aftenDynamicRangeCompression());
comboBoxNormalizationMode->setCurrentIndex(m_settings->normalizationFilterEqualizationMode());
+ comboBoxOpusOptimize->setCurrentIndex(m_settings->opusOptimizeFor());
+ comboBoxOpusFramesize->setCurrentIndex(m_settings->opusFramesize());
while(checkBoxBitrateManagement->isChecked() != m_settings->bitrateManagementEnabled()) checkBoxBitrateManagement->click();
while(checkBoxNeroAAC2PassMode->isChecked() != m_settings->neroAACEnable2Pass()) checkBoxNeroAAC2PassMode->click();
while(checkBoxAftenFastAllocation->isChecked() != m_settings->aftenFastBitAllocation()) checkBoxAftenFastAllocation->click();
@@ -316,6 +319,9 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
connect(lineEditRenamePattern, SIGNAL(textChanged(QString)), this, SLOT(renameOutputPatternChanged(QString)));
connect(labelShowRenameMacros, SIGNAL(linkActivated(QString)), this, SLOT(showRenameMacros(QString)));
connect(checkBoxForceStereoDownmix, SIGNAL(clicked(bool)), this, SLOT(forceStereoDownmixEnabledChanged(bool)));
+ connect(comboBoxOpusOptimize, SIGNAL(currentIndexChanged(int)), SLOT(opusSettingsChanged()));
+ connect(comboBoxOpusFramesize, SIGNAL(currentIndexChanged(int)), this, SLOT(opusSettingsChanged()));
+ connect(spinBoxOpusComplexity, SIGNAL(valueChanged(int)), this, SLOT(opusSettingsChanged()));
updateLameAlgoQuality(sliderLameAlgoQuality->value());
updateMaximumInstances(sliderMaxInstances->value());
toneAdjustTrebleChanged(spinBoxToneAdjustTreble->value());
@@ -773,7 +779,7 @@ void MainWindow::changeEvent(QEvent *e)
{
if(e->type() == QEvent::LanguageChange)
{
- int comboBoxIndex[6];
+ int comboBoxIndex[8];
//Backup combobox indices, as retranslateUi() resets
comboBoxIndex[0] = comboBoxMP3ChannelMode->currentIndex();
@@ -782,6 +788,8 @@ void MainWindow::changeEvent(QEvent *e)
comboBoxIndex[3] = comboBoxAftenCodingMode->currentIndex();
comboBoxIndex[4] = comboBoxAftenDRCMode->currentIndex();
comboBoxIndex[5] = comboBoxNormalizationMode->currentIndex();
+ comboBoxIndex[6] = comboBoxOpusOptimize->currentIndex();
+ comboBoxIndex[7] = comboBoxOpusFramesize->currentIndex();
//Re-translate from UIC
Ui::MainWindow::retranslateUi(this);
@@ -793,6 +801,8 @@ void MainWindow::changeEvent(QEvent *e)
comboBoxAftenCodingMode->setCurrentIndex(comboBoxIndex[3]);
comboBoxAftenDRCMode->setCurrentIndex(comboBoxIndex[4]);
comboBoxNormalizationMode->setCurrentIndex(comboBoxIndex[5]);
+ comboBoxOpusOptimize->setCurrentIndex(comboBoxIndex[6]);
+ comboBoxOpusFramesize->setCurrentIndex(comboBoxIndex[7]);
//Update the window title
if(LAMEXP_DEBUG)
@@ -3406,6 +3416,17 @@ void MainWindow::aftenFastAllocationChanged(bool checked)
m_settings->aftenFastBitAllocation(checked);
}
+
+/*
+ * Opus encoder settings changed
+ */
+void MainWindow::opusSettingsChanged(void)
+{
+ m_settings->opusOptimizeFor(comboBoxOpusOptimize->currentIndex());
+ m_settings->opusFramesize(comboBoxOpusFramesize->currentIndex());
+ m_settings->opusComplexity(spinBoxOpusComplexity->value());
+}
+
/*
* Normalization filter enabled changed
*/
@@ -3657,12 +3678,15 @@ void MainWindow::resetAdvancedOptionsButtonClicked(void)
spinBoxToneAdjustBass->setValue(static_cast(m_settings->toneAdjustBassDefault()) / 100.0);
spinBoxToneAdjustTreble->setValue(static_cast(m_settings->toneAdjustTrebleDefault()) / 100.0);
spinBoxAftenSearchSize->setValue(m_settings->aftenExponentSearchSizeDefault());
+ spinBoxOpusComplexity->setValue(m_settings->opusComplexityDefault());
comboBoxMP3ChannelMode->setCurrentIndex(m_settings->lameChannelModeDefault());
comboBoxSamplingRate->setCurrentIndex(m_settings->samplingRateDefault());
comboBoxAACProfile->setCurrentIndex(m_settings->aacEncProfileDefault());
comboBoxAftenCodingMode->setCurrentIndex(m_settings->aftenAudioCodingModeDefault());
comboBoxAftenDRCMode->setCurrentIndex(m_settings->aftenDynamicRangeCompressionDefault());
comboBoxNormalizationMode->setCurrentIndex(m_settings->normalizationFilterEqualizationModeDefault());
+ comboBoxOpusOptimize->setCurrentIndex(m_settings->opusOptimizeForDefault());
+ comboBoxOpusFramesize->setCurrentIndex(m_settings->opusFramesizeDefault());
while(checkBoxBitrateManagement->isChecked() != m_settings->bitrateManagementEnabledDefault()) checkBoxBitrateManagement->click();
while(checkBoxNeroAAC2PassMode->isChecked() != m_settings->neroAACEnable2PassDefault()) checkBoxNeroAAC2PassMode->click();
while(checkBoxNormalizationFilter->isChecked() != m_settings->normalizationFilterEnabledDefault()) checkBoxNormalizationFilter->click();
diff --git a/src/Dialog_MainWindow.h b/src/Dialog_MainWindow.h
index 3e721e85..85dff572 100644
--- a/src/Dialog_MainWindow.h
+++ b/src/Dialog_MainWindow.h
@@ -106,6 +106,7 @@ private slots:
void normalizationModeChanged(int mode);
void notifyOtherInstance(void);
void openFolderActionActivated(void);
+ void opusSettingsChanged(void);
void outputFolderContextMenu(const QPoint &pos);
void outputFolderDirectoryLoaded(const QString &path);
void outputFolderEditFinished(void);
diff --git a/src/Dialog_Processing.cpp b/src/Dialog_Processing.cpp
index 8ce4a373..4a7df5ff 100644
--- a/src/Dialog_Processing.cpp
+++ b/src/Dialog_Processing.cpp
@@ -841,6 +841,9 @@ AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling)
OpusEncoder *opusEncoder = new OpusEncoder();
opusEncoder->setBitrate(m_settings->compressionBitrate());
opusEncoder->setRCMode(m_settings->compressionRCMode());
+ opusEncoder->setOptimizeFor(m_settings->opusOptimizeFor());
+ opusEncoder->setEncodeComplexity(m_settings->opusComplexity());
+ opusEncoder->setFrameSize(m_settings->opusFramesize());
//TODO: opusEncoder->setCustomParams(m_settings->customParametersOpus());
encoder = opusEncoder;
}
diff --git a/src/Encoder_AAC.cpp b/src/Encoder_AAC.cpp
index 36a04ab2..f7a696a7 100644
--- a/src/Encoder_AAC.cpp
+++ b/src/Encoder_AAC.cpp
@@ -287,3 +287,8 @@ void AACEncoder::setEnable2Pass(bool enabled)
{
m_configEnable2Pass = enabled;
}
+
+const bool AACEncoder::needsTimingInfo(void)
+{
+ return true;
+}
diff --git a/src/Encoder_AAC.h b/src/Encoder_AAC.h
index 4557a104..7129b445 100644
--- a/src/Encoder_AAC.h
+++ b/src/Encoder_AAC.h
@@ -36,6 +36,7 @@ public:
virtual bool encode(const QString &sourceFile, const AudioFileModel &metaInfo, const QString &outputFile, volatile bool *abortFlag);
virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion);
virtual QString extension(void);
+ virtual const bool needsTimingInfo(void);
//Advanced options
virtual void setProfile(int profile);
diff --git a/src/Encoder_Abstract.cpp b/src/Encoder_Abstract.cpp
index bb83ccee..0a0a3854 100644
--- a/src/Encoder_Abstract.cpp
+++ b/src/Encoder_Abstract.cpp
@@ -64,6 +64,12 @@ const unsigned int *AbstractEncoder::supportedBitdepths(void)
return NULL;
}
+//Does the encoder need the exact duration of the source?
+const bool AbstractEncoder::needsTimingInfo(void)
+{
+ return false;
+}
+
/*
* Helper functions
*/
diff --git a/src/Encoder_Abstract.h b/src/Encoder_Abstract.h
index fffee7c1..abf04a5d 100644
--- a/src/Encoder_Abstract.h
+++ b/src/Encoder_Abstract.h
@@ -43,6 +43,7 @@ public:
virtual const unsigned int *supportedSamplerates(void);
virtual const unsigned int *supportedChannelCount(void);
virtual const unsigned int *supportedBitdepths(void);
+ virtual const bool needsTimingInfo(void);
//Common setter methods
void setBitrate(int bitrate);
diff --git a/src/Encoder_Opus.cpp b/src/Encoder_Opus.cpp
index 372d84e0..5fbe5794 100644
--- a/src/Encoder_Opus.cpp
+++ b/src/Encoder_Opus.cpp
@@ -36,6 +36,10 @@ OpusEncoder::OpusEncoder(void)
{
throw "Error initializing Opus encoder. Tool 'opusenc.exe' is not registred!";
}
+
+ m_configOptimizeFor = 0;
+ m_configEncodeComplexity = 10;
+ m_configFrameSize = 3;
}
OpusEncoder::~OpusEncoder(void)
@@ -44,11 +48,11 @@ OpusEncoder::~OpusEncoder(void)
bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel &metaInfo, const QString &outputFile, volatile bool *abortFlag)
{
+ const unsigned int fileDuration = metaInfo.fileDuration();
+
QProcess process;
QStringList args;
- args << "--music"; //TODO: Make other optimizations available!
-
switch(m_configRCMode)
{
case SettingsModel::VBRMode:
@@ -65,6 +69,40 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel &metaIn
break;
}
+ switch(m_configOptimizeFor)
+ {
+ case 0:
+ args << "--music";
+ break;
+ case 1:
+ args << "--speech";
+ break;
+ }
+
+ args << "--comp" << QString::number(m_configEncodeComplexity);
+
+ switch(m_configFrameSize)
+ {
+ case 0:
+ args << "--framesize" << "2.5";
+ break;
+ case 1:
+ args << "--framesize" << "5";
+ break;
+ case 2:
+ args << "--framesize" << "10";
+ break;
+ case 3:
+ args << "--framesize" << "20";
+ break;
+ case 4:
+ args << "--framesize" << "40";
+ break;
+ case 5:
+ args << "--framesize" << "60";
+ break;
+ }
+
args << QString("--bitrate") << QString::number(qMax(0, qMin(500, m_configBitrate * 8)));
if(!metaInfo.fileName().isEmpty()) args << "--title" << metaInfo.fileName();
@@ -89,10 +127,7 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel &metaIn
bool bAborted = false;
int prevProgress = -1;
- QRegExp regExp("\\[(-|\\\\|/|\\|)\\]");
-
- //The Opus encoder doesn't flus it's status updates :-[
- emit statusUpdated(20 + (QUuid::createUuid().data1 % 60));
+ QRegExp regExp("\\[(-|\\\\|/|\\|)\\]\\s*(\\d+):(\\d+):(\\d+)");
while(process.state() != QProcess::NotRunning)
{
@@ -118,12 +153,19 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel &metaIn
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))
+ bool ok[3] = {false, false, false};
+ int h = regExp.cap(2).toInt(&ok[0]);
+ int m = regExp.cap(3).toInt(&ok[1]);
+ int s = regExp.cap(4).toInt(&ok[2]);
+ if(ok[0] && ok[1] && ok[2] && (fileDuration > 0))
{
- emit statusUpdated(progress);
- prevProgress = qMin(progress + 2, 99);
+ int filePosition = (h * 3600) + (m * 60) + s;
+ int newProgress = qRound((static_cast(filePosition) / static_cast(fileDuration)) * 100.0);
+ if(newProgress > prevProgress)
+ {
+ emit statusUpdated(newProgress);
+ prevProgress = qMin(newProgress + 2, 99);
+ }
}
}
else if(!text.isEmpty())
@@ -151,6 +193,21 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel &metaIn
return true;
}
+void OpusEncoder::setOptimizeFor(int optimizeFor)
+{
+ m_configOptimizeFor = qBound(0, optimizeFor, 2);
+}
+
+void OpusEncoder::setEncodeComplexity(int complexity)
+{
+ m_configEncodeComplexity = qBound(0, complexity, 10);
+}
+
+void OpusEncoder::setFrameSize(int frameSize)
+{
+ m_configFrameSize = qBound(0, frameSize, 5);
+}
+
QString OpusEncoder::extension(void)
{
return "opus";
@@ -178,3 +235,8 @@ const unsigned int *OpusEncoder::supportedBitdepths(void)
{
return NULL;
}
+
+const bool OpusEncoder::needsTimingInfo(void)
+{
+ return true;
+}
diff --git a/src/Encoder_Opus.h b/src/Encoder_Opus.h
index 4585e91c..9013f3fa 100644
--- a/src/Encoder_Opus.h
+++ b/src/Encoder_Opus.h
@@ -38,7 +38,16 @@ public:
virtual QString extension(void);
virtual const unsigned int *supportedChannelCount(void);
virtual const unsigned int *supportedBitdepths(void);
+ virtual const bool needsTimingInfo(void);
+
+ //Advanced options
+ virtual void setOptimizeFor(int optimizeFor);
+ virtual void setEncodeComplexity(int complexity);
+ virtual void setFrameSize(int frameSize);
private:
const QString m_binary;
+ int m_configOptimizeFor;
+ int m_configEncodeComplexity;
+ int m_configFrameSize;
};
diff --git a/src/Model_Settings.cpp b/src/Model_Settings.cpp
index 2b59ec35..affc8f06 100644
--- a/src/Model_Settings.cpp
+++ b/src/Model_Settings.cpp
@@ -101,6 +101,9 @@ LAMEXP_MAKE_ID(aftenExponentSearchSize, "AdvancedOptions/Aften/ExponentSearchSiz
LAMEXP_MAKE_ID(samplingRate, "AdvancedOptions/Common/Resampling");
LAMEXP_MAKE_ID(neroAACEnable2Pass, "AdvancedOptions/AACEnc/Enable2Pass");
LAMEXP_MAKE_ID(aacEncProfile, "AdvancedOptions/AACEnc/ForceProfile");
+LAMEXP_MAKE_ID(opusOptimizeFor, "AdvancedOptions/Opus/OptimizeForSignalType");
+LAMEXP_MAKE_ID(opusComplexity, "AdvancedOptions/Opus/EncodingComplexity");
+LAMEXP_MAKE_ID(opusFramesize, "AdvancedOptions/Opus/FrameSize");
LAMEXP_MAKE_ID(normalizationFilterEnabled, "AdvancedOptions/VolumeNormalization/Enabled");
LAMEXP_MAKE_ID(normalizationFilterMaxVolume, "AdvancedOptions/VolumeNormalization/MaxVolume");
LAMEXP_MAKE_ID(normalizationFilterEqualizationMode, "AdvancedOptions/VolumeNormalization/EqualizationMode");
@@ -378,6 +381,9 @@ LAMEXP_MAKE_OPTION_I(aftenAudioCodingMode, 0);
LAMEXP_MAKE_OPTION_I(aftenDynamicRangeCompression, 5);
LAMEXP_MAKE_OPTION_B(aftenFastBitAllocation, false);
LAMEXP_MAKE_OPTION_I(aftenExponentSearchSize, 8);
+LAMEXP_MAKE_OPTION_I(opusOptimizeFor, 0);
+LAMEXP_MAKE_OPTION_I(opusComplexity, 10);
+LAMEXP_MAKE_OPTION_I(opusFramesize, 3);
LAMEXP_MAKE_OPTION_B(normalizationFilterEnabled, false)
LAMEXP_MAKE_OPTION_I(normalizationFilterMaxVolume, -50)
LAMEXP_MAKE_OPTION_I(normalizationFilterEqualizationMode, 0);
diff --git a/src/Model_Settings.h b/src/Model_Settings.h
index fd8a3a4e..2a3da2fc 100644
--- a/src/Model_Settings.h
+++ b/src/Model_Settings.h
@@ -112,6 +112,9 @@ public:
LAMEXP_MAKE_OPTION_I(aftenDynamicRangeCompression);
LAMEXP_MAKE_OPTION_B(aftenFastBitAllocation);
LAMEXP_MAKE_OPTION_I(aftenExponentSearchSize);
+ LAMEXP_MAKE_OPTION_I(opusOptimizeFor);
+ LAMEXP_MAKE_OPTION_I(opusComplexity);
+ LAMEXP_MAKE_OPTION_I(opusFramesize);
LAMEXP_MAKE_OPTION_B(normalizationFilterEnabled);
LAMEXP_MAKE_OPTION_I(normalizationFilterMaxVolume);
LAMEXP_MAKE_OPTION_I(normalizationFilterEqualizationMode);
diff --git a/src/Thread_Process.cpp b/src/Thread_Process.cpp
index 94dd1f27..db6fa687 100644
--- a/src/Thread_Process.cpp
+++ b/src/Thread_Process.cpp
@@ -183,7 +183,7 @@ void ProcessThread::processFile()
//------------------------------------
if(bSuccess && !m_aborted && IS_WAVE(m_audioFile))
{
- if(m_encoder->supportedSamplerates() || m_encoder->supportedBitdepths() || m_encoder->supportedChannelCount() || !m_filters.isEmpty())
+ if(m_encoder->supportedSamplerates() || m_encoder->supportedBitdepths() || m_encoder->supportedChannelCount() || m_encoder->needsTimingInfo() || !m_filters.isEmpty())
{
m_currentStep = AnalyzeStep;
bSuccess = m_propDetect->detect(sourceFile, &m_audioFile, &m_aborted);
diff --git a/src/Tools.h b/src/Tools.h
index 3163ca75..2135cfc1 100644
--- a/src/Tools.h
+++ b/src/Tools.h
@@ -73,8 +73,8 @@ g_lamexp_tools[] =
{"0c019e13450dc664987e21f4e5489d182be7d6d0d81efbbaaf1c78693dfe3e38e0355b93", CPU_TYPE_X86_GEN, "oggenc2.i386.exe", 287603},
{"693dd6f779df70a047c15c2c79350855db38d5b0cd7e529b6877b7c821cfe6addfdd50a4", CPU_TYPE_X86_SSE, "oggenc2.sse2.exe", 287603},
{"291cedb6a1b213330a9cb508f975ee7132a25aa26770ab91cade50109b4ffb81c9bdd09a", CPU_TYPE_X64_ALL, "oggenc2.x64.exe", 287603},
- {"003b59fedf9f68a4b63402ee60031d878a323d9406dc535e612151170199490878142d85", CPU_TYPE_ALL_ALL, "opusdec.exe", 914},
- {"187deb9e43bfd96a6510e1f27c0894f0e8c8fa00285976039d22364ebe633251a1dbd1f7", CPU_TYPE_ALL_ALL, "opusenc.exe", 914},
+ {"73379e0d0d99a0faf0b061aa782ca807b4e6c11ad759e0662c10e197fe79a03f3bc8cbe4", CPU_TYPE_ALL_ALL, "opusdec.exe", 20120721},
+ {"7573a9e4b3d9c9a7e774bc6b2dceb939e097f1175a3afa8f8fe8cd7ee33afdd51d020443", CPU_TYPE_ALL_ALL, "opusenc.exe", 20120721},
{"58c2b8bcff8f27bfa8fab8172b80f5da731221d072c7dba4dd3a3d7d6423490a25dc6760", CPU_TYPE_ALL_ALL, "shorten.exe", 361},
{"017a0f613a962af0620618019b015d5c54bb3c07cf1023e5fdb9502b652367ebbfaaebbc", CPU_TYPE_ALL_ALL, "sox.exe", 1440},
{"48e7f81c024cd17dac0eaeab253aad6b223e72dc80688f7576276b0563209514ff0bb9c8", CPU_TYPE_ALL_ALL, "speexdec.exe", 12},