Upgraded build environment to Microsoft Visual Studio 2015 with Update-2
Fixed the location of temporary intermediate files for SoX-based audio effects
+
Fixed embedding of meta tags with OggEnc2 when reading directly from OGG/FLAC input file
Enabled the "built-in" resampler for QAAC encoder
The "Algorithm Quality" slider now also affects the QAAC encoder
Added "AVX" (Advanced Vector Extensions) to CPU feature detection code
@@ -95,6 +96,7 @@
Updated QAAC add-in to the to QAAC v2.58 (2016-01-05)
Updated FhgAacEnc add-in to "Case" edition (2015-10-24)
Updated ALAC decoder to refalac v1.58 (2016-01-05)
+
Improved auto-update function (faster Internet connectivity check)
LameXP v4.13 [2015-12-12]
diff --git a/doc/Changelog.md b/doc/Changelog.md
index bf8d6a41..6b48efa0 100644
--- a/doc/Changelog.md
+++ b/doc/Changelog.md
@@ -6,6 +6,7 @@
* Upgraded build environment to Microsoft Visual Studio 2015 with Update-2
* Fixed the location of temporary intermediate files for SoX-based audio effects
+* Fixed embedding of meta tags with OggEnc2 when reading directly from OGG/FLAC input file
* Enabled the "built-in" resampler for QAAC encoder
* The "Algorithm Quality" slider now also affects the QAAC encoder
* Added "AVX" (Advanced Vector Extensions) to CPU feature detection code
@@ -15,7 +16,7 @@
* Updated QAAC add-in to the to QAAC v2.58 (2016-01-05)
* Updated FhgAacEnc add-in to "Case" edition (2015-10-24)
* Updated ALAC decoder to refalac v1.58 (2016-01-05)
-
+* Improved auto-update function (faster Internet connectivity check)
## LameXP v4.13 [2015-12-12] ## {-}
diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts
index 644a53aa..208453a9 100644
--- a/etc/Translation/Blank.ts
+++ b/etc/Translation/Blank.ts
@@ -132,6 +132,7 @@
+ Released under the terms of the GNU Lesser General Public License.
@@ -322,26 +323,31 @@
- UPX - The Ultimate Packer for eXecutables
+ Netcat for NT - TCP/IP Swiss Army Knife
- Silk Icons - Over 700 icons in PNG format
-
-
-
-
- By Mark James, released under the Creative Commons 'by' License.
+ UPX - The Ultimate Packer for eXecutables
+ Silk Icons - Over 700 icons in PNG format
+
+
+
+
+ By Mark James, released under the Creative Commons 'by' License.
+
+
+
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.
-
+ n/a
@@ -3443,124 +3449,124 @@
-
-
+
+ Build
-
+ Unknown
-
+ Sorry, but only users in the "Administrators" group can install updates.
-
+ Please start application from an administrator account and try again!
-
+ Testing your internet connection, please wait...
-
+ It appears that the computer currently is offline!
-
-
+
+ Please make sure your computer is connected to the internet and try again.
-
+ Network connectivity test has failed!
-
+ Checking for new updates online, please wait...
-
+ Failed to fetch update information from server!
-
+ Sorry, the update server might be busy at this time. Plase try again later.
-
+ More information available at:
-
+ A new version of LameXP is available!
-
+ Discard
-
+ Ignore
-
+ Initializing, please wait...
-
+ We highly recommend all users to install this update as soon as possible.
-
+ No new updates available at this time.
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!
-
+ Your version appears to be newer than the latest release.
-
+ This usually indicates your are currently using a pre-release version of LameXP.
-
+ Update is being downloaded, please be patient...
-
+ Update ready to install. Applicaion will quit...
-
+ Update failed. Please try again or download manually!
diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts
index 0d4f4d6b..a2d9cb44 100644
--- a/etc/Translation/LameXP_DE.ts
+++ b/etc/Translation/LameXP_DE.ts
@@ -76,6 +76,7 @@
+ Released under the terms of the GNU Lesser General Public License.Veröffentlicht unter den Bestimmungen der GNU Lesser General Public License.
@@ -100,7 +101,12 @@
Offene und patentfreie Technlogie zur verlustfreien Audiokompression.
-
+
+ Netcat for NT - TCP/IP Swiss Army Knife
+
+
+
+ n/an/v
@@ -120,7 +126,7 @@
Veröffentlicht unter den Bestimmungen der GNU General Public License.
-
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.Das Urheberrecht an LameXP als Gesamtwerk liegt bei LoRd_MuldeR. Das Urheberrecht an der eingesetzten Drittsoftware liegt bei den jeweiligen Autoren.
@@ -281,12 +287,12 @@
Komplett offener, kostenloser und vielseitiger Audio Codec.
-
+ Silk Icons - Over 700 icons in PNG formatSilk Icons - Über 700 Symbole im PNG Format
-
+ By Mark James, released under the Creative Commons 'by' License.Von Mark James, veröffentlicht unter der Creative Commons 'by' Lizenz.
@@ -306,7 +312,7 @@
Besonderen Dank an:
-
+ UPX - The Ultimate Packer for eXecutables
@@ -3462,124 +3468,124 @@
Schließen
-
-
+
+ BuildBuild-Nummer
-
+ Testing your internet connection, please wait...Überprüfe Internetverbindung, bitte warten...
-
+ Network connectivity test has failed!Test der Netzwerkverbindung fehlgeschlagen!
-
+ Checking for new updates online, please wait...Suche online nach neuen Updates, bitte warten...
-
+ Failed to fetch update information from server!Fehler beim Holen der Update-Informationen vom Server!
-
+ Sorry, the update server might be busy at this time. Plase try again later.Der Server ist möglicherweise überlastet. Versuchen Sie es später noch einmal.
-
+ More information available at:Weitere Informationen verfügbar unter:
-
+ A new version of LameXP is available!Eine neue Version von LameXP ist verfügbar!
-
+ We highly recommend all users to install this update as soon as possible.Es wird dringend empfohlen, das Update schnellstmöglich zu installieren.
-
+ No new updates available at this time.Zu diesem Zeitpunkt sind keine Updates verfügbar.
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!Ihre Version von LameXP ist noch aktuell. Bitte suchen Sie regelmäßig nach Updates!
-
+ Your version appears to be newer than the latest release.Ihre Version ist neuer als die letzte veröffentlichte Version.
-
+ This usually indicates your are currently using a pre-release version of LameXP.Sie verwenden derzeit höchstwahrscheinlich eine Vorabversion von LameXP.
-
+ UnknownUnbekannt
-
+ Update is being downloaded, please be patient...Update wird heruntergeladen, bitte gedulden Sie sich...
-
+ Update ready to install. Applicaion will quit...Update ist bereit zur Installtion. Programm wird beendet...
-
+ Update failed. Please try again or download manually!Update fehlgeschlagen. Bitte versuchen Sie es noch einmal!
-
+ It appears that the computer currently is offline!Anscheinend ist der Computer momentan offline!
-
-
+
+ Please make sure your computer is connected to the internet and try again.Aktivieren Sie Ihre Internetverbindung und versuchen Sie es dann noch einmal.
-
+ Initializing, please wait...Initialisiere, bitte warten...
-
+ DiscardSchließen
-
+ IgnoreIgnorieren
-
+ Sorry, but only users in the "Administrators" group can install updates.Ausschließlich Benutzer der "Administratoren" Gruppe können Updates installieren.
-
+ Please start application from an administrator account and try again!Bitte starten Sie den Update-Prozess aus einem Administrator-Konto erneut!
diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts
index 16735b74..4fb7ada5 100644
--- a/etc/Translation/LameXP_ES.ts
+++ b/etc/Translation/LameXP_ES.ts
@@ -76,6 +76,7 @@
+ Released under the terms of the GNU Lesser General Public License.Distribuido bajo los términos de la Licencia Pública General Menor GNU.
@@ -100,7 +101,12 @@
Tecnología de codificación de audio sin pérdidas, abierta y libre de patentes.
-
+
+ Netcat for NT - TCP/IP Swiss Army Knife
+
+
+
+ n/an/d
@@ -120,7 +126,7 @@
Distribuido bajo los términos de la Licencia Pública General GNU.
-
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.LameXP tiene copyright de LoRd_MuldeR. El copyright del software de terceros usado en LameXP pertenece a sus autores individuales.
@@ -282,12 +288,12 @@
Codec de audio versátil, completamente abierto y libre de derechos de autor.
-
+ Silk Icons - Over 700 icons in PNG formatSilk Icons - Más de 700 iconos en formato PNG
-
+ By Mark James, released under the Creative Commons 'by' License.Por Mark James, liberado bajo licencia Creative Commons.
@@ -307,7 +313,7 @@
Agradecimientos a:
-
+ UPX - The Ultimate Packer for eXecutablesUPX - The Ultimate Packer for eXecutables
@@ -3462,124 +3468,124 @@
Cerrar
-
-
+
+ BuildBuild
-
+ UnknownDesconocida
-
+ Testing your internet connection, please wait...Comprobando su conexión de internet, espere por favor...
-
+ Network connectivity test has failed!¡La prueba de conexión a internet ha fallado!
-
+ Checking for new updates online, please wait...Comprobando en busca de nuevas actualizaciones, espere por favor...
-
+ Failed to fetch update information from server!¡No se ha podido obtener información de actualización desde el servidor!
-
+ Sorry, the update server might be busy at this time. Plase try again later.Disculpe, puede que el servidor este sobrecargado en estos momentos. Por favor, inténtelo más tarde.
-
+ More information available at:Más información disponible en:
-
+ A new version of LameXP is available!¡Hay una nueva versión de LameXP disponible!
-
+ We highly recommend all users to install this update as soon as possible.Recomendamos a todos los usuarios instalar esta actualización cuanto antes.
-
+ No new updates available at this time.No se ha encontrado ninguna actualización.
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!LameXP está actualizado. ¡Por favor, compruebe regularmente las actualizaciones!
-
+ Your version appears to be newer than the latest release.Su versión parece ser más reciente que la última versión publicada.
-
+ This usually indicates your are currently using a pre-release version of LameXP.Esto generalmente indica que está usando una versión pre-lanzamiento de LameXP.
-
+ Update is being downloaded, please be patient...Descargando actualización, espere por favor...
-
+ Update ready to install. Applicaion will quit...Actualización lista para instalar. La aplicación se cerrará...
-
+ Update failed. Please try again or download manually!Actualización fallida. ¡Por favor, vuelva a intentarlo o descárguelo manualmente!
-
+ It appears that the computer currently is offline!¡No está conectado a Internet!
-
-
+
+ Please make sure your computer is connected to the internet and try again.Por favor, asegurese de que tiene conexión a internet y vuelva a intentarlo.
-
+ Initializing, please wait...La inicialización, por favor espere ...
-
+ Discarddescartar
-
+ IgnoreIgnorar
-
+ Sorry, but only users in the "Administrators" group can install updates.Lo sentimos , pero sólo los usuarios del grupo "Administradores" se pueden instalar las actualizaciones.
-
+ Please start application from an administrator account and try again!Por favor, iniciar la aplicación desde una cuenta de administrador y vuelva a intentarlo!
diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts
index 8ccaad49..ccade46d 100644
--- a/etc/Translation/LameXP_FR.ts
+++ b/etc/Translation/LameXP_FR.ts
@@ -76,6 +76,7 @@
+ Released under the terms of the GNU Lesser General Public License.Distribué sous les termes de la licence publique générale GNU Leser.
@@ -101,7 +102,12 @@
Technologie de compression audio sans perte ouverte et libre de brevets.
-
+
+ Netcat for NT - TCP/IP Swiss Army Knife
+
+
+
+ n/an/a
@@ -121,7 +127,7 @@
Distribué sous les termes de la License General Public GNU.
-
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.LameXP dans son ensemble est protégé par LoRd_MuldeR. Les droits d'auteur des logiciels de tiers utilisés dans LameXP appartiennent aux auteurs individuels.
@@ -285,12 +291,12 @@
Codec audio totalement ouvert, libres, très polyvalent.
-
+ Silk Icons - Over 700 icons in PNG formatSilk Icons - Plus de 700 icônes au format PNG
-
+ By Mark James, released under the Creative Commons 'by' License.Par Mark James, distribué sous la licence Creative Commons.
@@ -310,7 +316,7 @@
Grand merci à :
-
+ UPX - The Ultimate Packer for eXecutablesUPX - The Ultimate Packer for eXecutable
@@ -3472,124 +3478,124 @@ Ouvrir le dossier récursivement...
Fermer
-
-
+
+ BuildBuild
-
+ UnknownInconnu
-
+ Testing your internet connection, please wait...Test de votre connexion internet, patientez...
-
+ Network connectivity test has failed!Le test de connectivité réseau a échoué!
-
+ Checking for new updates online, please wait...Vérification des nouvelles mises à jour en ligne, patientez...
-
+ Failed to fetch update information from server!L'extraction des informations de mise à jour sur le serveur a échoué!
-
+ Sorry, the update server might be busy at this time. Plase try again later.Désolé, le serveur de mise à jour peut être occupé en ce moment. Veuillez réessayer plus tard.
-
+ More information available at:Plus d'informations disponibles sur:
-
+ A new version of LameXP is available!Une nouvelle version de LameXP est disponible!
-
+ We highly recommend all users to install this update as soon as possible.Nous recommandons fortement à tous les utilisateurs d'installer cette mise à jour dès que possible.
-
+ No new updates available at this time.Aucune nouvelle mise à jour disponible en ce moment.
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!Votre version de LameXP est toujours à jour. Veuillez vérifier les mises à jour régulièrement!
-
+ Your version appears to be newer than the latest release.Il semble que votre version soit plus récente que la dernière version disponible.
-
+ This usually indicates your are currently using a pre-release version of LameXP.Cela indique généralement que vous utilisez actuellement une pré-version de LameXP.
-
+ Update is being downloaded, please be patient...La mise à jour est en cours de téléchargement, veuillez patienter...
-
+ Update ready to install. Applicaion will quit...La mise à jour est prête à être installée. L'application doit se fermer...
-
+ Update failed. Please try again or download manually!La mise à jour a échoué. Veuillez essayer à nouveau ou télécharger manuellement !
-
+ It appears that the computer currently is offline!Il semble que l'ordinateur est actuellement hors connexion !
-
-
+
+ Please make sure your computer is connected to the internet and try again.Veuillez vous assurer que votre ordinateur est connecté à internet et essayez à nouveau.
-
+ Initializing, please wait...Initialisation, patientez...
-
+ DiscardAbandonner
-
+ IgnoreIgnorer
-
+ Sorry, but only users in the "Administrators" group can install updates.Désolé, mais seuls les « Administrateurs » peuvent installer les mises à jour.
-
+ Please start application from an administrator account and try again!Veuillez démarrer l'application depuis un compte administrateur, puis réessayez !
diff --git a/etc/Translation/LameXP_HU.ts b/etc/Translation/LameXP_HU.ts
index 5b518108..f3cfe364 100644
--- a/etc/Translation/LameXP_HU.ts
+++ b/etc/Translation/LameXP_HU.ts
@@ -132,6 +132,7 @@
+ Released under the terms of the GNU Lesser General Public License.Kiadva a GNU Kevésbé általános közreadási szerződés feltételei alapján
@@ -322,26 +323,31 @@
+ Netcat for NT - TCP/IP Swiss Army Knife
+
+
+
+ UPX - The Ultimate Packer for eXecutablesUPX - Végrehajtható állomány tömörítő
-
+ Silk Icons - Over 700 icons in PNG formatSilk ikonok - Több mint 700 ikon PNG formátumban
-
+ By Mark James, released under the Creative Commons 'by' License.Mark James által kiadva a Creative Commons 'by' License alatt.
-
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.A LameXP szerzői joga teljes egészében LoRd_MuldeR-hez tartozik. A LameXP-ben használt 3. féltől szármató szoftverek szerzői jogai az egyes szerzőkhöz tartoznak.
-
+ n/an/a
@@ -3443,124 +3449,124 @@
Bezárás
-
-
+
+ BuildBuild
-
+ UnknownIsmeretlen
-
+ Sorry, but only users in the "Administrators" group can install updates.Sajnáljuk, de csak a "Rendszergazda" csoportba tartozó felhasználók telepíthetik a frissítéseket.
-
+ Please start application from an administrator account and try again!Kérjük, indítsa az alkalmazást rendszergazdai fiók alól, majd próbálja újra!
-
+ Testing your internet connection, please wait...Internetkapcsolat tesztelése, kis türelmet...
-
+ It appears that the computer currently is offline!Úgy tűnik, hogy a számítógép jelenleg nem elérhető!
-
-
+
+ Please make sure your computer is connected to the internet and try again.Kérjük, ellenőrizze a hálózati kapcsolatot, majd próbálja újra.
-
+ Network connectivity test has failed!A hálózati kapcsolat tesztelése sikertelen volt
-
+ Checking for new updates online, please wait...Új frissítések ellenőrzése az interneten, kis türelmet...
-
+ Failed to fetch update information from server!Nem sikerült lekérni a frissítési információkat a kiszolgálóról!
-
+ Sorry, the update server might be busy at this time. Plase try again later.Sajnáljuk, a frissítési szerver jelenleg nem érhető el. Kérjük, próbálja meg később.
-
+ More information available at:További információk:
-
+ A new version of LameXP is available!Új LameXP verzió érhető el!
-
+ DiscardElvetés
-
+ IgnoreKihagyás
-
+ Initializing, please wait...Inicializálás, kis türelmet...
-
+ We highly recommend all users to install this update as soon as possible.Javasoljuk, hogy minden felhasználó, hogy a lehető leghamarabb telepítse ezt a frissítést.
-
+ No new updates available at this time.Jelenleg nem érhető el új frissítés.
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!Ön jelenleg a legfrissebb LameXP verzióval rendelkezik. Kérjük, ellenőrizze rendszeresen a frissítéseket!
-
+ Your version appears to be newer than the latest release.Az Ön verziója újabbnak tűnik, mint a legújabb kiadás.
-
+ This usually indicates your are currently using a pre-release version of LameXP.Ez általában azt jelzi, hogy Ön jelenleg a LameXP előzetesen kiadott változatát használja.
-
+ Update is being downloaded, please be patient...A frissítés letöltése folyamatban van, kis türelmét kérjük...
-
+ Update ready to install. Applicaion will quit...A frissítés készen áll a telepítésre. Az alkalmazás most kilép...
-
+ Update failed. Please try again or download manually!A frissítés sikertelen volt. Próbálja újra, vagy töltse le manuálisan!
diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts
index 3e2c146e..c32169ec 100644
--- a/etc/Translation/LameXP_IT.ts
+++ b/etc/Translation/LameXP_IT.ts
@@ -77,6 +77,7 @@
+ Released under the terms of the GNU Lesser General Public License.Rilasciato nei termini della GNU Lesser General Public License.
@@ -104,7 +105,12 @@
Tecnologia di compressione audio lossless aperta e libera da brevetti.
-
+
+ Netcat for NT - TCP/IP Swiss Army Knife
+
+
+
+ n/an/a
@@ -126,7 +132,7 @@
Rilasciato nei termini della GNU General Public License.
-
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.utilizzatiIl copyright di LameXP nel suo complesso appartiene a LoRd_MuldeR. Il copyright del software di terze parti usati in LameXP appartiene ai singoli autori.
@@ -296,13 +302,13 @@
Codec audio totalmente aperto, gratuito, estremamente versatile.
-
+ Silk Icons - Over 700 icons in PNG formatOltreIcone Silk - Più di 700 icone in formato PNG
-
+ By Mark James, released under the Creative Commons 'by' License.Di Mark James, rilasciato su licenza Creative Commons.
@@ -322,7 +328,7 @@
Un ringraziamento speciale a:
-
+ UPX - The Ultimate Packer for eXecutablesUPX - The Ultimate Packer for eXecutables
@@ -3531,124 +3537,124 @@
Chiudi
-
-
+
+ BuildVersione
-
+ Testing your internet connection, please wait...Test della tua connessione internet, attendere prego...
-
+ Network connectivity test has failed!Il test di connessione di rete è fallito!
-
+ Checking for new updates online, please wait...Ricerca di nuovi aggiornamenti in rete, attendere prego...
-
+ Failed to fetch update information from server!Lettura delle informazioni sugli aggiornamenti dal server fallita!
-
+ Sorry, the update server might be busy at this time. Plase try again later.Spiacente, il server per gli aggiornamenti potrebbe essere attualmente occupato. Per favore riprova più tardi.
-
+ More information available at:Maggiori informazioni disponibili su:
-
+ A new version of LameXP is available!Una nuova versione di LameXP è disponibile!
-
+ We highly recommend all users to install this update as soon as possible.Raccomandiamo caldamente tutti gli utenti di installare questo aggiornamento il prima possibile.
-
+ No new updates available at this time.Nessun nuovo aggiornamento disponibile in questo momento.
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!La tua versione di LameXP è ancora aggiornata. Per favore controlla regolarmente per aggiornamenti!
-
+ Your version appears to be newer than the latest release.La tua versione sembra essere più recente dell'ultima rilasciata.
-
+ This usually indicates your are currently using a pre-release version of LameXP.Questo di solito indica che attualmente stai usando una versione pre-rilascio di LameXP.
-
+ UnknownSconosciuto
-
+ Update is being downloaded, please be patient...E'in corso lo scaricamento dell'aggiornamento, sei pregato di pazientare...
-
+ Update ready to install. Applicaion will quit...Aggiornamento pronto per l'installazione. L'Applicazione si chiuderà...
-
+ Update failed. Please try again or download manually!Aggiornamento fallito. Per favore, prova ancora, o aggiorna manualmente!
-
+ It appears that the computer currently is offline!Sembra che il computer al momento non sia collegato alla rete!
-
-
+
+ Please make sure your computer is connected to the internet and try again.Assicurati che il tuo computer sia connesso a Internet e riprova.
-
+ Initializing, please wait...Inizializzazione, attendere prego...
-
+ DiscardAnnulla
-
+ IgnoreIgnora
-
+ Sorry, but only users in the "Administrators" group can install updates.Ci dispiace, ma solo gli utenti del gruppo "Amministratori" possono installare gli aggiornamenti.
-
+ Please start application from an administrator account and try again!Si prega di avviare l'applicazione da un account di amministratore e riprovare!
diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts
index b86b96a7..9111a6dc 100644
--- a/etc/Translation/LameXP_KR.ts
+++ b/etc/Translation/LameXP_KR.ts
@@ -86,6 +86,7 @@
+ Released under the terms of the GNU Lesser General Public License.GNU 약소 일반 공중 사용 허가서의 약관 하에 출시됨.
@@ -200,12 +201,17 @@
GNU Wget - HTTP를 사용하여 파일을 검색하기 위한 소프트웨어
-
+
+ Netcat for NT - TCP/IP Swiss Army Knife
+
+
+
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.LameXP 전체의 저작권은 LoRd_MuldeR에게 있습니다. LameXP에 사용된 타사 소프트웨어는 각 소프트웨어의 저작자에게 저작권이 있습니다.
-
+ n/a없음
@@ -281,12 +287,12 @@
완전 오픈 소스, 저작권 사용료 무료, 매우 다목적 오디오 코덱.
-
+ Silk Icons - Over 700 icons in PNG format실크 아이콘 - PNG 형식의 700 이상의 아이콘
-
+ By Mark James, released under the Creative Commons 'by' License.By Mark James, 크리에이티브 커먼스 'by' 라이센스 따라 출시됨.
@@ -306,7 +312,7 @@
특별히 감사합니다:
-
+ UPX - The Ultimate Packer for eXecutablesUPX - The Ultimate Packer for eXecutables
@@ -3443,124 +3449,124 @@
닫기
-
-
+
+ BuildBuild
-
+ Unknown알 수 없음
-
+ Testing your internet connection, please wait...인터넷 연결 테스트 중, 잠시만 기다려 주십시오...
-
+ Network connectivity test has failed!네트워크 연결 테스트가 실패되었습니다!
-
+ Checking for new updates online, please wait...새로운 업데이트 확인 중, 잠시만 기다려 주십시오...
-
+ Failed to fetch update information from server!서버로부터 업데이트 정보를 불러오기가 실패되었습니다!
-
+ Sorry, the update server might be busy at this time. Plase try again later.죄송하지만, 업데이트 서버가 폭주 상태입니다. 나중에 다시 시도하시기 바랍니다.
-
+ More information available at:추가 정보 링크:
-
+ A new version of LameXP is available!LameXP의 새 버전을 사용할 수 있습니다!
-
+ We highly recommend all users to install this update as soon as possible.이 업데이트를 신속히 설치하시길 모든 사용자들에게 권장합니다.
-
+ No new updates available at this time.사용 가능한 새로운 업데이트가 없습니다.
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!LameXP의 최신 버전입니다. 자주 업데이트를 확인하여 주십시오!
-
+ Your version appears to be newer than the latest release.현재 설치된 버전이 최신 출시 버전 보다 더 최신인 것 같습니다.
-
+ This usually indicates your are currently using a pre-release version of LameXP.이런 경우는 LameXP의 시험판 사용을 의미합니다.
-
+ Update is being downloaded, please be patient...업데이트를 내려받고 있습니다. 잠시만 기다려주십시오...
-
+ Update ready to install. Applicaion will quit...업데이트 설치 준비. 프로그램이 종료됩니다...
-
+ Update failed. Please try again or download manually!업데이트 실패. 다시 시도하거나 업데이트를 수동으로 내려받으시기 바랍니다!
-
+ It appears that the computer currently is offline!현재 컴퓨터가 인터넷에 연결되어 있지 않은 걸로 보입니다!
-
-
+
+ Please make sure your computer is connected to the internet and try again.인터넷 연결을 확인하고 다시 시도하시기 바랍니다.
-
+ Initializing, please wait...초기화 중, 잠시만 기다려 주십시오...
-
+ Discard닫기
-
+ Ignore무시
-
+ Sorry, but only users in the "Administrators" group can install updates.죄송하지만 관리자 그룹의 사용자들만 업데이트를 설치할 수 있습니다.
-
+ Please start application from an administrator account and try again!프로그램을 관리자 권한으로 시작한 다음 다시 시도하시기 바랍니다!
diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts
index 224b0055..be28dffb 100644
--- a/etc/Translation/LameXP_PL.ts
+++ b/etc/Translation/LameXP_PL.ts
@@ -132,6 +132,7 @@
+ Released under the terms of the GNU Lesser General Public License.Wydane na warunkach licencji GNU Lesser General Public License.
@@ -322,26 +323,31 @@
+ Netcat for NT - TCP/IP Swiss Army Knife
+
+
+
+ UPX - The Ultimate Packer for eXecutablesUPX - The Ultimate Packer for eXecutables
-
+ Silk Icons - Over 700 icons in PNG formatSilk Icons - Ponad 700 ikon w formacie PNG
-
+ By Mark James, released under the Creative Commons 'by' License.Autorstwa Mark James, wydane na licencji Creative Commons.
-
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.Do programu LameXP jako całości, prawa autorskie posiada LoRd_MuldeR. Prawa autorskie oprogramowania firm trzecich należą do autorów poszczególnych programów.
-
+ n/an/d
@@ -3480,124 +3486,124 @@
Zamknij
-
-
+
+ BuildBuild
-
+ UnknownNieznana
-
+ Sorry, but only users in the "Administrators" group can install updates.Tylko użytkownicy z grupy "Administratorów" mogą instalować aktualizacje.
-
+ Please start application from an administrator account and try again!Proszę uruchomić aplikację z konta administratora i spróbować ponownie!
-
+ Testing your internet connection, please wait...Testowanie połączenia internetowego, proszę czekać...
-
+ It appears that the computer currently is offline!LameXP wykrył brak dostępu do internetu!
-
-
+
+ Please make sure your computer is connected to the internet and try again.Upewnij się że komputer jest podłączony do internetu i spróbuj ponownie.
-
+ Network connectivity test has failed!Test połączenia internetowego zakończony niepowodzeniem!
-
+ Checking for new updates online, please wait...Sprawdzanie aktualizacji online, proszę czekać...
-
+ Failed to fetch update information from server!Pobieranie informacji z serwera zakończone niepowodzeniem!
-
+ Sorry, the update server might be busy at this time. Plase try again later.Serwer aktualizacji wydaje się nie odpowiadać w tej chwili. Proszę spróbować później.
-
+ More information available at:Więcej informacji tutaj:
-
+ A new version of LameXP is available!Dostępna nowa wersja LameXP!
-
+ DiscardOdrzuć
-
+ IgnoreIgnoruj
-
+ Initializing, please wait...Inicjowanie, proszę czekać...
-
+ We highly recommend all users to install this update as soon as possible.Jest wysoce zalecane aby zainstalować tę aktualizację jak najszybciej.
-
+ No new updates available at this time.Nie ma nowej wersji w tej chwili.
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!Posiadasz najnowszą wersję LameXP. Sprawdzaj aktualizacje regularnie!
-
+ Your version appears to be newer than the latest release.Posiadasz nowszą wersję LameXP niż ostatnie wydanie.
-
+ This usually indicates your are currently using a pre-release version of LameXP.To wskazuje na to, że posiadasz wersję alfa LameXP.
-
+ Update is being downloaded, please be patient...Pobieranie aktualizacji w toku, proszę czekać...
-
+ Update ready to install. Applicaion will quit...Aktualizacja gotowa do instalacji. Teraz program zostanie zamknięty...
-
+ Update failed. Please try again or download manually!Aktualizacja zakończona niepowodzeniem. Proszę spróbować ponownie lub zainstalować ręcznie!
diff --git a/etc/Translation/LameXP_RU.ts b/etc/Translation/LameXP_RU.ts
index d53a26b0..0d6db113 100644
--- a/etc/Translation/LameXP_RU.ts
+++ b/etc/Translation/LameXP_RU.ts
@@ -88,6 +88,7 @@
+ Released under the terms of the GNU Lesser General Public License.Распространяется на условиях GNU Lesser General Public License.
@@ -202,12 +203,17 @@
GNU Wget - программное обеспечение для получения файлов через HTTP
-
+
+ Netcat for NT - TCP/IP Swiss Army Knife
+
+
+
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.Программа LameXP защищена авторским правом LoRd_MuldeR. Авторское право на программное обеспечение третьих сторон, используемое в LameXP, принадлежит индивидуальным авторам.
-
+ n/aн/д
@@ -283,12 +289,12 @@
Полностью открытый, безвозмездный, очень разносторонний аудио кодек.
-
+ Silk Icons - Over 700 icons in PNG formatSilk Icons - Более 700 значков в формате PNG
-
+ By Mark James, released under the Creative Commons 'by' License.Создал Mark James, распространяется по лицензии Creative Commons.
@@ -308,7 +314,7 @@
Отдельная благодарность:
-
+ UPX - The Ultimate Packer for eXecutables
@@ -3487,126 +3493,126 @@
Закрыть
-
-
+
+ BuildСборка
-
+ UnknownНеизвестно
-
+ Testing your internet connection, please wait...Проверяю соединение с сетью, пожалуйста, подождите...
-
+ Network connectivity test has failed!Нет соединения с сетью!
-
+ Checking for new updates online, please wait...Проверяю обновления, пожалуйста, подождите...
-
+ Failed to fetch update information from server!Не могу получить информацию об обновлениях с сервера!
-
+ Sorry, the update server might be busy at this time. Plase try again later.Извините, сервер обновлений сейчас недоступен. Пожалуйста, попробуйте позднее.
-
+ More information available at:Подробная информация здесь:
-
+ A new version of LameXP is available!Доступна новя версия LameXP!
-
+ We highly recommend all users to install this update as soon as possible.A nasty typo correctedНастоятельно рекомендуем установить это обновление как можно скорее.
-
+ No new updates available at this time.На данный момент обновлений нет.
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!Вы используете самую новую версию. Проверяйте обновления регулярно!
-
+ Your version appears to be newer than the latest release.Установленная версия новее чем последний релиз.
-
+ This usually indicates your are currently using a pre-release version of LameXP.Это обычно значит, что вы используете бета версию LameXP.
-
+ Update is being downloaded, please be patient...Скачиваю обновление...
-
+ Update ready to install. Applicaion will quit...Обновление готово к установке. Завершение приложения...
-
+ Update failed. Please try again or download manually!Фак май майндНе могу установить обновление в автоматическом режиме. Повторите попытку или установите обновление вручную!
-
+ It appears that the computer currently is offline!Похоже компьютер не подключен к интернету!
-
-
+
+ Please make sure your computer is connected to the internet and try again.Пожалуйста, проверьте, что ваш компьютер подключен к интернету и попробуйте снова.
-
+ Initializing, please wait...Инициализация, пожалуйста, подождите...
-
+ DiscardОтменить
-
+ IgnoreИгнорировать
-
+ Sorry, but only users in the "Administrators" group can install updates.Извините, но только пользователи из группы "Администраторы" могут устанавливать обновления.
-
+ Please start application from an administrator account and try again!Пожалуйста, запустите приложение с правами администратора и попробуйте снова!
diff --git a/etc/Translation/LameXP_SV.ts b/etc/Translation/LameXP_SV.ts
index 2b9ce045..1cd0b4a6 100644
--- a/etc/Translation/LameXP_SV.ts
+++ b/etc/Translation/LameXP_SV.ts
@@ -132,6 +132,7 @@
+ Released under the terms of the GNU Lesser General Public License.Släppt under Gnu Lesser General Public License.
@@ -322,26 +323,31 @@
+ Netcat for NT - TCP/IP Swiss Army Knife
+
+
+
+ UPX - The Ultimate Packer for eXecutablesUPX - Den ultimata paketeraren för exekverbara filer
-
+ Silk Icons - Over 700 icons in PNG formatSilk Icons - Över 700 iconer i PNG-format
-
+ By Mark James, released under the Creative Commons 'by' License.Av Mark James, publicerad under Creative Commons 'by' Licens.
-
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.
-
+ n/an/a
@@ -3463,124 +3469,124 @@
Stäng
-
-
+
+ BuildBuild
-
+ UnknownOkänd
-
+ Sorry, but only users in the "Administrators" group can install updates.Endast administratörer kan installera uppdayteringar.
-
+ Please start application from an administrator account and try again!Starta programmet från ett administratörskonto och försök igen!
-
+ Testing your internet connection, please wait...Kontrollerar internetanslutningen, vänta...
-
+ It appears that the computer currently is offline!Datorn verkar inte vara ansluten till internet!
-
-
+
+ Please make sure your computer is connected to the internet and try again.Tillse att datorn är ansluten till internet och försök igen.
-
+ Network connectivity test has failed!Anslutningskontrollen misslyckades!
-
+ Checking for new updates online, please wait...Söker nya uppdateringar, vänta...
-
+ Failed to fetch update information from server!Kunde inte hämta uppdateringsinformation från servern!
-
+ Sorry, the update server might be busy at this time. Plase try again later.Uppdateringsservern kan vara upptagen. Försök senare.
-
+ More information available at:Mer information hittas på:
-
+ A new version of LameXP is available!En ny version av LameXP finns tillgänglig!
-
+ DiscardStäng
-
+ IgnoreHoppa över
-
+ Initializing, please wait...Startar! Vänta...
-
+ We highly recommend all users to install this update as soon as possible.Vi rekommenderar alla användare att installera denna uppdatering så snart som möjligt.
-
+ No new updates available at this time.Det finns inga nya uppdateringar.
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!Din version av LameXP är uppdaterad. Kontrollera regelbundet!
-
+ Your version appears to be newer than the latest release.Din version verkar vara nyare än senaste 'Release'.
-
+ This usually indicates your are currently using a pre-release version of LameXP.Det innebär normalt att du använder en beta-version av LameXP.
-
+ Update is being downloaded, please be patient...Uppdatering laddas ner, vänta...
-
+ Update ready to install. Applicaion will quit...Uppdatering klar att installeras. Programmet kommer att avslutas...
-
+ Update failed. Please try again or download manually!Uppdateringen misslyckades. Försök igen, eller ladda ner manuellt!
diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts
index 95db3f70..282a6f52 100644
--- a/etc/Translation/LameXP_TW.ts
+++ b/etc/Translation/LameXP_TW.ts
@@ -76,6 +76,7 @@
+ Released under the terms of the GNU Lesser General Public License.GNU 較小的通用公共許可的條款下發布.
@@ -100,7 +101,12 @@
打開和專利自由無損音頻壓縮技術.
-
+
+ Netcat for NT - TCP/IP Swiss Army Knife
+
+
+
+ n/an/a
@@ -236,7 +242,7 @@
avs2wav - Avisynth到WAV音頻轉換器
-
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.LameXP是作為一個整體版權由 LoRd_MuldeR 保護.在 LameXP 中使用的第三方軟件作著權屬于第三方.
@@ -281,12 +287,12 @@
完全開放的,免版稅的,高度靈活的音頻編解碼器.
-
+ Silk Icons - Over 700 icons in PNG formatSilk圖標 - 超過700 PNG格式的圖標
-
+ By Mark James, released under the Creative Commons 'by' License.馬克詹姆斯,在知識共享授權下發布.
@@ -306,7 +312,7 @@
特別感謝:
-
+ UPX - The Ultimate Packer for eXecutablesUPX - 終極可執行程序文件壓縮器
@@ -3443,124 +3449,124 @@
關閉
-
-
+
+ Build生成
-
+ Unknown未知
-
+ Testing your internet connection, please wait...測試您的 Internet 連接,請稍候...
-
+ Network connectivity test has failed!網絡連接測試失敗 !
-
+ Checking for new updates online, please wait...在線更新檢查新的版本,請稍候...
-
+ Failed to fetch update information from server!無法從服務器獲取更新信息 !
-
+ Sorry, the update server might be busy at this time. Plase try again later.抱歉,更新服務器可能在這一次忙.請稍后再試.
-
+ More information available at:在可用的詳細信息:
-
+ A new version of LameXP is available!發現一個可用的新版本 LameXP !
-
+ We highly recommend all users to install this update as soon as possible.我們強烈建議所有的用戶,要盡快安裝此更新.
-
+ No new updates available at this time.這個時候沒有發現新的可用更新.
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!您的 LameXP 版本是仍然最新的.請定期檢查更新 !
-
+ Your version appears to be newer than the latest release.您的版本似乎是比最新的版本新.
-
+ This usually indicates your are currently using a pre-release version of LameXP.這通常表示您當前正在使用的 LameXP 預發布版.
-
+ Update is being downloaded, please be patient...正在下載更新,請耐心等待...
-
+ Update ready to install. Applicaion will quit...準備好安裝更新.應用程序將退出...
-
+ Update failed. Please try again or download manually!更新失敗.請再試一次或手動下載 !
-
+ It appears that the computer currently is offline!看來,目前的計算機處于脫機狀態!
-
-
+
+ Please make sure your computer is connected to the internet and try again.請確保您的計算機連接到 Internet,然后重試.
-
+ Initializing, please wait...正在初始化,請稍候...
-
+ Discard放棄
-
+ Ignore忽略
-
+ Sorry, but only users in the "Administrators" group can install updates.抱歉,只有"Administrators"組的用戶能夠安裝更新。
-
+ Please start application from an administrator account and try again!請以管理員身份運行程序并重試!
diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts
index e406f8f1..db05501f 100644
--- a/etc/Translation/LameXP_UK.ts
+++ b/etc/Translation/LameXP_UK.ts
@@ -86,6 +86,7 @@
+ Released under the terms of the GNU Lesser General Public License.Випущено під ліцензією GNU Lesser General Public License.
@@ -200,12 +201,17 @@
GNU Wget - Software for retrieving files using HTTP
-
+
+ Netcat for NT - TCP/IP Swiss Army Knife
+
+
+
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.Всі права на LameXP належать LoRd_MuldeR. Права на стороннє ПЗ, що використовується в LameXP, належать авторам цього ПЗ.
-
+ n/aне доступно
@@ -282,12 +288,12 @@
Повністю відкритий, вільний від ліцензійних виплат, універсальний кодек аудіо.
-
+ Silk Icons - Over 700 icons in PNG formatSilk Icons - Більш ніж 700 іконок у форматі PNG
-
+ By Mark James, released under the Creative Commons 'by' License.За участі Mark James, випускається під ліцензією Creative Commons.
@@ -307,7 +313,7 @@
Окрема подяка:
-
+ UPX - The Ultimate Packer for eXecutablesUPX - The Ultimate Packer for eXecutables
@@ -3480,124 +3486,124 @@
Вийти
-
-
+
+ BuildЗбірка
-
+ UnknownНевідомо
-
+ Testing your internet connection, please wait...Йде перевірка вашого інтернет-з'єднання, будь ласка, зачекайте...
-
+ Network connectivity test has failed!Збій перевірки мережевого з'єднання!
-
+ Checking for new updates online, please wait...Йде перевірка оновлень онлайн, будь ласка, зачекайте...
-
+ Failed to fetch update information from server!Збій отримання інформації про оновлення з серверу!
-
+ Sorry, the update server might be busy at this time. Plase try again later.Вибачте, але можливо сервер оновлень в даний час завантажений. Будь ласка, спробуйте знову пізніше.
-
+ More information available at:Більше інформації можна отримати:
-
+ A new version of LameXP is available!Доступна нова версія LameXP!
-
+ We highly recommend all users to install this update as soon as possible.Ми рекомендуємо всім користувачам встановити це оновлення якнайшвидше.
-
+ No new updates available at this time.На даний час нових оновлень немає.
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!Версія LameXP, яку ви використовуєте, є актуальною. Будь ласка, перевіряйте наявність оновлень регулярно!
-
+ Your version appears to be newer than the latest release.Версія LameXP, яку ви використовуєте, є новішою за останній реліз.
-
+ This usually indicates your are currently using a pre-release version of LameXP.Це зазвичай означає, що зараз використовуєте перед-релізну (тестову) версію LameXP.
-
+ It appears that the computer currently is offline!Ймовірно, що зараз комп'ютер не в мережі!
-
-
+
+ Please make sure your computer is connected to the internet and try again.Будь ласка, впевніться, що ваш комп'ютер під'єднано до мережі інтернет і спробуйте знову.
-
+ Update is being downloaded, please be patient...Йде завантаження оновлення, будь ласка, зачекайте...
-
+ Update ready to install. Applicaion will quit...Оновлення готове до встановлення. Буде здйснено закриття додатку...
-
+ Update failed. Please try again or download manually!Збій оновлення. Будь ласка, спробуйте ще раз або завантажте оновлення самостійно!
-
+ Initializing, please wait...Ініціалізація, будь ласка, зачекайте...
-
+ DiscardВідмінити
-
+ IgnoreІгнорувати
-
+ Sorry, but only users in the "Administrators" group can install updates.Вибачте, але лише користувачі з групи "Адміністратори" можуть встановлювати оновлення.
-
+ Please start application from an administrator account and try again!Будь ласка, запустіть додаток від імені адміністративного облікового запису і спробуйте ще раз!
diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts
index e3075ad8..1e0eb468 100644
--- a/etc/Translation/LameXP_ZH.ts
+++ b/etc/Translation/LameXP_ZH.ts
@@ -76,6 +76,7 @@
+ Released under the terms of the GNU Lesser General Public License.在GNU宽通用公共许可证的条款下发布。
@@ -100,7 +101,12 @@
开放和无专利的无损音频压缩技术。
-
+
+ Netcat for NT - TCP/IP Swiss Army Knife
+
+
+
+ n/an/a
@@ -236,7 +242,7 @@
avs2wav - Avisynth到WAV音频转换器
-
+ The copyright of LameXP as a whole belongs to LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.LameXP的版权作为一个整体属于LoRd_MuldeR。在 LameXP 中使用的第三方软件著作权属于原作者。
@@ -281,12 +287,12 @@
完全开放的,免版税的,高度灵活的音频编解码器。
-
+ Silk Icons - Over 700 icons in PNG formatSilk图标 - 超过700个PNG格式的图标
-
+ By Mark James, released under the Creative Commons 'by' License.Mark James在知识共享授权下发布。
@@ -306,7 +312,7 @@
特别感谢:
-
+ UPX - The Ultimate Packer for eXecutablesUPX - 终极可执行程序文件压缩器
@@ -3443,124 +3449,124 @@
关闭
-
-
+
+ BuildBuild
-
+ Unknown未知
-
+ Testing your internet connection, please wait...测试您的 Internet 连接,请稍候...
-
+ Network connectivity test has failed!网络连接测试失败 !
-
+ Checking for new updates online, please wait...在线检查新的版本,请稍候...
-
+ Failed to fetch update information from server!无法从服务器获取更新信息!
-
+ Sorry, the update server might be busy at this time. Plase try again later.抱歉,更新服务器可能正忙。请稍后再试。
-
+ More information available at:更多详细信息:
-
+ A new version of LameXP is available!发现一个可用的新版本 LameXP !
-
+ We highly recommend all users to install this update as soon as possible.我们强烈建议所有的用户尽快安装此更新。
-
+ No new updates available at this time.没有发现新的可用更新。
-
+ Your version of LameXP is still up-to-date. Please check for updates regularly!您的 LameXP 版本仍然是最新的。请定期检查更新!
-
+ Your version appears to be newer than the latest release.您的版本似乎比最新的版本新。
-
+ This usually indicates your are currently using a pre-release version of LameXP.这通常表示您当前正在使用 LameXP 预发布版。
-
+ Update is being downloaded, please be patient...正在下载更新,请耐心等待...
-
+ Update ready to install. Applicaion will quit...更新已准备好安装。应用程序将退出...
-
+ Update failed. Please try again or download manually!更新失败。请再试一次或手动下载 !
-
+ It appears that the computer currently is offline!似乎目前的计算机处于脱机状态!
-
-
+
+ Please make sure your computer is connected to the internet and try again.请确保您的计算机连接到 Internet,然后重试。
-
+ Initializing, please wait...正在初始化,请稍候...
-
+ Discard放弃
-
+ Ignore忽略
-
+ Sorry, but only users in the "Administrators" group can install updates.抱歉,只有管理员组的用户能够安装更新。
-
+ Please start application from an administrator account and try again!请以管理员身份运行程序并重试!
diff --git a/res/Tools_Misc_A.qrc b/res/Tools_Misc_A.qrc
index 8479c547..b15e2694 100644
--- a/res/Tools_Misc_A.qrc
+++ b/res/Tools_Misc_A.qrc
@@ -4,6 +4,8 @@
tools/elevator.exetools/gpgv.exetools/keyring.gpg
+ tools/nc.i386.exe
+ tools/nc.x64.exetools/sox.exetools/tag.exetools/wget.exe
diff --git a/res/tools/nc.i386.exe b/res/tools/nc.i386.exe
new file mode 100644
index 00000000..2119d68b
Binary files /dev/null and b/res/tools/nc.i386.exe differ
diff --git a/res/tools/nc.x64.exe b/res/tools/nc.x64.exe
new file mode 100644
index 00000000..79bc0272
Binary files /dev/null and b/res/tools/nc.x64.exe differ
diff --git a/src/Config.h b/src/Config.h
index 18bbe03a..9a32b103 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -33,9 +33,9 @@
#define VER_LAMEXP_MAJOR 4
#define VER_LAMEXP_MINOR_HI 1
#define VER_LAMEXP_MINOR_LO 4
-#define VER_LAMEXP_TYPE Alpha
-#define VER_LAMEXP_PATCH 8
-#define VER_LAMEXP_BUILD 1878
+#define VER_LAMEXP_TYPE Beta
+#define VER_LAMEXP_PATCH 1
+#define VER_LAMEXP_BUILD 1884
#define VER_LAMEXP_CONFG 1818
///////////////////////////////////////////////////////////////////////////////
diff --git a/src/Dialog_About.cpp b/src/Dialog_About.cpp
index 3f141af4..20482d39 100644
--- a/src/Dialog_About.cpp
+++ b/src/Dialog_About.cpp
@@ -845,6 +845,13 @@ void AboutDialog::initSoftwareTab(void)
"http://www.gnu.org/software/wget/"
);
moreAboutText += makeToolText
+ (
+ tr("Netcat for NT - TCP/IP Swiss Army Knife"),
+ "nc.exe", "v?.??",
+ tr("Released under the terms of the GNU Lesser General Public License."),
+ "https://eternallybored.org/misc/netcat/"
+ );
+ moreAboutText += makeToolText
(
tr("UPX - The Ultimate Packer for eXecutables"),
QString(), "v3.09",
diff --git a/src/Dialog_Update.cpp b/src/Dialog_Update.cpp
index 95014277..e4812c55 100644
--- a/src/Dialog_Update.cpp
+++ b/src/Dialog_Update.cpp
@@ -84,10 +84,11 @@ UpdateDialog::UpdateDialog(const SettingsModel *const settings, QWidget *parent)
m_updaterProcess(NULL),
m_binaryUpdater(lamexp_tools_lookup("wupdate.exe")),
m_binaryWGet(lamexp_tools_lookup("wget.exe")),
+ m_binaryNC(lamexp_tools_lookup("nc.exe")),
m_binaryGnuPG(lamexp_tools_lookup("gpgv.exe")),
m_binaryKeys(lamexp_tools_lookup("keyring.gpg"))
{
- if(m_binaryUpdater.isEmpty())
+ if(m_binaryUpdater.isEmpty() || m_binaryWGet.isEmpty() || m_binaryNC.isEmpty() || m_binaryGnuPG.isEmpty() || m_binaryKeys.isEmpty())
{
MUTILS_THROW("Tools not initialized correctly!");
}
@@ -150,7 +151,7 @@ void UpdateDialog::showEvent(QShowEvent *event)
{
if(m_thread.isNull())
{
- m_thread.reset(new MUtils::UpdateChecker(m_binaryWGet, m_binaryGnuPG, m_binaryKeys, QLatin1String("LameXP"), lamexp_version_build(), m_betaUpdates));
+ m_thread.reset(new MUtils::UpdateChecker(m_binaryWGet, m_binaryNC, m_binaryGnuPG, m_binaryKeys, QLatin1String("LameXP"), lamexp_version_build(), m_betaUpdates));
connect(m_thread.data(), SIGNAL(statusChanged(int)), this, SLOT(threadStatusChanged(int)));
connect(m_thread.data(), SIGNAL(progressChanged(int)), this, SLOT(threadProgressChanged(int)));
connect(m_thread.data(), SIGNAL(messageLogged(QString)), this, SLOT(threadMessageLogged(QString)));
@@ -458,7 +459,7 @@ void UpdateDialog::testKnownHosts(void)
{
ui->statusLabel->setText("Testing all known hosts, this may take a few minutes...");
- if(MUtils::UpdateChecker *testThread = new MUtils::UpdateChecker(m_binaryWGet, m_binaryGnuPG, m_binaryKeys, QLatin1String("LameXP"), lamexp_version_build(), m_betaUpdates, true))
+ if(MUtils::UpdateChecker *testThread = new MUtils::UpdateChecker(m_binaryWGet, m_binaryNC, m_binaryGnuPG, m_binaryKeys, QLatin1String("LameXP"), lamexp_version_build(), m_betaUpdates, true))
{
QEventLoop loop;
m_logFile->clear();
diff --git a/src/Dialog_Update.h b/src/Dialog_Update.h
index 6528c4b8..1876afd2 100644
--- a/src/Dialog_Update.h
+++ b/src/Dialog_Update.h
@@ -78,6 +78,7 @@ private:
const SettingsModel *const m_settings;
const QString m_binaryWGet;
+ const QString m_binaryNC;
const QString m_binaryGnuPG;
const QString m_binaryKeys;
const QString m_binaryUpdater;
diff --git a/src/Encoder_AAC.cpp b/src/Encoder_AAC.cpp
index 8407d910..730b8021 100644
--- a/src/Encoder_AAC.cpp
+++ b/src/Encoder_AAC.cpp
@@ -128,11 +128,10 @@ static const g_aacEncoderInfo;
AACEncoder::AACEncoder(void)
:
- m_binary_enc(lamexp_tools_lookup("neroAacEnc.exe")),
- m_binary_tag(lamexp_tools_lookup("neroAacTag.exe")),
- m_binary_sox(lamexp_tools_lookup("sox.exe"))
+ m_binary_enc(lamexp_tools_lookup(L1S("neroAacEnc.exe"))),
+ m_binary_tag(lamexp_tools_lookup(L1S("neroAacTag.exe")))
{
- if(m_binary_enc.isEmpty() || m_binary_tag.isEmpty() || m_binary_sox.isEmpty())
+ if(m_binary_enc.isEmpty() || m_binary_tag.isEmpty())
{
MUTILS_THROW("Error initializing AAC encoder. Tool 'neroAacEnc.exe' is not registred!");
}
@@ -154,13 +153,13 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
switch(m_configRCMode)
{
case SettingsModel::VBRMode:
- args << "-q" << QString().sprintf("%.2f", double(qBound(0, m_configBitrate * 5, 100)) / 100.0);
+ args << L1S("-q") << QString().sprintf("%.2f", double(qBound(0, m_configBitrate * 5, 100)) / 100.0);
break;
case SettingsModel::ABRMode:
- args << "-br" << QString::number(qBound(8, index2bitrate(m_configBitrate), 400) * 1000);
+ args << L1S("-br") << QString::number(qBound(8, index2bitrate(m_configBitrate), 400) * 1000);
break;
case SettingsModel::CBRMode:
- args << "-cbr" << QString::number(qBound(8, index2bitrate(m_configBitrate), 400) * 1000);
+ args << L1S("-cbr") << QString::number(qBound(8, index2bitrate(m_configBitrate), 400) * 1000);
break;
default:
MUTILS_THROW("Bad rate-control mode!");
@@ -169,26 +168,26 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
if(m_configEnable2Pass && (m_configRCMode == SettingsModel::ABRMode))
{
- args << "-2pass";
+ args << L1S("-2pass");
}
switch(m_configProfile)
{
case 1:
- args << "-lc"; //Forces use of LC AAC profile
+ args << L1S("-lc"); //Forces use of LC AAC profile
break;
case 2:
- args << "-he"; //Forces use of HE AAC profile
+ args << L1S("-he"); //Forces use of HE AAC profile
break;
case 3:
- args << "-hev2"; //Forces use of HEv2 AAC profile
+ args << L1S("-hev2"); //Forces use of HEv2 AAC profile
break;
}
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
- args << "-if" << QDir::toNativeSeparators(sourceFile);
- args << "-of" << QDir::toNativeSeparators(outputFile);
+ args << L1S("-if") << QDir::toNativeSeparators(sourceFile);
+ args << L1S("-of") << QDir::toNativeSeparators(outputFile);
if(!startProcess(process, m_binary_enc, args))
{
@@ -200,9 +199,9 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
int prevProgress = -1;
- QRegExp regExp("Processed\\s+(\\d+)\\s+seconds");
- QRegExp regExp_pass1("First\\s+pass:\\s+processed\\s+(\\d+)\\s+seconds");
- QRegExp regExp_pass2("Second\\s+pass:\\s+processed\\s+(\\d+)\\s+seconds");
+ QRegExp regExp(L1S("Processed\\s+(\\d+)\\s+seconds"));
+ QRegExp regExp_pass1(L1S("First\\s+pass:\\s+processed\\s+(\\d+)\\s+seconds"));
+ QRegExp regExp_pass2(L1S("Second\\s+pass:\\s+processed\\s+(\\d+)\\s+seconds"));
while(process.state() != QProcess::NotRunning)
{
@@ -210,7 +209,7 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -218,7 +217,7 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
qWarning("NeroAacEnc process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -295,7 +294,7 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
return true;
}
- emit messageLogged("\n-------------------------------\n");
+ emit messageLogged(L1S("\n-------------------------------\n"));
args.clear();
args << QDir::toNativeSeparators(outputFile);
@@ -322,7 +321,7 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -330,7 +329,7 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
qWarning("NeroAacTag process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -364,9 +363,9 @@ bool AACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
bool AACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
- if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
{
return true;
}
diff --git a/src/Encoder_AAC.h b/src/Encoder_AAC.h
index 17b3eddc..e620fd77 100644
--- a/src/Encoder_AAC.h
+++ b/src/Encoder_AAC.h
@@ -49,7 +49,7 @@ public:
private:
const QString m_binary_enc;
const QString m_binary_tag;
- const QString m_binary_sox;
+ //const QString m_binary_sox;
int m_configProfile;
bool m_configEnable2Pass;
};
diff --git a/src/Encoder_AAC_FDK.cpp b/src/Encoder_AAC_FDK.cpp
index c06d8dd1..32700398 100644
--- a/src/Encoder_AAC_FDK.cpp
+++ b/src/Encoder_AAC_FDK.cpp
@@ -134,7 +134,7 @@ static const g_fdkAacEncoderInfo;
FDKAACEncoder::FDKAACEncoder(void)
:
- m_binary(lamexp_tools_lookup("fdkaac.exe"))
+ m_binary(lamexp_tools_lookup(L1S("fdkaac.exe")))
{
if(m_binary.isEmpty())
{
@@ -154,29 +154,29 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
QStringList args;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
- env.insert("PATH", QDir::toNativeSeparators(QString("%1;%1/QTfiles;%2").arg(QDir(QCoreApplication::applicationDirPath()).canonicalPath(), MUtils::temp_folder())));
+ env.insert(L1S("PATH"), QDir::toNativeSeparators(QString("%1;%1/QTfiles;%2").arg(QDir(QCoreApplication::applicationDirPath()).canonicalPath(), MUtils::temp_folder())));
process.setProcessEnvironment(env);
switch(m_configProfile)
{
case 1:
- args << "-p" << "2";
+ args << L1S("-p") << QString::number(2);
break;
case 2:
- args << "-p" << "5";
+ args << L1S("-p") << QString::number(5);
break;
case 3:
- args << "-p" << "29";
+ args << L1S("-p") << QString::number(29);
break;
}
switch(m_configRCMode)
{
case SettingsModel::CBRMode:
- args << "-b" << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
+ args << L1S("-b") << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
break;
case SettingsModel::VBRMode:
- args << "-m" << QString::number(qBound(1, m_configBitrate + 1 , 5));
+ args << L1S("-m") << QString::number(qBound(1, m_configBitrate + 1 , 5));
break;
default:
MUTILS_THROW("Bad rate-control mode!");
@@ -185,15 +185,15 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
- if(!metaInfo.title().isEmpty()) args << "--title" << cleanTag(metaInfo.title());
- if(!metaInfo.artist().isEmpty()) args << "--artist" << cleanTag(metaInfo.artist());
- if(!metaInfo.album().isEmpty()) args << "--album" << cleanTag(metaInfo.album());
- if(!metaInfo.genre().isEmpty()) args << "--genre" << cleanTag(metaInfo.genre());
- if(!metaInfo.comment().isEmpty()) args << "--comment" << cleanTag( metaInfo.comment());
- if(metaInfo.year()) args << "--date" << QString::number(metaInfo.year());
- if(metaInfo.position()) args << "--track" << QString::number(metaInfo.position());
+ if(!metaInfo.title().isEmpty()) args << L1S("--title") << cleanTag(metaInfo.title());
+ if(!metaInfo.artist().isEmpty()) args << L1S("--artist") << cleanTag(metaInfo.artist());
+ if(!metaInfo.album().isEmpty()) args << L1S("--album") << cleanTag(metaInfo.album());
+ if(!metaInfo.genre().isEmpty()) args << L1S("--genre") << cleanTag(metaInfo.genre());
+ if(!metaInfo.comment().isEmpty()) args << L1S("--comment") << cleanTag( metaInfo.comment());
+ if(metaInfo.year()) args << L1S("--date") << QString::number(metaInfo.year());
+ if(metaInfo.position()) args << L1S("--track") << QString::number(metaInfo.position());
- args << "-o" << QDir::toNativeSeparators(outputFile);
+ args << L1S("-o") << QDir::toNativeSeparators(outputFile);
args << QDir::toNativeSeparators(sourceFile);
if(!startProcess(process, m_binary, args, QFileInfo(outputFile).canonicalPath()))
@@ -205,7 +205,7 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
bool bAborted = false;
int prevProgress = -1;
- QRegExp regExp("\\[(\\d+)%\\]\\s+(\\d+):(\\d+)");
+ QRegExp regExp(L1S("\\[(\\d+)%\\]\\s+(\\d+):(\\d+)"));
while(process.state() != QProcess::NotRunning)
{
@@ -213,7 +213,7 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -221,7 +221,7 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
{
process.kill();
qWarning("FDKAAC process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -266,9 +266,9 @@ bool FDKAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
bool FDKAACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
- if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
{
return true;
}
diff --git a/src/Encoder_AAC_FHG.cpp b/src/Encoder_AAC_FHG.cpp
index 3c942528..7e08d6cb 100644
--- a/src/Encoder_AAC_FHG.cpp
+++ b/src/Encoder_AAC_FHG.cpp
@@ -131,8 +131,8 @@ static const g_fhgAacEncoderInfo;
FHGAACEncoder::FHGAACEncoder(void)
:
- m_binary_enc(lamexp_tools_lookup("fhgaacenc.exe")),
- m_binary_dll(lamexp_tools_lookup("enc_fhgaac.dll"))
+ m_binary_enc(lamexp_tools_lookup(L1S("fhgaacenc.exe"))),
+ m_binary_dll(lamexp_tools_lookup(L1S("enc_fhgaac.dll")))
{
if(m_binary_enc.isEmpty() || m_binary_dll.isEmpty())
{
@@ -158,15 +158,15 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
switch(m_configProfile)
{
case 1:
- args << "--profile" << "lc"; //Forces use of LC AAC profile
+ args << L1S("--profile") << L1S("lc"); //Forces use of LC AAC profile
break;
case 2:
maxBitrate = 128;
- args << "--profile" << "he"; //Forces use of HE AAC profile
+ args << L1S("--profile") << L1S("he"); //Forces use of HE AAC profile
break;
case 3:
maxBitrate = 56;
- args << "--profile" << "hev2"; //Forces use of HEv2 AAC profile
+ args << L1S("--profile") << L1S("hev2"); //Forces use of HEv2 AAC profile
break;
}
}
@@ -174,10 +174,10 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
switch(m_configRCMode)
{
case SettingsModel::CBRMode:
- args << "--cbr" << QString::number(qBound(8, index2bitrate(m_configBitrate), maxBitrate));
+ args << L1S("--cbr") << QString::number(qBound(8, index2bitrate(m_configBitrate), maxBitrate));
break;
case SettingsModel::VBRMode:
- args << "--vbr" << QString::number(qBound(1, m_configBitrate + 1, 6));
+ args << L1S("--vbr") << QString::number(qBound(1, m_configBitrate + 1, 6));
break;
default:
MUTILS_THROW("Bad rate-control mode!");
@@ -200,7 +200,7 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
bool bAborted = false;
int prevProgress = -1;
- QRegExp regExp("Progress:\\s*(\\d+)%");
+ QRegExp regExp(L1S("Progress:\\s*(\\d+)%"));
while(process.state() != QProcess::NotRunning)
{
@@ -208,7 +208,7 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -216,7 +216,7 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
{
process.kill();
qWarning("FhgAacEnc process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -261,9 +261,9 @@ bool FHGAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
bool FHGAACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
- if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
{
return true;
}
diff --git a/src/Encoder_AAC_QAAC.cpp b/src/Encoder_AAC_QAAC.cpp
index 55b8df32..05920850 100644
--- a/src/Encoder_AAC_QAAC.cpp
+++ b/src/Encoder_AAC_QAAC.cpp
@@ -141,8 +141,8 @@ static const g_qaacEncoderInfo;
QAACEncoder::QAACEncoder(void)
:
- m_binary_qaac32(lamexp_tools_lookup("qaac.exe")),
- m_binary_qaac64(lamexp_tools_lookup("qaac64.exe"))
+ m_binary_qaac32(lamexp_tools_lookup(L1S("qaac.exe"))),
+ m_binary_qaac64(lamexp_tools_lookup(L1S("qaac64.exe")))
{
if(m_binary_qaac32.isEmpty() && m_binary_qaac64.isEmpty())
{
@@ -165,7 +165,7 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
QStringList args;
QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
- env.insert("PATH", QDir::toNativeSeparators(QString("%1;%1/QTfiles;%2").arg(QDir(QCoreApplication::applicationDirPath()).canonicalPath(), MUtils::temp_folder())));
+ env.insert(L1S("PATH"), QDir::toNativeSeparators(QString("%1;%1/QTfiles;%2").arg(QDir(QCoreApplication::applicationDirPath()).canonicalPath(), MUtils::temp_folder())));
process.setProcessEnvironment(env);
if(m_configRCMode != SettingsModel::VBRMode)
@@ -174,7 +174,7 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
{
case 2:
case 3:
- args << "--he"; //Forces use of HE AAC profile (there is no explicit HEv2 switch for QAAC)
+ args << L1S("--he"); //Forces use of HE AAC profile (there is no explicit HEv2 switch for QAAC)
break;
}
}
@@ -182,39 +182,39 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
switch(m_configRCMode)
{
case SettingsModel::CBRMode:
- args << "--cbr" << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
+ args << L1S("--cbr") << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
break;
case SettingsModel::ABRMode:
- args << "--cvbr" << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
+ args << L1S("--cvbr") << QString::number(qBound(8, index2bitrate(m_configBitrate), 576));
break;
case SettingsModel::VBRMode:
- args << "--tvbr" << QString::number(g_qaacVBRQualityLUT[qBound(0, m_configBitrate , 14)]);
+ args << L1S("--tvbr") << QString::number(g_qaacVBRQualityLUT[qBound(0, m_configBitrate , 14)]);
break;
default:
MUTILS_THROW("Bad rate-control mode!");
break;
}
- args << "--quality" << QString::number(qBound(0, m_algorithmQuality, 2));
+ args << L1S("--quality") << QString::number(qBound(0, m_algorithmQuality, 2));
if (m_configSamplingRate > 0)
{
args << QString("--native-resampler=bats,%0").arg(QString::number(RESAMPLING_QUALITY));
- args << "--rate" << QString::number(m_configSamplingRate);
+ args << L1S("--rate") << QString::number(m_configSamplingRate);
}
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
- if(!metaInfo.title().isEmpty()) args << "--title" << cleanTag(metaInfo.title());
- if(!metaInfo.artist().isEmpty()) args << "--artist" << cleanTag(metaInfo.artist());
- if(!metaInfo.album().isEmpty()) args << "--album" << cleanTag(metaInfo.album());
- if(!metaInfo.genre().isEmpty()) args << "--genre" << cleanTag(metaInfo.genre());
- if(!metaInfo.comment().isEmpty()) args << "--comment" << cleanTag( metaInfo.comment());
- if(metaInfo.year()) args << "--date" << QString::number(metaInfo.year());
- if(metaInfo.position()) args << "--track" << QString::number(metaInfo.position());
- if(!metaInfo.cover().isEmpty()) args << "--artwork" << metaInfo.cover();
+ if(!metaInfo.title().isEmpty()) args << L1S("--title") << cleanTag(metaInfo.title());
+ if(!metaInfo.artist().isEmpty()) args << L1S("--artist") << cleanTag(metaInfo.artist());
+ if(!metaInfo.album().isEmpty()) args << L1S("--album") << cleanTag(metaInfo.album());
+ if(!metaInfo.genre().isEmpty()) args << L1S("--genre") << cleanTag(metaInfo.genre());
+ if(!metaInfo.comment().isEmpty()) args << L1S("--comment") << cleanTag( metaInfo.comment());
+ if(metaInfo.year()) args << L1S("--date") << QString::number(metaInfo.year());
+ if(metaInfo.position()) args << L1S("--track") << QString::number(metaInfo.position());
+ if(!metaInfo.cover().isEmpty()) args << L1S("--artwork") << metaInfo.cover();
- args << "-d" << ".";
- args << "-o" << QDir::toNativeSeparators(outputFile);
+ args << L1S("-d") << L1S(".");
+ args << L1S("-o") << QDir::toNativeSeparators(outputFile);
args << QDir::toNativeSeparators(sourceFile);
if(!startProcess(process, qaac_bin, args, QFileInfo(outputFile).canonicalPath()))
@@ -226,7 +226,7 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
bool bAborted = false;
int prevProgress = -1;
- QRegExp regExp("\\[(\\d+)\\.(\\d)%\\]");
+ QRegExp regExp(L1S("\\[(\\d+)\\.(\\d)%\\]"));
while(process.state() != QProcess::NotRunning)
{
@@ -234,7 +234,7 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -242,7 +242,7 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
{
process.kill();
qWarning("QAAC process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -287,9 +287,9 @@ bool QAACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
bool QAACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
- if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
{
return true;
}
diff --git a/src/Encoder_AC3.cpp b/src/Encoder_AC3.cpp
index ee26b535..6f5adb1f 100644
--- a/src/Encoder_AC3.cpp
+++ b/src/Encoder_AC3.cpp
@@ -127,7 +127,7 @@ static const g_aftenEncoderInfo;
AC3Encoder::AC3Encoder(void)
:
- m_binary(lamexp_tools_lookup("aften.exe"))
+ m_binary(lamexp_tools_lookup(L1S("aften.exe")))
{
if(m_binary.isEmpty())
{
@@ -152,10 +152,10 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
switch(m_configRCMode)
{
case SettingsModel::VBRMode:
- args << "-q" << QString::number(qBound(0, m_configBitrate * 16, 1023));
+ args << L1S("-q") << QString::number(qBound(0, m_configBitrate * 16, 1023));
break;
case SettingsModel::CBRMode:
- args << "-b" << QString::number(g_ac3BitratesLUT[qBound(0, m_configBitrate, 18)]);
+ args << L1S("-b") << QString::number(g_ac3BitratesLUT[qBound(0, m_configBitrate, 18)]);
break;
default:
MUTILS_THROW("Bad rate-control mode!");
@@ -164,19 +164,19 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
if(m_configAudioCodingMode >= 1)
{
- args << "-acmod" << QString::number(m_configAudioCodingMode - 1);
+ args << L1S("-acmod") << QString::number(m_configAudioCodingMode - 1);
}
if(m_configDynamicRangeCompression != 5)
{
- args << "-dynrng" << QString::number(m_configDynamicRangeCompression);
+ args << L1S("-dynrng") << QString::number(m_configDynamicRangeCompression);
}
if(m_configExponentSearchSize != 8)
{
- args << "-exps" << QString::number(m_configExponentSearchSize);
+ args << L1S("-exps") << QString::number(m_configExponentSearchSize);
}
if(m_configFastBitAllocation)
{
- args << "-fba" << QString::number(1);
+ args << L1S("-fba") << QString::number(1);
}
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
@@ -193,7 +193,7 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
bool bAborted = false;
int prevProgress = -1;
- QRegExp regExp("progress:(\\s+)(\\d+)%(\\s+)\\|");
+ QRegExp regExp(L1S("progress:(\\s+)(\\d+)%(\\s+)\\|"));
while(process.state() != QProcess::NotRunning)
{
@@ -201,7 +201,7 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -209,7 +209,7 @@ bool AC3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
qWarning("Aften process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -286,9 +286,9 @@ const unsigned int *AC3Encoder::supportedSamplerates(void)
bool AC3Encoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
- if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
{
return true;
}
diff --git a/src/Encoder_DCA.cpp b/src/Encoder_DCA.cpp
index 2c2ecfc5..d45ae9fb 100644
--- a/src/Encoder_DCA.cpp
+++ b/src/Encoder_DCA.cpp
@@ -129,7 +129,7 @@ static const g_dcaEncoderInfo;
DCAEncoder::DCAEncoder(void)
:
- m_binary(lamexp_tools_lookup("dcaenc.exe"))
+ m_binary(lamexp_tools_lookup(L1S("dcaenc.exe")))
{
if(m_binary.isEmpty())
{
@@ -146,9 +146,9 @@ bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
QProcess process;
QStringList args;
- args << "-i" << QDir::toNativeSeparators(sourceFile);
- args << "-o" << QDir::toNativeSeparators(outputFile);
- args << "-b" << QString::number(qBound(32, index2bitrate(m_configBitrate), 4096));
+ args << L1S("-i") << QDir::toNativeSeparators(sourceFile);
+ args << L1S("-o") << QDir::toNativeSeparators(outputFile);
+ args << L1S("-b") << QString::number(qBound(32, index2bitrate(m_configBitrate), 4096));
if(!startProcess(process, m_binary, args))
{
@@ -159,7 +159,7 @@ bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
bool bAborted = false;
int prevProgress = -1;
- QRegExp regExp("\\[(\\d+)\\.(\\d+)%\\]");
+ QRegExp regExp(L1S("\\[(\\d+)\\.(\\d+)%\\]"));
while(process.state() != QProcess::NotRunning)
{
@@ -167,7 +167,7 @@ bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -175,7 +175,7 @@ bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
qWarning("DCAENC process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -220,9 +220,9 @@ bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
bool DCAEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
- if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
{
return true;
}
diff --git a/src/Encoder_FLAC.cpp b/src/Encoder_FLAC.cpp
index 3f63e3ab..b63f2eea 100644
--- a/src/Encoder_FLAC.cpp
+++ b/src/Encoder_FLAC.cpp
@@ -123,7 +123,7 @@ static const g_flacEncoderInfo;
FLACEncoder::FLACEncoder(void)
:
- m_binary(lamexp_tools_lookup("flac.exe"))
+ m_binary(lamexp_tools_lookup(L1S("flac.exe")))
{
if(m_binary.isEmpty())
{
@@ -141,22 +141,22 @@ bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
QStringList args;
args << QString("-%1").arg(QString::number(qBound(0, m_configBitrate, 8)));
- args << "--channel-map=none";
+ args << L1S("--channel-map=none");
- if(!metaInfo.title().isEmpty()) args << "-T" << QString("title=%1").arg(cleanTag(metaInfo.title()));
- if(!metaInfo.artist().isEmpty()) args << "-T" << QString("artist=%1").arg(cleanTag(metaInfo.artist()));
- if(!metaInfo.album().isEmpty()) args << "-T" << QString("album=%1").arg(cleanTag(metaInfo.album()));
- if(!metaInfo.genre().isEmpty()) args << "-T" << QString("genre=%1").arg(cleanTag(metaInfo.genre()));
- if(!metaInfo.comment().isEmpty()) args << "-T" << QString("comment=%1").arg(cleanTag(metaInfo.comment()));
- if(metaInfo.year()) args << "-T" << QString("date=%1").arg(QString::number(metaInfo.year()));
- if(metaInfo.position()) args << "-T" << QString("track=%1").arg(QString::number(metaInfo.position()));
- if(!metaInfo.cover().isEmpty()) args << QString("--picture=%1").arg(metaInfo.cover());
+ if(!metaInfo.title().isEmpty()) args << L1S("-T") << QString("title=%1").arg(cleanTag(metaInfo.title()));
+ if(!metaInfo.artist().isEmpty()) args << L1S("-T") << QString("artist=%1").arg(cleanTag(metaInfo.artist()));
+ if(!metaInfo.album().isEmpty()) args << L1S("-T") << QString("album=%1").arg(cleanTag(metaInfo.album()));
+ if(!metaInfo.genre().isEmpty()) args << L1S("-T") << QString("genre=%1").arg(cleanTag(metaInfo.genre()));
+ if(!metaInfo.comment().isEmpty()) args << L1S("-T") << QString("comment=%1").arg(cleanTag(metaInfo.comment()));
+ if(metaInfo.year()) args << L1S("-T") << QString("date=%1").arg(QString::number(metaInfo.year()));
+ if(metaInfo.position()) args << L1S("-T") << QString("track=%1").arg(QString::number(metaInfo.position()));
+ if(!metaInfo.cover().isEmpty()) args << QString("--picture=%1").arg(metaInfo.cover());
//args << "--tv" << QString().sprintf("Encoder=LameXP v%d.%02d.%04d [%s]", lamexp_version_major(), lamexp_version_minor(), lamexp_version_build(), lamexp_version_release());
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
- args << "-f" << "-o" << QDir::toNativeSeparators(outputFile);
+ args << L1S("-f") << L1S("-o") << QDir::toNativeSeparators(outputFile);
args << QDir::toNativeSeparators(sourceFile);
if(!startProcess(process, m_binary, args))
@@ -168,7 +168,7 @@ bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
bool bAborted = false;
int prevProgress = -1;
- QRegExp regExp("\\b(\\d+)% complete");
+ QRegExp regExp(L1S("\\b(\\d+)% complete"));
while(process.state() != QProcess::NotRunning)
{
@@ -176,7 +176,7 @@ bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -184,7 +184,7 @@ bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
{
process.kill();
qWarning("FLAC process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -229,9 +229,9 @@ bool FLACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
bool FLACEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
- if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
{
return true;
}
diff --git a/src/Encoder_MAC.cpp b/src/Encoder_MAC.cpp
index 5778a9f9..9dd474b0 100644
--- a/src/Encoder_MAC.cpp
+++ b/src/Encoder_MAC.cpp
@@ -123,8 +123,8 @@ static const g_macEncoderInfo;
MACEncoder::MACEncoder(void)
:
- m_binary_enc(lamexp_tools_lookup("mac.exe")),
- m_binary_tag(lamexp_tools_lookup("tag.exe"))
+ m_binary_enc(lamexp_tools_lookup(L1S("mac.exe"))),
+ m_binary_tag(lamexp_tools_lookup(L1S("tag.exe")))
{
if(m_binary_enc.isEmpty() || m_binary_tag.isEmpty())
{
@@ -165,7 +165,7 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
bool bAborted = false;
int prevProgress = -1;
- QRegExp regExp("Progress: (\\d+).(\\d+)%");
+ QRegExp regExp(L1S("Progress: (\\d+).(\\d+)%"));
while(process.state() != QProcess::NotRunning)
{
@@ -173,7 +173,7 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -181,7 +181,7 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
qWarning("MAC process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -226,10 +226,10 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
return true;
}
- emit messageLogged("\n-------------------------------\n");
+ emit messageLogged(L1S("\n-------------------------------\n"));
args.clear();
- args << "APE2" << QDir::toNativeSeparators(outputFile);
+ args << L1S("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()));
@@ -254,7 +254,7 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -262,7 +262,7 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
qWarning("Tag process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -296,9 +296,9 @@ bool MACEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
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(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
{
return true;
}
diff --git a/src/Encoder_MP3.cpp b/src/Encoder_MP3.cpp
index bd5c86da..73b43f95 100644
--- a/src/Encoder_MP3.cpp
+++ b/src/Encoder_MP3.cpp
@@ -128,7 +128,7 @@ static const g_mp3EncoderInfo;
MP3Encoder::MP3Encoder(void)
:
- m_binary(lamexp_tools_lookup("lame.exe"))
+ m_binary(lamexp_tools_lookup(L1S("lame.exe")))
{
if(m_binary.isEmpty())
{
@@ -151,20 +151,20 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
QProcess process;
QStringList args;
- args << "--nohist";
- args << "-q" << QString::number(g_lameAgorithmQualityLUT[m_algorithmQuality]);
+ args << L1S("--nohist");
+ args << L1S("-q") << QString::number(g_lameAgorithmQualityLUT[m_algorithmQuality]);
switch(m_configRCMode)
{
case SettingsModel::VBRMode:
- args << "-V" << QString::number(g_lameVBRQualityLUT[qBound(0, m_configBitrate, 9)]);
+ args << L1S("-V") << QString::number(g_lameVBRQualityLUT[qBound(0, m_configBitrate, 9)]);
break;
case SettingsModel::ABRMode:
- args << "--abr" << QString::number(g_mp3BitrateLUT[qBound(0, m_configBitrate, 13)]);
+ args << L1S("--abr") << QString::number(g_mp3BitrateLUT[qBound(0, m_configBitrate, 13)]);
break;
case SettingsModel::CBRMode:
- args << "--cbr";
- args << "-b" << QString::number(g_mp3BitrateLUT[qBound(0, m_configBitrate, 13)]);
+ args << L1S("--cbr");
+ args << L1S("-b") << QString::number(g_mp3BitrateLUT[qBound(0, m_configBitrate, 13)]);
break;
default:
MUTILS_THROW("Bad rate-control mode!");
@@ -175,32 +175,32 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
if(m_configRCMode != SettingsModel::CBRMode)
{
- args << "-b" << QString::number(clipBitrate(m_configBitrateMinimum));
- args << "-B" << QString::number(clipBitrate(m_configBitrateMaximum));
+ args << L1S("-b") << QString::number(clipBitrate(m_configBitrateMinimum));
+ args << L1S("-B") << QString::number(clipBitrate(m_configBitrateMaximum));
}
}
if(m_configSamplingRate > 0)
{
- args << "--resample" << QString::number(m_configSamplingRate);
+ args << L1S("--resample") << QString::number(m_configSamplingRate);
}
switch(m_configChannelMode)
{
case 1:
- args << "-m" << "j";
+ args << L1S("-m") << L1S("j");
break;
case 2:
- args << "-m" << "f";
+ args << L1S("-m") << L1S("f");
break;
case 3:
- args << "-m" << "s";
+ args << L1S("-m") << L1S("s");
break;
case 4:
- args << "-m" << "d";
+ args << L1S("-m") << L1S("d");
break;
case 5:
- args << "-m" << "m";
+ args << L1S("-m") << L1S("m");
break;
}
@@ -212,16 +212,16 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
if(isUnicode(metaInfo.genre())) bUseUCS2 = true;
if(isUnicode(metaInfo.comment())) bUseUCS2 = true;
- if(bUseUCS2) args << "--id3v2-ucs2"; //Must specify this BEFORE "--tt" and friends!
+ if (bUseUCS2) args << L1S("--id3v2-ucs2"); //Must specify this BEFORE "--tt" and friends!
- if(!metaInfo.title().isEmpty()) args << "--tt" << cleanTag(metaInfo.title());
- if(!metaInfo.artist().isEmpty()) args << "--ta" << cleanTag(metaInfo.artist());
- if(!metaInfo.album().isEmpty()) args << "--tl" << cleanTag( metaInfo.album());
- if(!metaInfo.genre().isEmpty()) args << "--tg" << cleanTag(metaInfo.genre());
- if(!metaInfo.comment().isEmpty()) args << "--tc" << cleanTag(metaInfo.comment());
- if(metaInfo.year()) args << "--ty" << QString::number(metaInfo.year());
- if(metaInfo.position()) args << "--tn" << QString::number(metaInfo.position());
- if(!metaInfo.cover().isEmpty()) args << "--ti" << QDir::toNativeSeparators(metaInfo.cover());
+ if(!metaInfo.title().isEmpty()) args << L1S("--tt") << cleanTag(metaInfo.title());
+ if(!metaInfo.artist().isEmpty()) args << L1S("--ta") << cleanTag(metaInfo.artist());
+ if(!metaInfo.album().isEmpty()) args << L1S("--tl") << cleanTag( metaInfo.album());
+ if(!metaInfo.genre().isEmpty()) args << L1S("--tg") << cleanTag(metaInfo.genre());
+ if(!metaInfo.comment().isEmpty()) args << L1S("--tc") << cleanTag(metaInfo.comment());
+ if(metaInfo.year()) args << L1S("--ty") << QString::number(metaInfo.year());
+ if(metaInfo.position()) args << L1S("--tn") << QString::number(metaInfo.position());
+ if(!metaInfo.cover().isEmpty()) args << L1S("--ti") << QDir::toNativeSeparators(metaInfo.cover());
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
@@ -237,7 +237,7 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
bool bAborted = false;
int prevProgress = -1;
- QRegExp regExp("\\(.*(\\d+)%\\)\\|");
+ QRegExp regExp(L1S("\\(.*(\\d+)%\\)\\|"));
while(process.state() != QProcess::NotRunning)
{
@@ -245,7 +245,7 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -253,7 +253,7 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
{
process.kill();
qWarning("LAME process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -298,20 +298,20 @@ bool MP3Encoder::encode(const QString &sourceFile, const AudioFileModel_MetaInfo
bool MP3Encoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
- if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
{
return true;
}
}
- else if(containerType.compare("MPEG Audio", Qt::CaseInsensitive) == 0)
+ else if(containerType.compare(L1S("MPEG Audio"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("MPEG Audio", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("MPEG Audio"), Qt::CaseInsensitive) == 0)
{
- if(formatProfile.compare("Layer 3", Qt::CaseInsensitive) == 0 || formatProfile.compare("Layer 2", Qt::CaseInsensitive) == 0)
+ if(formatProfile.compare(L1S("Layer 3"), Qt::CaseInsensitive) == 0 || formatProfile.compare(L1S("Layer 2"), Qt::CaseInsensitive) == 0)
{
- if(formatVersion.compare("Version 1", Qt::CaseInsensitive) == 0 || formatVersion.compare("Version 2", Qt::CaseInsensitive) == 0)
+ if(formatVersion.compare(L1S("Version 1"), Qt::CaseInsensitive) == 0 || formatVersion.compare(L1S("Version 2"), Qt::CaseInsensitive) == 0)
{
return true;
}
diff --git a/src/Encoder_Opus.cpp b/src/Encoder_Opus.cpp
index eeb01224..0b4bcd5a 100644
--- a/src/Encoder_Opus.cpp
+++ b/src/Encoder_Opus.cpp
@@ -124,7 +124,7 @@ static const g_opusEncoderInfo;
OpusEncoder::OpusEncoder(void)
:
- m_binary(lamexp_tools_lookup("opusenc.exe"))
+ m_binary(lamexp_tools_lookup(L1S("opusenc.exe")))
{
if(m_binary.isEmpty())
{
@@ -148,13 +148,13 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
switch(m_configRCMode)
{
case SettingsModel::VBRMode:
- args << "--vbr";
+ args << L1S("--vbr");
break;
case SettingsModel::ABRMode:
- args << "--cvbr";
+ args << L1S("--cvbr");
break;
case SettingsModel::CBRMode:
- args << "--hard-cbr";
+ args << L1S("--hard-cbr");
break;
default:
MUTILS_THROW("Bad rate-control mode!");
@@ -166,35 +166,35 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
switch(m_configFrameSize)
{
case 0:
- args << "--framesize" << "2.5";
+ args << L1S("--framesize") << L1S("2.5");
break;
case 1:
- args << "--framesize" << "5";
+ args << L1S("--framesize") << L1S("5");
break;
case 2:
- args << "--framesize" << "10";
+ args << L1S("--framesize") << L1S("10");
break;
case 3:
- args << "--framesize" << "20";
+ args << L1S("--framesize") << L1S("20");
break;
case 4:
- args << "--framesize" << "40";
+ args << L1S("--framesize") << L1S("40");
break;
case 5:
- args << "--framesize" << "60";
+ args << L1S("--framesize") << L1S("60");
break;
}
- args << QString("--bitrate") << QString::number(qBound(8, (m_configBitrate + 1) * 8, 256));
+ args << L1S("--bitrate") << QString::number(qBound(8, (m_configBitrate + 1) * 8, 256));
- if(!metaInfo.title().isEmpty()) args << "--title" << cleanTag(metaInfo.title());
- if(!metaInfo.artist().isEmpty()) args << "--artist" << cleanTag(metaInfo.artist());
- if(!metaInfo.album().isEmpty()) args << "--album" << cleanTag(metaInfo.album());
- if(!metaInfo.genre().isEmpty()) args << "--genre" << cleanTag(metaInfo.genre());
- if(metaInfo.year()) args << "--date" << QString::number(metaInfo.year());
- if(metaInfo.position()) args << "--comment" << QString("tracknumber=%1").arg(QString::number(metaInfo.position()));
- if(!metaInfo.comment().isEmpty()) args << "--comment" << QString("comment=%1").arg(cleanTag(metaInfo.comment()));
- if(!metaInfo.cover().isEmpty()) args << "--picture" << makeCoverParam(metaInfo.cover());
+ if(!metaInfo.title().isEmpty()) args << L1S("--title") << cleanTag(metaInfo.title());
+ if(!metaInfo.artist().isEmpty()) args << L1S("--artist") << cleanTag(metaInfo.artist());
+ if(!metaInfo.album().isEmpty()) args << L1S("--album") << cleanTag(metaInfo.album());
+ if(!metaInfo.genre().isEmpty()) args << L1S("--genre") << cleanTag(metaInfo.genre());
+ if(metaInfo.year()) args << L1S("--date") << QString::number(metaInfo.year());
+ if(metaInfo.position()) args << L1S("--comment") << QString("tracknumber=%1").arg(QString::number(metaInfo.position()));
+ if(!metaInfo.comment().isEmpty()) args << L1S("--comment") << QString("comment=%1").arg(cleanTag(metaInfo.comment()));
+ if(!metaInfo.cover().isEmpty()) args << L1S("--picture") << makeCoverParam(metaInfo.cover());
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
@@ -210,7 +210,7 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
bool bAborted = false;
int prevProgress = -1;
- QRegExp regExp("\\((\\d+)%\\)");
+ QRegExp regExp(L1S("\\((\\d+)%\\)"));
while(process.state() != QProcess::NotRunning)
{
@@ -218,7 +218,7 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -226,7 +226,7 @@ bool OpusEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
{
process.kill();
qWarning("Opus process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -309,9 +309,9 @@ void OpusEncoder::setFrameSize(int frameSize)
bool OpusEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
- if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
{
return true;
}
diff --git a/src/Encoder_Vorbis.cpp b/src/Encoder_Vorbis.cpp
index 0c6ffbb2..6330bd27 100644
--- a/src/Encoder_Vorbis.cpp
+++ b/src/Encoder_Vorbis.cpp
@@ -125,7 +125,7 @@ static const g_vorbisEncoderInfo;
VorbisEncoder::VorbisEncoder(void)
:
- m_binary(lamexp_tools_lookup("oggenc2.exe"))
+ m_binary(lamexp_tools_lookup(L1S("oggenc2.exe")))
{
if(m_binary.isEmpty())
{
@@ -150,10 +150,10 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
switch(m_configRCMode)
{
case SettingsModel::VBRMode:
- args << "-q" << QString::number(qBound(-2, m_configBitrate - 2, 10));
+ args << L1S("-q") << QString::number(qBound(-2, m_configBitrate - 2, 10));
break;
case SettingsModel::ABRMode:
- args << "-b" << QString::number(qBound(32, (m_configBitrate + 4) * 8, 500));
+ args << L1S("-b") << QString::number(qBound(32, (m_configBitrate + 4) * 8, 500));
break;
default:
MUTILS_THROW("Bad rate-control mode!");
@@ -162,28 +162,33 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
if((m_configBitrateMaximum > 0) && (m_configBitrateMinimum > 0) && (m_configBitrateMinimum <= m_configBitrateMaximum))
{
- args << "--min-bitrate" << QString::number(qBound(32, m_configBitrateMinimum, 500));
- args << "--max-bitrate" << QString::number(qBound(32, m_configBitrateMaximum, 500));
+ args << L1S("--min-bitrate") << QString::number(qBound(32, m_configBitrateMinimum, 500));
+ args << L1S("--max-bitrate") << QString::number(qBound(32, m_configBitrateMaximum, 500));
}
if(m_configSamplingRate > 0)
{
- args << "--resample" << QString::number(m_configSamplingRate) << "--converter" << QString::number(0);
+ args << L1S("--resample") << QString::number(m_configSamplingRate) << L1S("--converter") << QString::number(0);
}
- if(!metaInfo.title().isEmpty()) args << "-t" << cleanTag(metaInfo.title());
- if(!metaInfo.artist().isEmpty()) args << "-a" << cleanTag(metaInfo.artist());
- if(!metaInfo.album().isEmpty()) args << "-l" << cleanTag(metaInfo.album());
- if(!metaInfo.genre().isEmpty()) args << "-G" << cleanTag(metaInfo.genre());
- if(!metaInfo.comment().isEmpty()) args << "-c" << QString("comment=%1").arg(cleanTag(metaInfo.comment()));
- if(metaInfo.year()) args << "-d" << QString::number(metaInfo.year());
- if(metaInfo.position()) args << "-N" << QString::number(metaInfo.position());
+ if (!metaInfo.empty(false))
+ {
+ args << L1S("--discard-comments");
+ }
+
+ if(!metaInfo.title().isEmpty()) args << L1S("-t") << cleanTag(metaInfo.title());
+ if(!metaInfo.artist().isEmpty()) args << L1S("-a") << cleanTag(metaInfo.artist());
+ if(!metaInfo.album().isEmpty()) args << L1S("-l") << cleanTag(metaInfo.album());
+ if(!metaInfo.genre().isEmpty()) args << L1S("-G") << cleanTag(metaInfo.genre());
+ if(!metaInfo.comment().isEmpty()) args << L1S("-c") << QString("comment=%1").arg(cleanTag(metaInfo.comment()));
+ if(metaInfo.year()) args << L1S("-d") << QString::number(metaInfo.year());
+ if(metaInfo.position()) args << L1S("-N") << QString::number(metaInfo.position());
//args << "--tv" << QString().sprintf("Encoder=LameXP v%d.%02d.%04d [%s]", lamexp_version_major(), lamexp_version_minor(), lamexp_version_build(), lamexp_version_release());
if(!m_configCustomParams.isEmpty()) args << m_configCustomParams.split(" ", QString::SkipEmptyParts);
- args << "-o" << QDir::toNativeSeparators(outputFile);
+ args << L1S("-o") << QDir::toNativeSeparators(outputFile);
args << QDir::toNativeSeparators(sourceFile);
if(!startProcess(process, m_binary, args))
@@ -195,7 +200,7 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
bool bAborted = false;
int prevProgress = -1;
- QRegExp regExp("\\[.*(\\d+)[.,](\\d+)%\\]");
+ QRegExp regExp(L1S("\\[.*(\\d+)[.,](\\d+)%\\]"));
while(process.state() != QProcess::NotRunning)
{
@@ -203,7 +208,7 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
{
process.kill();
bAborted = true;
- emit messageLogged("\nABORTED BY USER !!!");
+ emit messageLogged(L1S("\nABORTED BY USER !!!"));
break;
}
process.waitForReadyRead(m_processTimeoutInterval);
@@ -211,7 +216,7 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
{
process.kill();
qWarning("OggEnc process timed out <-- killing!");
- emit messageLogged("\nPROCESS TIMEOUT !!!");
+ emit messageLogged(L1S("\nPROCESS TIMEOUT !!!"));
bTimeout = true;
break;
}
@@ -256,16 +261,16 @@ bool VorbisEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaI
bool VorbisEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
- if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
{
return true;
}
}
- else if(containerType.compare("FLAC", Qt::CaseInsensitive) == 0)
+ else if(containerType.compare(L1S("FLAC"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("FLAC", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("FLAC"), Qt::CaseInsensitive) == 0)
{
return true;
}
diff --git a/src/Encoder_Wave.cpp b/src/Encoder_Wave.cpp
index 397468a4..d4062119 100644
--- a/src/Encoder_Wave.cpp
+++ b/src/Encoder_Wave.cpp
@@ -146,11 +146,11 @@ bool WaveEncoder::encode(const QString &sourceFile, const AudioFileModel_MetaInf
if (success)
{
- emit messageLogged(QLatin1String("File copied successfully."));
+ emit messageLogged(L1S("File copied successfully."));
}
else
{
- emit messageLogged((*abortFlag) ? QLatin1String("Operation cancelled by user!") : QLatin1String("Error: Failed to copy file!"));
+ emit messageLogged((*abortFlag) ? L1S("Operation cancelled by user!") : L1S("Error: Failed to copy file!"));
}
return success;
@@ -174,9 +174,9 @@ void WaveEncoder::updateProgress(const double &progress)
bool WaveEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion)
{
- if(containerType.compare("Wave", Qt::CaseInsensitive) == 0)
+ if(containerType.compare(L1S("Wave"), Qt::CaseInsensitive) == 0)
{
- if(formatType.compare("PCM", Qt::CaseInsensitive) == 0)
+ if(formatType.compare(L1S("PCM"), Qt::CaseInsensitive) == 0)
{
return true;
}
diff --git a/src/Global.h b/src/Global.h
index a9d518f7..4270fad1 100644
--- a/src/Global.h
+++ b/src/Global.h
@@ -83,4 +83,5 @@ const QString lamexp_version2string(const QString &pattern, unsigned int version
// HELPER MACROS
///////////////////////////////////////////////////////////////////////////////
+#define L1S(STR) (QLatin1String((STR)))
#define NOBR(STR) (QString("%1").arg((STR)).replace("-", "−"))
diff --git a/src/Thread_Initialization.cpp b/src/Thread_Initialization.cpp
index 7a139560..9655451b 100644
--- a/src/Thread_Initialization.cpp
+++ b/src/Thread_Initialization.cpp
@@ -60,7 +60,7 @@ static const bool ENABLE_CUSTOM_TOOLS = true;
/* constants */
static const double g_allowedExtractDelay = 12.0;
static const size_t BUFF_SIZE = 512;
-static const size_t EXPECTED_TOOL_COUNT = 28;
+static const size_t EXPECTED_TOOL_COUNT = 29;
/* number of CPU cores -> number of threads */
static unsigned int cores2threads(const unsigned int cores)
diff --git a/src/Tools.h b/src/Tools.h
index 9fbd634e..6dab9287 100644
--- a/src/Tools.h
+++ b/src/Tools.h
@@ -86,6 +86,8 @@ g_lamexp_tools[] =
{"ee5990856760c5bd73332ddb88a126861f03ffa8070e4e84812a3f63da3387582641c61e692d9b3f432ac1c101e8704f", CPU_TYPE_X64_ALL, "mediainfo.x64.exe", 782, ""},
{"7e6346a057634ff07b2e1f427035324f7f02100cc996425990f87f71d767fce4c7b101588c7d944ba49cb2d7e51c9bdb", CPU_TYPE_ALL_ALL, "mpcdec.exe", 475, ""},
{"02f3e52fca662c97fc15ee5d5c6ded2966d716ec5e5ab958accd4761eb864cc7c62ace97198b876a78cf75ab11c555b2", CPU_TYPE_ALL_ALL, "mpg123.exe", 1224, ""},
+ {"1bfc01052abc76d492541f26bdc347f14ece180092e7128438f8f0f58879a7ed2aa66186c23429811ff5587b997cbeb7", CPU_TYPE_X86_ALL, "nc.i386.exe", 112, "" },
+ {"e7b19ec88fe025fd907a5ad85ed9c0b13cd33bd7cd04226d4f2944352f11d4026f558a30989f984e3e1d802552d05908", CPU_TYPE_X64_ALL, "nc.x64.exe", 112, "" },
{"f1f2ea5c9e5539620b706e7af68e543bf7a731afb06ccce3815ab34dad64d697e4d6ffcd187a396619b8b52efe7edf88", CPU_TYPE_ALL_ALL, "oggdec.exe", 1101, ""},
{"245181321625445ac42fce31d64bf03872e77e2d0dd3c19d6c17ca2771354f096a6040827dd6d00ffd7342c7dd26168e", CPU_TYPE_X86_GEN, "oggenc2.i386.exe", 288135603, "2015"},
{"512b8efcd1003a0f67220a450d6ea4466194e8fd49fc090a69b15a858db11499acbf98f984530cd5d37b4b6abdd1c6d8", CPU_TYPE_X86_SSX, "oggenc2.sse2.exe", 288135603, "2015"},