From a0a29b95515f4399791655ef08434df12a434687 Mon Sep 17 00:00:00 2001 From: lordmulder Date: Thu, 22 Dec 2011 21:53:25 +0100 Subject: [PATCH] Experimental support for dcaenc, by Alexander E. Patrakov . --- LameXP_VS2010.vcxproj | 13 + LameXP_VS2010.vcxproj.filters | 9 + doc/Changelog.html | 1 + etc/Translation/Blank.ts | 793 ++++++++++++++++----------------- etc/Translation/LameXP_DE.ts | 20 +- etc/Translation/LameXP_ES.ts | 20 +- etc/Translation/LameXP_FR.ts | 20 +- etc/Translation/LameXP_IT.ts | 20 +- etc/Translation/LameXP_KR.ts | 20 +- etc/Translation/LameXP_PL.ts | 799 +++++++++++++++++----------------- etc/Translation/LameXP_RU.ts | 20 +- etc/Translation/LameXP_TW.ts | 20 +- etc/Translation/LameXP_UK.ts | 20 +- etc/Translation/LameXP_ZH.ts | 20 +- gui/MainWindow.ui | 13 +- res/Tools_Encd.qrc | 1 + res/localization/LameXP_DE.qm | Bin 75038 -> 74687 bytes res/localization/LameXP_ES.qm | Bin 74673 -> 74279 bytes res/localization/LameXP_FR.qm | Bin 65637 -> 65253 bytes res/localization/LameXP_IT.qm | Bin 37735 -> 37507 bytes res/localization/LameXP_KR.qm | Bin 44936 -> 44598 bytes res/localization/LameXP_PL.qm | Bin 70434 -> 70026 bytes res/localization/LameXP_TW.qm | Bin 52465 -> 52169 bytes res/localization/LameXP_UK.qm | Bin 75843 -> 75415 bytes res/localization/LameXP_ZH.qm | Bin 52465 -> 52169 bytes src/Config.h | 4 +- src/Dialog_About.cpp | 23 +- src/Dialog_MainWindow.cpp | 17 + src/Dialog_Processing.cpp | 124 +++--- src/Dialog_Processing.h | 2 + src/Encoder_DCA.cpp | 152 +++++++ src/Encoder_DCA.h | 45 ++ src/Model_Settings.h | 3 +- src/Thread_Process.cpp | 4 +- src/Tools.h | 1 + 35 files changed, 1252 insertions(+), 932 deletions(-) create mode 100644 src/Encoder_DCA.cpp create mode 100644 src/Encoder_DCA.h diff --git a/LameXP_VS2010.vcxproj b/LameXP_VS2010.vcxproj index dc19d48b..b5ad6f79 100644 --- a/LameXP_VS2010.vcxproj +++ b/LameXP_VS2010.vcxproj @@ -275,6 +275,7 @@ del "$(TargetDir)imageformats\q???d4.dll" + @@ -327,6 +328,7 @@ del "$(TargetDir)imageformats\q???d4.dll" + @@ -451,6 +453,17 @@ del "$(TargetDir)imageformats\q???d4.dll" "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)" "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)" + + "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)" + "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)" + "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)" + MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp" + MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp" + MOC "$(SolutionDir)tmp\MOC_%(Filename).cpp" + $(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs) + $(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs) + $(SolutionDir)tmp\MOC_%(Filename).cpp;%(Outputs) + "$(QTDIR)\bin\moc.exe" -o "$(SolutionDir)tmp\MOC_%(Filename).cpp" "%(FullPath)" diff --git a/LameXP_VS2010.vcxproj.filters b/LameXP_VS2010.vcxproj.filters index b9af950c..31beb517 100644 --- a/LameXP_VS2010.vcxproj.filters +++ b/LameXP_VS2010.vcxproj.filters @@ -346,6 +346,12 @@ Generated Files\MOC + + Source Files\Encoders + + + Generated Files\MOC + @@ -644,6 +650,9 @@ Header Files\Misc + + Header Files\Encoders + diff --git a/doc/Changelog.html b/doc/Changelog.html index 0e1b564e..66cb1bc0 100644 --- a/doc/Changelog.html +++ b/doc/Changelog.html @@ -19,6 +19,7 @@ a:visited { color: #0000EE; } Changes between v4.03 and v4.04:
  • Added support for the QAAC Encoder, requires QuickTime v7.7.1 or newer (see FAQ doc for details)
  • Added Chinese and Taiwanese translations, thanks to 456Vv <123@456vv.com> +
  • Added experimental support for dcaenc, created by Alexander E. Patrakov <patrakov@gmail.com>
  • Updated Qt runtime libraries to v4.8.0 (2011-12-15), compiled with MSVC 10.0
  • Updated LAME encoder to v3.99.2 Final (2011-11-18), compiled with ICL 12.1.7 and MSVC 10.0 (details)
  • Updated MediaInfo to v0.7.52 (2011-12-19), compiled with ICL 12.1.6 and MSVC 10.0 diff --git a/etc/Translation/Blank.ts b/etc/Translation/Blank.ts index 3c16d2ef..1f6a3051 100644 --- a/etc/Translation/Blank.ts +++ b/etc/Translation/Blank.ts @@ -66,7 +66,7 @@ - + Discard @@ -108,10 +108,10 @@ - + Released under the terms of the GNU Lesser General Public License. @@ -252,46 +252,46 @@ - MediaInfo - Media File Analysis Tool + dcaenc + + + + + Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL. - SoX - Sound eXchange + MediaInfo - Media File Analysis Tool - GnuPG - The GNU Privacy Guard + SoX - Sound eXchange - GNU Wget - Software for retrieving files using HTTP + GnuPG - The GNU Privacy Guard - Silk Icons - Over 700 icons in PNG format + GNU Wget - Software for retrieving files using HTTP - - By Mark James, released under the Creative Commons 'by' License. - - - - + LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors. - + About Third-party Software - + n/a @@ -729,7 +729,7 @@ - + Source Files @@ -750,13 +750,13 @@ - + Show Details - + Output Directory @@ -792,7 +792,7 @@ - + Meta Data @@ -833,7 +833,7 @@ - + Compression @@ -873,1373 +873,1378 @@ - + + DCA Enc + + + + Rate Control Method - + Quality-based (VBR) - + Average Bitrate (ABR) - + Constant Bitrate (CBR) - + Quality / Bitrate - + Minimum - + Maximum - - + + Advanced Options - + Bitrate Management (LAME and OggEnc2) - + Enable Bitrate Management - + Minimum (kbps): - + Maximum (kbps): - + LAME Algorithm Quality - + Faster Processing - + Better quality - + Warning: Audio quality will be very poor. Please do <u>not</u> complain about audio quality! - + Warning: Processing speed will be very slow. Please do <u>not</u> complain about processing speed! - + Channel Mode / Sampling Rate - - + + Auto Select (Default) - + Joint Stereo - + Forced Joint Stereo - + Simple - + Dual Mono - + Mono - + MP3 Channel Mode: - + Sampling Rate (Hz): - + 16.000 - + 22.050 - + 24.000 - + 32.000 - + 44.100 - + 48.000 - + Enforce Stereo Downmix of Surround (Multi-Channel) Sources - + AAC Encoder-Options - + Enable 2-Pass Processing (ABR Mode) - + Select AAC Profile: - + Auto Select (Recommended) - + Enforce LC-AAC - + Enforce HE-AAC (AAC + SBR) - + Enforce HE-AAC v2 (AAC + SBR + PS) - + Volume Normalization - + Enable Normalization Filter - + Peak Volume (dB): - + Peak Level - + RMS Level - + None - + Equalization Mode: - + Tone Adjustment - + Adjust Treble (dB): - + Adjust Bass (dB): - + Custom Encoder Parameters - - - - - + + + + + You can enter custom parameters here! - + Lame MP3: - + OggEnc2: - + MPEG-4 AAC: - + FLAC: - + Warning: Custom parameters won't be checked at all. Use them at your own risk !!! - + Aften A/52: - + Multi-Threading - + Choose the number of parallel instances based on the number of CPU cores (Recommended) - + Fewer Instances - + More Instances - + Temp Directory - + Browse... - + Store temporary files in your system's default TEMP directory (Recommended) - + Aften A/52 Options - + Film Light - + Film Standard - + Music Light - + Music Standard - + Speech - + None (Default) - + Auto Select - + 1+1 (Ch1,Ch2) - + 1/0 (C) - + 2/0 (L,R) - + 3/0 (L,R,C) - + 2/1 (L,R,S) - + 3/1 (L,R,C,S) - + 2/2 (L,R,SL,SR) - + 3/2 (L,R,C,SL,SR) - + Audio Coding Mode: - + Dynamic Range Compression: - + Fast Bit Allocation (Less Accurate) - + Exponent Search Size: - + Rename Output Files - + Enter the pattern to rename the output files here! - + Rename Output Files - + <a href="reset">Reset</a> &nbsp; <a href="#">Show List of Macros</a> - + Rename Pattern: - + Example File Name: - + Reset Advanced Options - + Encode Now! - - + + About... - + Exit Program - + File - + ? - + View - + Style - + Language - + Tools - + Configuration - + Quit - + Open File(s)... - - + + Visit Official Web-Site - - - - + + + + Check for Updates - + Open Folder... - + Clear All - + Plastique - + Cleanlooks - + Windows Vista ("Aero") - + Windows Classic - + Windows XP ("Luna") - - + + Disable Update Reminder - - + + Disable Sound Effects - + Install WMA Decoder - + Disable Nero AAC Notifications - + Show DropBox - + From File... - + Encode! - + Disable Shell Integration - + Frequently Asked Questions - + Changelog - + Translator's Guide - + Help && Support - + Open Folder Recursively... - + Check for Beta Updates - + Import Cue Sheet - + Disable Slow Startup Notifications - + Hibernate Computer On Shutdown - + Adding file(s), please wait... - - + + Access Denied - + %1 file(s) have been rejected, because read access was not granted! - + This usually means the file is locked by another process. - + CDDA Files - + %1 file(s) have been rejected, because they are dummy CDDA files! - + Sorry, LameXP cannot extract audio tracks from an Audio-CD at present. - + We recommend using %1 for that purpose. - + Cue Sheet - + %1 file(s) have been rejected, because they appear to be Cue Sheet images! - + Please use LameXP's Cue Sheet wizard for importing Cue Sheet files. - + Files Rejected - + %1 file(s) have been rejected, because the file format could not be recognized! - + This usually means the file is damaged or the file format is not supported. - + Scanning folder(s) for files, please wait... - + DEMO VERSION - + You can drop in audio files here! - + Open File in External Application - + Browse File Location - + Browse Selected Folder - + Bookmark Current Output Folder - + License Declined - + You have declined the license. Consequently the application will exit now! - + Goodbye! - + LameXP - Expired - + This demo (pre-release) version of LameXP has expired at %1. - + LameXP is free software and release versions won't expire. - - + + Exit Program - + It seems that a bogus anti-virus software is slowing down the startup of LameXP. - + Please refer to the %1 document for details and solutions! - + Slow Startup - - - - - - + + + + + + Discard - - + + Don't Show Again - + Urgent Update - + Your version of LameXP is more than a year old. Time for an update! - - + + Ignore - + Skipping update check this time, please be patient... - - - + + + Update Reminder - + Your last update check was more than 14 days ago. Check for updates now? - + Your did not check for LameXP updates yet. Check for updates now? - + Postpone - + LameXP detected that your version of the Nero AAC encoder is outdated! - + The current version available is %1 (or later), but you still have version %2 installed. - + n/a - + You can download the latest version of the Nero AAC encoder from the Nero website at: - + (Hint: Please ignore the name of the downloaded ZIP file and check the included 'changelog.txt' instead!) - + AAC Encoder Outdated - + The Nero AAC encoder could not be found. AAC encoding support will be disabled. - + Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory! - + Your LameXP directory is located here: - + You can download the Nero AAC encoder for free from the official Nero website at: - + AAC Support Disabled - - - + + + LameXP - + You must add at least one file to the list before proceeding! - + Not Found - + Your currently selected TEMP folder does not exist anymore: - + Restore Default - + Cancel - + There are less than %1 GB of free diskspace available on your system's TEMP folder. - + It is highly recommend to free up more diskspace before proceeding with the encode! - + Your TEMP folder is located at: - + Low Diskspace Warning - + Abort Encoding Process - + Clean Disk Now - + Low Diskspace - + You are proceeding with low diskspace. Problems might occur! - + Sorry, an unsupported encoder has been chosen! - + Cannot write to the selected output directory. - + Please choose a different directory! - + Load Translation - + Translation Files - + Do you really want to disable the update reminder? - - - - - - - + + + + + + + Yes - - - - - - - + + + + + + + No - + The update reminder has been disabled. - + Please remember to check for updates at regular intervals! - + The update reminder has been re-enabled. - + Do you really want to disable all sound effects? - - + + Sound Effects - + All sound effects have been disabled. - + The sound effects have been re-enabled. - - - + + + Nero AAC Notifications - + Do you really want to disable all Nero AAC Encoder notifications? - + All Nero AAC Encoder notifications have been disabled. - + The Nero AAC Encoder notifications have been re-enabled. - - - + + + Slow Startup Notifications - + Do you really want to disable the slow startup notifications? - + The slow startup notifications have been disabled. - + The slow startup notifications have been re-enabled. - - + + Open Cue Sheet - - + + Cue Sheet File - - - + + + Beta Updates - + Do you really want LameXP to check for Beta (pre-release) updates? - + LameXP will check for Beta (pre-release) updates from now on. - + Check Now - + LameXP will <i>not</i> check for Beta (pre-release) updates from now on. - - - + + + Hibernate Computer - + Do you really want the computer to be hibernated on shutdown? - + LameXP will hibernate the computer on shutdown from now on. - + LameXP will <i>not</i> hibernate the computer on shutdown from now on. - - + + Shell Integration - + Do you really want to disable the LameXP shell integration? - + The LameXP shell integration has been disabled. - + The LameXP shell integration has been re-enabled. - - + + Add file(s) - - + + Add Folder - - + + New Folder - + Enter the name of the new folder: - + Failed to create folder - + The new folder could not be created: - + Drive is read-only or insufficient access rights! - - - - + + + + Quality Level %1 - - - + + + Compression %1 - - - + + + Uncompressed - + Best Quality (Very Slow) - + High Quality (Recommended) - + Average Quality (Default) - + Low Quality (Fast) - + Poor Quality (Very Fast) - + File name without extension - + Track number with leading zero - + Track title - + Artist name - + Album name - + Year with (at least) four digits - + Comment - + Characters forbidden in file names: - + Rename Macros - + %1 Instance(s) - + Cannot write to the selected directory. Please choose another directory! - + Already Running - + LameXP is already running, please use the running instance! @@ -2533,112 +2538,112 @@ ProcessThread - + Starting... - + Not found! - + The format of this file is NOT supported: - + Container Format: - + Audio Format: - + Unsupported! - + Done. - + Aborted! - + Failed! - + Encoding - + Analyzing - + Filtering - + Decoding - + The source audio file could not be found: - + The source audio file could not be opened for reading: - + The target output directory doesn't exist and could NOT be created: - + The target output directory is NOT writable: - + Unknown File Name - + Unknown Title - + Unknown Artist - + Unknown Album - + Unknown Comment @@ -2689,141 +2694,141 @@ - + Show details for selected job - + Browse Output File Location - + Encoding Files - + Your files are being encoded, please be patient... - + Encoding files, please wait... - + Multi-threading enabled: Running %1 instances in parallel! - + Aborted! Waiting for running jobs to terminate... - + Encoding: %1 files of %2 completed so far, please wait... - + Creating the playlist file, please wait... - + Process was aborted by the user after %1 file(s)! - + Process was aborted prematurely by the user! - + LameXP - Aborted - + Process was aborted by the user. - + Process finished after %1. - + Error: %1 of %2 files failed. Double-click failed items for detailed information! - + LameXP - Error - + At least one file has failed! - + All files completed successfully. - + LameXP - Done - + Playlist creation failed - + The playlist file could not be created: - + Warning: Computer will shutdown in %1 seconds... - - + + Cancel Shutdown - + hour(s) - - + + minute(s) - - + + second(s) - + millisecond(s) diff --git a/etc/Translation/LameXP_DE.ts b/etc/Translation/LameXP_DE.ts index 290fe7b3..734ccc11 100644 --- a/etc/Translation/LameXP_DE.ts +++ b/etc/Translation/LameXP_DE.ts @@ -87,10 +87,6 @@ Open and patent-free lossless audio compression technology. Offene und patentfreie Technlogie zur verlustfreien Audiokompression. - - By Mark James, released under the Creative Commons 'by' License. - Von Mark James, veröffentlicht unter der Creative Commons 'by' Lizenz. - About Third-party Software Über Drittsoftware @@ -191,10 +187,6 @@ GNU Wget - Software for retrieving files using HTTP GNU Wget - Software für den Datei-Download über HTTP - - Silk Icons - Over 700 icons in PNG format - Silk Icons - Über 700 Symbole im PNG Format - Note: This demo (pre-release) version of LameXP will expire at %1. Still %2 days left. Hinweise: Diese Demo (Test) Version von LameXP läuft am %1 ab. Noch %2 Tage übrig. @@ -227,6 +219,14 @@ avs2wav - Avisynth to Wave Audio converter avs2wav - Avisynth zu Wave Audio Konverter + + dcaenc + + + + Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL. + + AudioFileModel @@ -1730,6 +1730,10 @@ Skipping update check this time, please be patient... Update-Überprüfung wird übersprungen, bitte warten... + + DCA Enc + + MetaInfo diff --git a/etc/Translation/LameXP_ES.ts b/etc/Translation/LameXP_ES.ts index 6584986c..0a324fcc 100644 --- a/etc/Translation/LameXP_ES.ts +++ b/etc/Translation/LameXP_ES.ts @@ -87,10 +87,6 @@ Open and patent-free lossless audio compression technology. Tecnología de codificación de audio sin pérdidas, abierta y libre de patentes. - - By Mark James, released under the Creative Commons 'by' License. - Por Mark James, distribuido bajo Licencia Creative Commons. - About Third-party Software Acerca del Software de terceros @@ -167,10 +163,6 @@ GnuPG - The GNU Privacy Guard GnuPG - Guardián de privacidad GNU - - Silk Icons - Over 700 icons in PNG format - Silk Icons - Más de 700 iconos en formato PNG - Nero AAC Reference MPEG-4 Encoder Codificador MPEG-4 Nero AAC @@ -227,6 +219,14 @@ avs2wav - Avisynth to Wave Audio converter avs2wav - Conversor de Avisynth a WAV + + dcaenc + + + + Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL. + + AudioFileModel @@ -1729,6 +1729,10 @@ Skipping update check this time, please be patient... + + DCA Enc + + MetaInfo diff --git a/etc/Translation/LameXP_FR.ts b/etc/Translation/LameXP_FR.ts index 5ed87c5a..b0392e5f 100644 --- a/etc/Translation/LameXP_FR.ts +++ b/etc/Translation/LameXP_FR.ts @@ -88,10 +88,6 @@ Open and patent-free lossless audio compression technology. Technologie de compression audio sans perte ouverte et libre de brevets. - - By Mark James, released under the Creative Commons 'by' License. - Par Mark James, publié sous licence Creative Commons. - About Third-party Software A propos des logiciels tiers @@ -171,10 +167,6 @@ GnuPG - The GNU Privacy Guard GnuPG - The GNU Privacy Guard - - Silk Icons - Over 700 icons in PNG format - Silk Icons - Plus de 700 icônes au format PNG - Nero AAC Reference MPEG-4 Encoder Encodeur de référence MPEG-4 Nero AAC @@ -231,6 +223,14 @@ avs2wav - Avisynth to Wave Audio converter + + dcaenc + + + + Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL. + + AudioFileModel @@ -1739,6 +1739,10 @@ Ouvrir le dossier récursivement... Skipping update check this time, please be patient... + + DCA Enc + + MetaInfo diff --git a/etc/Translation/LameXP_IT.ts b/etc/Translation/LameXP_IT.ts index 54055631..aad2d054 100644 --- a/etc/Translation/LameXP_IT.ts +++ b/etc/Translation/LameXP_IT.ts @@ -87,10 +87,6 @@ Open and patent-free lossless audio compression technology. Tecnologia di compressione audio libera e non vincolata da brevetti. - - By Mark James, released under the Creative Commons 'by' License. - Di Mark James, rilasciato sotto Licenza 'by' Creative Commons. - About Third-party Software Riguardo Software Terze Parti @@ -167,10 +163,6 @@ GnuPG - The GNU Privacy Guard - - Silk Icons - Over 700 icons in PNG format - - Nero AAC Reference MPEG-4 Encoder @@ -227,6 +219,14 @@ avs2wav - Avisynth to Wave Audio converter + + dcaenc + + + + Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL. + + AudioFileModel @@ -1730,6 +1730,10 @@ Skipping update check this time, please be patient... + + DCA Enc + + MetaInfo diff --git a/etc/Translation/LameXP_KR.ts b/etc/Translation/LameXP_KR.ts index 8c43d15a..e850cd51 100644 --- a/etc/Translation/LameXP_KR.ts +++ b/etc/Translation/LameXP_KR.ts @@ -175,14 +175,6 @@ GNU Wget - Software for retrieving files using HTTP GNU Wget - HTTP를 사용하여 파일을 검색하기 위한 소프트웨어 - - Silk Icons - Over 700 icons in PNG format - Silk Icons - PNG 형식의 700 이상의 아이콘 - - - By Mark James, released under the Creative Commons 'by' License. - By Mark James, 크리에이티브 커먼즈 'by' 라이센스 하에 출시됨. - LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors. LameXP 전체는 LoRd_MuldeR에게 저작권이 있습니다. LameXP에 사용된 타사 소프트웨어는 각 소프트웨어의 저작자에게 저작권이 있습니다. @@ -227,6 +219,14 @@ avs2wav - Avisynth to Wave Audio converter + + dcaenc + + + + Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL. + + AudioFileModel @@ -1729,6 +1729,10 @@ Skipping update check this time, please be patient... + + DCA Enc + + MetaInfo diff --git a/etc/Translation/LameXP_PL.ts b/etc/Translation/LameXP_PL.ts index 68535b5d..81209870 100644 --- a/etc/Translation/LameXP_PL.ts +++ b/etc/Translation/LameXP_PL.ts @@ -66,7 +66,7 @@ - + Discard Zamknij @@ -108,10 +108,10 @@ - + Released under the terms of the GNU Lesser General Public License. Wydane na warunkach licencji GNU Lesser General Public License. @@ -252,46 +252,46 @@ + dcaenc + + + + + Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL. + + + + MediaInfo - Media File Analysis Tool MediaInfo - Narzędzie do analizy plików multimedialnych - + SoX - Sound eXchange SoX - Sound eXchange - + GnuPG - The GNU Privacy Guard GnuPG - GNU Privacy Guard - + GNU Wget - Software for retrieving files using HTTP GNU Wget - Oprogramowanie służące do pobierania plików za pomocą protokołu HTTP - - Silk Icons - Over 700 icons in PNG format - Silk Icons - Ponad 700 ikon w formacie PNG - - - - By Mark James, released under the Creative Commons 'by' License. - Autorem pakietu jest Mark James, wydano na licencji Creative Commons. - - - + LameXP as a whole is copyrighted by 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. - + About Third-party Software Informacje o programach firm trzecich - + n/a n/d @@ -729,7 +729,7 @@ - + Source Files Pliki źródłowe @@ -750,13 +750,13 @@ - + Show Details Pokaż szczegóły - + Output Directory Folder docelowy @@ -792,7 +792,7 @@ - + Meta Data Tagi @@ -833,7 +833,7 @@ - + Compression Kompresja @@ -873,1373 +873,1378 @@ Aften A/52 - + + DCA Enc + + + + Rate Control Method Tryby przepływności bitów - + Quality-based (VBR) Jakość - Zmienny bitrate (VBR) - + Average Bitrate (ABR) Średni bitrate (ABR) - + Constant Bitrate (CBR) Stały bitrate (CBR) - + Quality / Bitrate Jakość/Bitrate - + Minimum Minimalny - + Maximum Maksymalny - - + + Advanced Options Opcje zaawansowane - + Bitrate Management (LAME and OggEnc2) Zarządzanie bitami (LAME i OggEnc2) - + Enable Bitrate Management Włącz zarządzanie bitami - + Minimum (kbps): Minimalny (kbps): - + Maximum (kbps): Maksymalny (kbps): - + LAME Algorithm Quality Jakość algorytmu LAME - + Faster Processing Szybsza kompresja - + Better quality Lepsza jakość - + Warning: Audio quality will be very poor. Please do <u>not</u> complain about audio quality! Ostrzeżnie: Jakość dźwięku będzie bardzo niska. Prosze <b>nie<b> kierować skarg do autora programu! - + Warning: Processing speed will be very slow. Please do <u>not</u> complain about processing speed! Ostrzeżenie: Kompresja może trwać bardzo długo. Prosze <b>nie<b> kierować skarg do autora programu! - + Channel Mode / Sampling Rate Tryb kanałów/Częstotliwość próbkowania - - + + Auto Select (Default) Automatycznie (Domyślnie) - + Joint Stereo Joint Stereo - + Forced Joint Stereo Wymuś Joint Stereo - + Simple Simple - + Dual Mono Dual Mono - + Mono Mono - + MP3 Channel Mode: Tryb kanałów MP3: - + Sampling Rate (Hz): Próbkowanie (Hz): - + 16.000 16.000 - + 22.050 22.050 - + 24.000 24.000 - + 32.000 32.000 - + 44.100 44.100 - + 48.000 48.000 - + Enforce Stereo Downmix of Surround (Multi-Channel) Sources Wymuś miksowanie plików wielokanałowych do stereo - + AAC Encoder-Options Opcje kodera AAC - + Enable 2-Pass Processing (ABR Mode) Włącz kompresję dwuprzebiegową (w trybie ABR) - + Select AAC Profile: Wybierz profil AAC: - + Auto Select (Recommended) Automatyczny (Zalecane) - + Enforce LC-AAC Wymuś LC-AAC - + Enforce HE-AAC (AAC + SBR) Wymuś HE-AAC (AAC + SBR) - + Enforce HE-AAC v2 (AAC + SBR + PS) Wymuś HE-AAC v2 (AAC + SBR + PS) - + Volume Normalization Normalizacja dźwięku - + Enable Normalization Filter Włącz filtr normalizacji - + Peak Volume (dB): Najwyższa głośność (dB): - + Peak Level - + RMS Level - + None - + Equalization Mode: Tryb korekcji: - + Tone Adjustment Zmiana tonów - + Adjust Treble (dB): Zmień tony wysokie (dB): - + Adjust Bass (dB): Zmień tony niskie (dB): - + Custom Encoder Parameters Własne parametry kodowania - - - - - + + + + + You can enter custom parameters here! Tutaj możesz wpisać własne parametry kodowania! - + Lame MP3: Lame MP3: - + OggEnc2: OggEnc2: - + MPEG-4 AAC: MPEG-4 AAC: - + FLAC: FLAC: - + Warning: Custom parameters won't be checked at all. Use them at your own risk !!! Ostrzeżenie: Włąśne parametry kompresji nie będą weryfikowane. Używasz je na własne ryzyko!!! - + Aften A/52: Aften A/52: - + Multi-Threading Wielowątkowość - + Choose the number of parallel instances based on the number of CPU cores (Recommended) Wybierz ilość równoległych kodowań na podstawie ilości wątków procesora (Zalecane) - + Fewer Instances Mniej - + More Instances Więcej - + Temp Directory Folder tymczasowy - + Browse... Wybierz... - + Store temporary files in your system's default TEMP directory (Recommended) Zapisuj pliki tymczasowe w systemowej lokalizacji TEMP (Zalecane) - + Aften A/52 Options Opcje A/52 - + Film Light - + Film Standard - + Music Light - + Music Standard - + Speech Mowa - + None (Default) Żadna (Domyślnie) - + Auto Select Automatycznie - + 1+1 (Ch1,Ch2) 1+1 (Ch1,Ch2) - + 1/0 (C) 1/0 (C) - + 2/0 (L,R) 2/0 (L,R) - + 3/0 (L,R,C) 3/0 (L,R,C) - + 2/1 (L,R,S) 2/1 (L,R,S) - + 3/1 (L,R,C,S) 3/1 (L,R,C,S) - + 2/2 (L,R,SL,SR) 2/2 (L,R,SL,SR) - + 3/2 (L,R,C,SL,SR) 3/2 (L,R,C,SL,SR) - + Audio Coding Mode: Ilość kanałów: - + Dynamic Range Compression: Kompresja dynamiki (DRC): - + Fast Bit Allocation (Less Accurate) Szybka alokacja bitów (Mniejsza dokładność) - + Exponent Search Size: - + Rename Output Files Zmiana nazwy plików wyjściowych - + Enter the pattern to rename the output files here! Zapisz tutaj wzór wg którego zmienisz nazwy! - + Rename Output Files Zmieniaj nazwy plików - + <a href="reset">Reset</a> &nbsp; <a href="#">Show List of Macros</a> <a href="reset">Resetuj</a> &nbsp; <a href="#">Pokaż listę makr</a> - + Rename Pattern: Wzór wyjściowy: - + Example File Name: Przykładowa nazwa pliku: - + Reset Advanced Options Resetuj opcje zaawansowane - + Encode Now! Kompresuj! - - + + About... Info... - + Exit Program Wyjdź z programu - + File Plik - + ? ? - + View Widok - + Style Styl - + Language Język - + Tools Narzędzia - + Configuration Konfiguracja - + Quit Zamknij - + Open File(s)... Otwórz plik(i)... - - + + Visit Official Web-Site Odwiedź oficjalną stronę - - - - + + + + Check for Updates Sprawdź aktualizacje - + Open Folder... Otwórz folder... - + Clear All Wyczyść wszystko - + Plastique Plastique - + Cleanlooks Cleanlooks - + Windows Vista ("Aero") Windows Vista ("Aero") - + Windows Classic Windows Classic - + Windows XP ("Luna") Windows XP ("Luna") - - + + Disable Update Reminder Wyłącz przypominanie o aktualizacji - - + + Disable Sound Effects Wyłącz efekty dźwiękowe - + Install WMA Decoder Zainstaluj Dekoder WMA - + Disable Nero AAC Notifications Wyłącz powiadomienia Nero AAC - + Show DropBox Pokaż DropBoxa - + From File... Z pliku... - + Encode! Kompresuj! - + Disable Shell Integration Wyłącz integrację z systemem - + Frequently Asked Questions Pytania i Odpowiedzi - + Changelog Lista zmian - + Translator's Guide Przewodnik tłumacza - + Help && Support Pomoc i Wsparcie - + Open Folder Recursively... Otwórz folder rekurencyjnie... - + Check for Beta Updates Sprawdzaj czy jest Beta - + Import Cue Sheet Importuj plik Cue - + Disable Slow Startup Notifications Wyłącz powiadomienia o powolnym starcie - + Hibernate Computer On Shutdown - + Adding file(s), please wait... Dodawanie plików, prosze czekać... - - + + Access Denied Dostęp zablokowany - + %1 file(s) have been rejected, because read access was not granted! %1 plik(ów) zostało odrzuconych z powodu braku dostępu do pliku! - + This usually means the file is locked by another process. To przeważnie oznacza, że plik jest zablokowany przez inny proces. - + CDDA Files Pliki CDDA - + %1 file(s) have been rejected, because they are dummy CDDA files! %1 plik(ów) zostało odrzuconych ponieważ to nie są właściwe pliki CDDA! - + Sorry, LameXP cannot extract audio tracks from an Audio-CD at present. LameXP nie może teraz wyekstrachować ścieżki z płyty Audio-CD. - + We recommend using %1 for that purpose. Zaleca się użycie w tym celu %1. - + Cue Sheet Cue Sheet - + %1 file(s) have been rejected, because they appear to be Cue Sheet images! %1 plik(ów) zostało odrzuconych, ponieważ to nie są pliki obrazów Cue Sheet! - + Please use LameXP's Cue Sheet wizard for importing Cue Sheet files. Prosze użyć przewodnika Cue Sheet w LameXP w celu importowania tych plików. - + Files Rejected Pliki odrzucone - + %1 file(s) have been rejected, because the file format could not be recognized! %1 plik(ów) zostało odrzuconych, ponieważ ich format nie został rozpoznany! - + This usually means the file is damaged or the file format is not supported. To przeważnie oznacza że plik jest uszkodzony lub format pliku nie jest wspierany. - + Scanning folder(s) for files, please wait... Skanowanie folderu/ów, prosze czekać... - + You can drop in audio files here! Tutaj możesz upuścić pliki dźwiękowe! - + Open File in External Application Otwórz plik w zewnętrznym programie - + Browse File Location Otwórz lokalizację pliku - + Browse Selected Folder Otwórz wybrany folder - + Bookmark Current Output Folder Zapamiętaj wybrany folder - + License Declined Licencja odrzucona - + You have declined the license. Consequently the application will exit now! Odrzuciłeś licencję. W takim razie program zostanie teraz zamknięty! - + Goodbye! Naraska! - + LameXP - Expired LameXP - Termin wygasł - + This demo (pre-release) version of LameXP has expired at %1. Ta wersja demo (beta) LameXP wygasła %1. - + LameXP is free software and release versions won't expire. LameXP jest darmowym oprogramowaniem i pełna wersja nie wygasa. - - + + Exit Program Wyjdź z programu - + It seems that a bogus anti-virus software is slowing down the startup of LameXP. - + Please refer to the %1 document for details and solutions! Prosze sprawdzić dokument %1 w celu dalszych szcegółów i rozwiązań! - + Slow Startup Powolny start - - - - - - + + + + + + Discard Zamknij - - + + Don't Show Again Nie pokazuj ponownie - + Urgent Update Ważna aktualizacja - + Your version of LameXP is more than a year old. Time for an update! Twoja wersja LameXP jest starsza niż rok! Czas na aktualizację! - - - + + + Update Reminder Powiadomienie aktualizacji - + Your last update check was more than 14 days ago. Check for updates now? Ostatnie sprawdzenie aktualizacji było ponad 14 dni temu. Sprawdzić teraz aktualizacje? - + Your did not check for LameXP updates yet. Check for updates now? Nie sprawdzałeś jeszcze aktualizacji LameXP. Sprawdzić teraz aktualizacje? - + Postpone Przełóż - + LameXP detected that your version of the Nero AAC encoder is outdated! LameXP wykrył że Twoja wersja kodera Nero AAC jest nieaktualna! - + The current version available is %1 (or later), but you still have version %2 installed. Wersją dostępną obecnie jest %1, Twoja wersja to %2. - + n/a n/d - + You can download the latest version of the Nero AAC encoder from the Nero website at: Możesz pobrać najnowszą wersję kodera Nero AAC ze strony Nero: - + AAC Encoder Outdated Koder AAC jest nieaktualny - + The Nero AAC encoder could not be found. AAC encoding support will be disabled. Nie można odnaleźć kodera Nero AAC. Kompresja formatu AAC zostanie wyłączona. - + Please put 'neroAacEnc.exe', 'neroAacDec.exe' and 'neroAacTag.exe' into the LameXP directory! Prosze skopiować 'neroAacEnc.exe', 'neroAacDec.exe', oraz 'neroAacTag.exe' do folderu LameXP! - + Your LameXP directory is located here: Folder aplikacji LameXP znajduje się tutaj: - + You can download the Nero AAC encoder for free from the official Nero website at: Możesz pobrać koder Nero AAC za darmo z oficjalnej strony Nero: - + AAC Support Disabled Wsparcie dla AAC wyłączone - - - + + + LameXP LameXP - + You must add at least one file to the list before proceeding! Powinienieś dodać przynajmniej jeden plik do listy aby zacząć działać! - + Not Found Nie znaleziono - + Your currently selected TEMP folder does not exist anymore: Wybrany przez Ciebie folder tymczasowy TEMP już nie istnieje: - + Restore Default Przywróć domyślne - + Cancel Anuluj - + Low Diskspace Warning Ostrzeżenie o małej ilości miejsca na dysku - + There are less than %1 GB of free diskspace available on your system's TEMP folder. Jest mniej niż %1 GB dostępnego miejsca w systemowym folderze TEMP. - + DEMO VERSION - + (Hint: Please ignore the name of the downloaded ZIP file and check the included 'changelog.txt' instead!) - + It is highly recommend to free up more diskspace before proceeding with the encode! Jest wysoce zalecane zwolnić miejsce na dysku zanim zaczniesz kompresję! - + Your TEMP folder is located at: Twój folder TEMP znajduję się: - + Abort Encoding Process Przerwij proces kompresji - + Clean Disk Now Wykonaj oczyszczanie dysku - - + + Ignore Ignoruj - + Skipping update check this time, please be patient... - + Low Diskspace Mało miejsca na dysku - + You are proceeding with low diskspace. Problems might occur! Chcesz zacząć działać z małą ilością miejsca na dysku. Mogą wystąpić problemy! - + Sorry, an unsupported encoder has been chosen! Został wybrany koder, który nie jest wspierany! - + Cannot write to the selected output directory. Nie można zapisać do wybranej lokalizacji. - + Please choose a different directory! Prosze wybrać inną lokalizację! - + Load Translation Zaladuj plik językowy - + Translation Files Pliki językowe - + Do you really want to disable the update reminder? Czy na pewno chcesz wyłączyć przypominanie o aktualizacjach? - - - - - - - + + + + + + + Yes Tak - - - - - - - + + + + + + + No Nie - + The update reminder has been disabled. Przypominanie o aktualizacjach wyłączone. - + Please remember to check for updates at regular intervals! Prosze pamiętać o okresowym sprawdzaniu aktualizacji! - + The update reminder has been re-enabled. Przypominanie o aktualizacjach ponownie włączone. - + Do you really want to disable all sound effects? Czy na pewno chcesz wyłączyć wszystkie dźwiękowe? - - + + Sound Effects Efekty dźwiękowe - + All sound effects have been disabled. Wszystkie efekty dźwiękowe zostały wyłączone. - + The sound effects have been re-enabled. Efekty dźwiękowe zostały ponownie włączone. - - - + + + Nero AAC Notifications Powiadomienia Nero AAC - + Do you really want to disable all Nero AAC Encoder notifications? Czy na pewno chcesz wyłączyć wszystkie powiadomienia Nero AAC? - + All Nero AAC Encoder notifications have been disabled. Wszystkie powiadomienia kodera Nero AAC zostały wyłączone. - + The Nero AAC Encoder notifications have been re-enabled. Powiadomienia Nero AAC zostały ponownie włączone. - - - + + + Slow Startup Notifications Powiadomienia o powolnym starcie - + Do you really want to disable the slow startup notifications? Czy na pewno chcesz wyłączyć powiadomienia o powolnym starcie? - + The slow startup notifications have been disabled. Powiadomienia o powolnym starcie zostały wyłączone. - + The slow startup notifications have been re-enabled. Powiadomienia o powolnym starcie zostały ponownie włączone. - - + + Open Cue Sheet Otwórz plik Cue Sheet - - + + Cue Sheet File Plik Cue Sheet - - - + + + Beta Updates Aktualizacje Beta - + Do you really want LameXP to check for Beta (pre-release) updates? Czy na pewno chcesz aby LameXP sprawdzał aktualizacje Beta? - + LameXP will check for Beta (pre-release) updates from now on. Od teraz LameXP będzie sprawdzał aktualizacje Beta. - + Check Now Sprawdź teraz - + LameXP will <i>not</i> check for Beta (pre-release) updates from now on. LameXP od teraz <i>nie będzie</i> sprawdzał aktualizacji Beta. - - - + + + Hibernate Computer - + Do you really want the computer to be hibernated on shutdown? - + LameXP will hibernate the computer on shutdown from now on. - + LameXP will <i>not</i> hibernate the computer on shutdown from now on. - - + + Shell Integration Integracja z systemem - + Do you really want to disable the LameXP shell integration? Czy na pewno chcesz wyłączyć integrację LameXP z systemem? - + The LameXP shell integration has been disabled. Integracja LameXP z systemem zostałą wyłączona. - + The LameXP shell integration has been re-enabled. Integracja LameXP z systemem została ponownie włączona. - - + + Add file(s) Dodaj plik(i) - - + + Add Folder Dodaj folder - - + + New Folder Nowy folder - + Enter the name of the new folder: Wprowadź nazwę nowego folderu: - + Failed to create folder Utworzenie folderu zakończone niepowodzeniem - + The new folder could not be created: Nowy folder nie mógł zostać stworzony: - + Drive is read-only or insufficient access rights! Dysk tylko do odczytu lub brak praw dostępu! - - - - + + + + Quality Level %1 Poziom jakości %1 - - - + + + Compression %1 Kompresja %1 - - - + + + Uncompressed Nieskompresowany - + Best Quality (Very Slow) Najlepsza jakość (Bardzo wolno) - + High Quality (Recommended) Wysoka jakość (Zalecane) - + Average Quality (Default) Średnia jakość (Domyślnie) - + Low Quality (Fast) Niska jakość (Szybko) - + Poor Quality (Very Fast) Najniższa jakość (Bardzo szybko) - + File name without extension Nazwa pliku bez rozszerzenia - + Track number with leading zero Numer ścieżki z zerem na początku - + Track title Nazwa ścieżki - + Artist name Nazwa Artysty - + Album name Nazwa Albumu - + Year with (at least) four digits Rok z (przynajmniej) czterema cyframi - + Comment Komentarz - + Characters forbidden in file names: Zabronione znaki w nazwach plików: - + Rename Macros Zmień nazwy makr - + %1 Instance(s) %1 wątek/ki - + Cannot write to the selected directory. Please choose another directory! Nie można zapisać do wybranej lokalizacji. Prosze wybierz inną lokalizację! - + Already Running Już działa - + LameXP is already running, please use the running instance! LameXP już działa, przejdź do działającego programu! @@ -2533,112 +2538,112 @@ ProcessThread - + Starting... Rozpoczynanie... - + Not found! Nie znaleziono! - + The format of this file is NOT supported: Format tego pliku NIE jest obsługiwany: - + Container Format: Format kontenera: - + Audio Format: Format dźwięku: - + Unsupported! Nieobsługiwany! - + Done. Zrobione. - + Aborted! Przerwane! - + Failed! Niepowodzenie! - + Encoding Kompresowanie - + Analyzing - + Filtering Filtrowanie - + Decoding Dekodowanie - + The source audio file could not be found: Źródłowy plik dźwiękowy nie został odnaleziony: - + The source audio file could not be opened for reading: Źródłowy plik dźwiękowy nie mógł zostać otworzony: - + The target output directory doesn't exist and could NOT be created: Lokalizacja docelowa nie istnieje lu NIE mogła zostać utworzona: - + The target output directory is NOT writable: Nie można zapisać do lokalizacji docelowej: - + Unknown File Name Nieznana nazwa pliku - + Unknown Title Nieznany Tytuł - + Unknown Artist Nieznany Artysta - + Unknown Album Nieznany Album - + Unknown Comment Nieznany Komentarz @@ -2689,141 +2694,141 @@ Powrót - + Show details for selected job Pokaż szczegóły wybranego zadania - + Browse Output File Location Wybierz lokalizację dla plików wyjściowych - + Encoding Files Kompresowanie plików - + Your files are being encoded, please be patient... Twoje pliki są właśnie kompresowane, prosze być cierpliwy... - + Encoding files, please wait... Kompresowanie plików, prosze czekać... - + Multi-threading enabled: Running %1 instances in parallel! Wielowątkowosć włączona: Równolegle wykonywanych jest %1 kodowań! - + Aborted! Waiting for running jobs to terminate... Przerwano! Czekanie na wyłączenie procesu... - + Encoding: %1 files of %2 completed so far, please wait... Kompresja: Prosze czekać, jak dotąd wykonano %1 z %2 plików... - + Creating the playlist file, please wait... Tworzenie pliku playlisty, prosze czekać... - + Process was aborted by the user after %1 file(s)! Proces został przerwany przez użytkownika po wykonaniu %1 plików! - + Process was aborted prematurely by the user! Proces został przedwcześnie zakończony przez użytkownika! - + LameXP - Aborted LameXP - Przerwano - + Process was aborted by the user. Proces został przerwany przez użytkownika. - + Process finished after %1. - + Error: %1 of %2 files failed. Double-click failed items for detailed information! Błąd: %1 z %2 plików nie zostało skompresowanych. Kliknij dwukrotnie na plik aby zobaczyć szczegóły! - + LameXP - Error LameXP - Błąd - + At least one file has failed! Przynajmniej jeden plik nie został skompresowany! - + All files completed successfully. Kompresja wszystkich plików zakończona powodzeniem. - + LameXP - Done LameXP - Zrobione - + Playlist creation failed Tworzenie playlisty zakończone niepowodzeniem - + The playlist file could not be created: Playlista nie mogła zostać utworzona: - + Warning: Computer will shutdown in %1 seconds... Ostrzeżenie: Komputer zostanie zamknięty za %1 sekund/y... - - + + Cancel Shutdown Anuluj wyłączenie komputera - + hour(s) - - + + minute(s) - - + + second(s) - + millisecond(s) diff --git a/etc/Translation/LameXP_RU.ts b/etc/Translation/LameXP_RU.ts index 393faf49..1a44da5a 100644 --- a/etc/Translation/LameXP_RU.ts +++ b/etc/Translation/LameXP_RU.ts @@ -175,14 +175,6 @@ GNU Wget - Software for retrieving files using HTTP - - Silk Icons - Over 700 icons in PNG format - - - - By Mark James, released under the Creative Commons 'by' License. - - LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors. LameXP защищена авторским правом LoRd_MuldeR. Авторское право на программное обеспечение третьих сторон, используемое в LameXP, принадлежит индивидуальным авторам. @@ -227,6 +219,14 @@ avs2wav - Avisynth to Wave Audio converter + + dcaenc + + + + Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL. + + AudioFileModel @@ -1735,6 +1735,10 @@ Skipping update check this time, please be patient... + + DCA Enc + + MetaInfo diff --git a/etc/Translation/LameXP_TW.ts b/etc/Translation/LameXP_TW.ts index 90f89e33..8d491415 100644 --- a/etc/Translation/LameXP_TW.ts +++ b/etc/Translation/LameXP_TW.ts @@ -87,10 +87,6 @@ Open and patent-free lossless audio compression technology. 打開和專利自由無損音頻壓縮技術. - - By Mark James, released under the Creative Commons 'by' License. - By Mark James,在知識共享的許可證發布. - About Third-party Software 關于第三方軟件 @@ -163,10 +159,6 @@ GnuPG - The GNU Privacy Guard GnuPG - GNU 隱私 - - Silk Icons - Over 700 icons in PNG format - Silk Icons - 超過 700 圖標 PNG 格式 - Nero AAC Reference MPEG-4 Encoder Nero AAC 參考 MPEG-4 編碼器 @@ -227,6 +219,14 @@ LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors. LameXP是作為一個整體版權由 LoRd_MuldeR 保護.在 LameXP 中使用的第三方軟件作著權屬于第三方. + + dcaenc + + + + Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL. + + AudioFileModel @@ -1729,6 +1729,10 @@ Skipping update check this time, please be patient... 跳過檢查更新的時間,請耐心等待... + + DCA Enc + + MetaInfo diff --git a/etc/Translation/LameXP_UK.ts b/etc/Translation/LameXP_UK.ts index 047ab66a..afbe2c5c 100644 --- a/etc/Translation/LameXP_UK.ts +++ b/etc/Translation/LameXP_UK.ts @@ -175,14 +175,6 @@ GNU Wget - Software for retrieving files using HTTP GNU Wget - Software for retrieving files using HTTP - - Silk Icons - Over 700 icons in PNG format - Silk Icons - Більш ніж 700 іконок в форматі PNG - - - By Mark James, released under the Creative Commons 'by' License. - Створено Mark James, випущено під ліцензією Creative Commons 'by' License. - LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors. Всі права на LameXP належать LoRd_MuldeR. Права на стороннє ПЗ, що використовується в LameXP, належать авторам цього ПЗ. @@ -228,6 +220,14 @@ avs2wav - Avisynth to Wave Audio converter avs2wav - аудіоконвертер у Wave аудіо, що базується на Avisynth + + dcaenc + + + + Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL. + + AudioFileModel @@ -1730,6 +1730,10 @@ Skipping update check this time, please be patient... + + DCA Enc + + MetaInfo diff --git a/etc/Translation/LameXP_ZH.ts b/etc/Translation/LameXP_ZH.ts index f267ec92..bb935486 100644 --- a/etc/Translation/LameXP_ZH.ts +++ b/etc/Translation/LameXP_ZH.ts @@ -87,10 +87,6 @@ Open and patent-free lossless audio compression technology. 打开和专利自由无损音频压缩技术. - - By Mark James, released under the Creative Commons 'by' License. - By Mark James,在知识共享的许可证发布. - About Third-party Software 关于第三方软件 @@ -163,10 +159,6 @@ GnuPG - The GNU Privacy Guard GnuPG - GNU 隐私 - - Silk Icons - Over 700 icons in PNG format - Silk Icons - 超过 700 图标 PNG 格式 - Nero AAC Reference MPEG-4 Encoder Nero AAC 参考 MPEG-4 编码器 @@ -227,6 +219,14 @@ LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors. LameXP是作为一个整体版权由 LoRd_MuldeR 保护.在 LameXP 中使用的第三方软件作著权属于第三方. + + dcaenc + + + + Copyright (c) 2008-2011 Alexander E. Patrakov. Distributed under the LGPL. + + AudioFileModel @@ -1729,6 +1729,10 @@ Skipping update check this time, please be patient... 跳过检查更新的时间,请耐心等待... + + DCA Enc + + MetaInfo diff --git a/gui/MainWindow.ui b/gui/MainWindow.ui index 2c8e2bf0..584cefc4 100644 --- a/gui/MainWindow.ui +++ b/gui/MainWindow.ui @@ -770,7 +770,7 @@ - + Wave (PCM) @@ -807,6 +807,13 @@ + + + + DCA Enc + + + @@ -1099,8 +1106,8 @@ 0 0 - 602 - 1515 + 604 + 1524 diff --git a/res/Tools_Encd.qrc b/res/Tools_Encd.qrc index bbc344c2..4c59c0a7 100644 --- a/res/Tools_Encd.qrc +++ b/res/Tools_Encd.qrc @@ -4,6 +4,7 @@ tools/aften.i386.exe tools/aften.sse2.exe tools/aften.x64.exe + tools/dcaenc.exe tools/flac.exe tools/lame.i386.exe tools/lame.sse2.exe diff --git a/res/localization/LameXP_DE.qm b/res/localization/LameXP_DE.qm index 275829465284693c51c635cd780ed2f53468239b..fd2c652916cc6e7c392b1868a01103165d8962be 100644 GIT binary patch delta 4676 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 diff --git a/res/localization/LameXP_ES.qm b/res/localization/LameXP_ES.qm index 14ec4ce5a5210d85b420a4f7fb3b812ff8b0a8f0..a49b90cd6a8c6bc38ecc1a9efdf5c38d255198dd 100644 GIT binary patch delta 4511 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 diff --git a/res/localization/LameXP_FR.qm b/res/localization/LameXP_FR.qm index 03e753b49645e846a784cbdd17a9db8e1c64350e..7ad42a05519f92858ebb08b6d4d2fbc75ff38eb2 100644 GIT binary patch delta 3991 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 AIsgCw delta 4323 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 diff --git a/res/localization/LameXP_IT.qm b/res/localization/LameXP_IT.qm index 983260ccf4fbd5276a335e1025bbef137f83f4f5..a8491a0ae71adcdadd7e8266246acccbd078a861 100644 GIT binary patch delta 2322 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 diff --git a/res/localization/LameXP_KR.qm b/res/localization/LameXP_KR.qm index a2327ea2dfd03aad09d60dde95827872a69ed3d8..e98c86424d7847c2f9412e815c6326704e28b91d 100644 GIT binary patch delta 3658 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 diff --git a/res/localization/LameXP_PL.qm b/res/localization/LameXP_PL.qm index 950662074354b17db2d535c117a8db4ef96ef201..187c3cb23bbfb827c31a5032a2f134d140df5af3 100644 GIT binary patch delta 4375 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 XktfKCN{#$9mk;H3^eg;7ZsAap delta 4877 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 Y|DMDq>I3{n>!XvB6Ab$eb~CpBA4pY;jsO4v diff --git a/res/localization/LameXP_UK.qm b/res/localization/LameXP_UK.qm index 82d415f366f4d2a87a445f66384451dddce04f36..d0d29f3fbfab0f83a300a768a122a05771ede595 100644 GIT binary patch delta 4612 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 brN$f2+c!$r+ijH6*VemOFTJvr??3+s&Vh>8 delta 4975 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 XktfKCN{#$9mk;H3^eg;7ZsAap delta 4877 zcmX|F30O_}`+x5}=iGDeJsTCqR#!?z5)wuBtigLAy7Ft9z+>pUggp8tvvQ}g_ zh6aUE82i!;rm+piKFlv>%>UEe=lMS#&wI|f=X}5K`}us{<=gphnKuQ@8Y|OnA{s(8 z=r1B}Ad&3{v(3jf7eEwuiD-NfQKc8rL~EiR4~QabiI(mqnlqm0iwkDEs)(5J1w;e% z#8w9rg%l9`Jxdg1VYWGz#9p>1nxrOfG}evHAuePTktyyCajWp+Y$xJQ#t?N_M%+*5 zh_ap#_qLE|=n~>SEhZ{VBmKmK*z62-Ujj$U63A^#1ktELCD2Agk8`cwb3^3bL z9gTH5LA0isyieK@RmYJ}53J*TmwepwiB`S%&zfkfhxx%ihJ3l1@Vt(EqZblwnoZ*- z%0R}M{LU;TTEC3~eSQQ2M`_aeIye$elNu25p-KuniO4cGQn&!y>!8^dgj0BIUqt9m zQ*0g)<#RM;$sq*dOA&>wiR>aN^7uUyk@^Y6RQDlTw}583Bch{mG&{LHQTaid+c}9S zY6E4o??<%l7-hd0OqBVFa+0_8kO6yD59~x zsv$eO6BX5~#&Hbpb5)Tc)kG?1l`-%OB9}~+vGP11S5)(^DA2-t)tYD6piEKa)$M_P zGF1iTRz&e-s?xv9h~~~vRo;mva#YOLd8n$=)bgPCcUAp1mdKzs+wL}I8~#ewAiNT`p&Vc+xNg}*q5rtyVgMBwd$^efvE3x)rSGc5J*qe zhXgn>uTHJ{8MfU_HEZieWM!|G0~#UdM{1L@9xr|qrtVw-?qhbT?I&hHB&llWhw(%n z1!@n=T%zeN>aoh75al>^#BZ)dz0=ik={0c7TAj>21BDCJ3nIXAmZds-1|l7otzIgW z6Lp`W{zeA`XCMCncocz?JuAaV>~XolF!cs9%T5M0*0%@5f#z(!FQ24}sWD ziBVkOV3i}&alvPBy`8b^3cJO~ICw!DrU=G0B!bAo)Xcb+x!__R(|0L69vsDZv8V+^ zj8_Yn4qchCmXq<}0cLFB2&CJejJG8a@R-2_{g_U)!;zVARYf#o0W;Aui^wyQ32ph^ za}5*rQX=Z}Cu~n-l^ruZY7V&fV`5rx0ZL3vsnsq-{DCQJTn(yzVJd6KAU!`aRab%3fh^|er`9M)*O>E{uMka1VlI?w zAs$EL7NM?^W zy#*4E>}f+C(b_p|ouwKGc(P}nUm{v~j6F9V4lG#5UixUd4AG>qS7K4)P@u2JNr2V z_u*%`R_}6=_l=xo&>D#I0oUGPK2g7UoT2I^QR}W;*V_kCZ+dWcrg!r;O4v?LbNiCOD{x#6Nho8tZwCaVH3Bq zv;wvLD{j^3Ggv5_TR$9mI&n9*zM%~Yi!Ya7kF0QAz!g{wg^GXS3RdhU`gSZ=SBseV@>?olSL zHt`5i=vuB`m`qghGk5U_19eX4uH9S*2zznYJu=ZWE^ya>1!TkLa<@!aFejC}T?I$_ zd2siOE)nf+=9)&#M!Fs0o>jr|Wg_=^!W^RQn>5PxV$_4B8e0Wgh-lK-_QA$s%^FA6 zh%RUnG<|jlz@vql;me@@&NiBnYtc5>dTG3^!R6X}8lTGVhzcHS{D#;e&jU1Jn*i

    X-X?xfY3jhiaBUr$yS<^BS3*gd(By! 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 a7~=nX5}#xU^dDo0O-@NP9x&R^*#3V49FBPa diff --git a/src/Config.h b/src/Config.h index 2d238b01..12f2d8f6 100644 --- a/src/Config.h +++ b/src/Config.h @@ -29,8 +29,8 @@ #define VER_LAMEXP_MINOR_HI 0 #define VER_LAMEXP_MINOR_LO 4 #define VER_LAMEXP_TYPE Alpha -#define VER_LAMEXP_PATCH 11 -#define VER_LAMEXP_BUILD 827 +#define VER_LAMEXP_PATCH 12 +#define VER_LAMEXP_BUILD 830 /////////////////////////////////////////////////////////////////////////////// // Tool versions (minimum expected versions!) diff --git a/src/Dialog_About.cpp b/src/Dialog_About.cpp index 1a3b5ee0..8e47f89a 100644 --- a/src/Dialog_About.cpp +++ b/src/Dialog_About.cpp @@ -430,7 +430,7 @@ void AboutDialog::showMoreAbout(void) ); moreAboutText += QString ( - "

 %1
").arg ( NOBR(tr("LameXP as a whole is copyrighted by LoRd_MuldeR. The copyright of third-party software used in LameXP belongs to the individual authors.")) diff --git a/src/Dialog_MainWindow.cpp b/src/Dialog_MainWindow.cpp index 282a3483..64ff5897 100644 --- a/src/Dialog_MainWindow.cpp +++ b/src/Dialog_MainWindow.cpp @@ -203,6 +203,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S m_encoderButtonGroup->addButton(radioButtonEncoderAAC, SettingsModel::AACEncoder); m_encoderButtonGroup->addButton(radioButtonEncoderAC3, SettingsModel::AC3Encoder); m_encoderButtonGroup->addButton(radioButtonEncoderFLAC, SettingsModel::FLACEncoder); + m_encoderButtonGroup->addButton(radioButtonEncoderDCA, SettingsModel::DCAEncoder); m_encoderButtonGroup->addButton(radioButtonEncoderPCM, SettingsModel::PCMEncoder); m_modeButtonGroup = new QButtonGroup(this); m_modeButtonGroup->addButton(radioButtonModeQuality, SettingsModel::VBRMode); @@ -214,6 +215,7 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S radioButtonEncoderAAC->setChecked((m_settings->compressionEncoder() == SettingsModel::AACEncoder) && (m_neroEncoderAvailable || m_fhgEncoderAvailable || m_qaacEncoderAvailable)); radioButtonEncoderAC3->setChecked(m_settings->compressionEncoder() == SettingsModel::AC3Encoder); radioButtonEncoderFLAC->setChecked(m_settings->compressionEncoder() == SettingsModel::FLACEncoder); + radioButtonEncoderDCA->setChecked(m_settings->compressionEncoder() == SettingsModel::DCAEncoder); radioButtonEncoderPCM->setChecked(m_settings->compressionEncoder() == SettingsModel::PCMEncoder); radioButtonModeQuality->setChecked(m_settings->compressionRCMode() == SettingsModel::VBRMode); radioButtonModeAverageBitrate->setChecked(m_settings->compressionRCMode() == SettingsModel::ABRMode); @@ -1217,6 +1219,7 @@ void MainWindow::encodeButtonClicked(void) case SettingsModel::AACEncoder: case SettingsModel::AC3Encoder: case SettingsModel::FLACEncoder: + case SettingsModel::DCAEncoder: case SettingsModel::PCMEncoder: break; default: @@ -2481,6 +2484,13 @@ void MainWindow::updateEncoder(int id) radioButtonConstBitrate->setEnabled(true); sliderBitrate->setEnabled(true); break; + case SettingsModel::DCAEncoder: + radioButtonModeQuality->setEnabled(false); + radioButtonModeAverageBitrate->setEnabled(false); + radioButtonConstBitrate->setEnabled(true); + radioButtonConstBitrate->setChecked(true); + sliderBitrate->setEnabled(true); + break; default: radioButtonModeQuality->setEnabled(true); radioButtonModeAverageBitrate->setEnabled(true); @@ -2557,6 +2567,10 @@ void MainWindow::updateRCMode(int id) sliderBitrate->setMinimum(0); sliderBitrate->setMaximum(8); break; + case SettingsModel::DCAEncoder: + sliderBitrate->setMinimum(1); + sliderBitrate->setMaximum(192); + break; case SettingsModel::PCMEncoder: sliderBitrate->setMinimum(0); sliderBitrate->setMaximum(2); @@ -2638,6 +2652,9 @@ void MainWindow::updateBitrate(int value) case SettingsModel::AC3Encoder: labelBitrate->setText(QString("%1 kbps").arg(SettingsModel::ac3Bitrates[value])); break; + case SettingsModel::DCAEncoder: + labelBitrate->setText(QString("%1 kbps").arg(value * 32)); + break; case SettingsModel::PCMEncoder: labelBitrate->setText(tr("Uncompressed")); break; diff --git a/src/Dialog_Processing.cpp b/src/Dialog_Processing.cpp index ed875d47..21ae2493 100644 --- a/src/Dialog_Processing.cpp +++ b/src/Dialog_Processing.cpp @@ -31,13 +31,14 @@ #include "Thread_RAMObserver.h" #include "Thread_DiskObserver.h" #include "Dialog_LogView.h" -#include "Encoder_MP3.h" -#include "Encoder_Vorbis.h" #include "Encoder_AAC.h" #include "Encoder_AAC_FHG.h" #include "Encoder_AAC_QAAC.h" #include "Encoder_AC3.h" +#include "Encoder_DCA.h" #include "Encoder_FLAC.h" +#include "Encoder_MP3.h" +#include "Encoder_Vorbis.h" #include "Encoder_Wave.h" #include "Filter_Downmix.h" #include "Filter_Normalize.h" @@ -638,10 +639,66 @@ void ProcessingDialog::startNextJob(void) m_currentFile++; AudioFileModel currentFile = updateMetaInfo(m_pendingJobs.takeFirst()); - AbstractEncoder *encoder = NULL; bool nativeResampling = false; //Create encoder instance + AbstractEncoder *encoder = makeEncoder(&nativeResampling); + + //Create processing thread + ProcessThread *thread = new ProcessThread + ( + currentFile, + (m_settings->outputToSourceDir() ? QFileInfo(currentFile.filePath()).absolutePath() : m_settings->outputDir()), + (m_settings->customTempPathEnabled() ? m_settings->customTempPath() : lamexp_temp_folder2()), + encoder, + m_settings->prependRelativeSourcePath() && (!m_settings->outputToSourceDir()) + ); + + //Add audio filters + if(m_settings->forceStereoDownmix()) + { + thread->addFilter(new DownmixFilter()); + } + if((m_settings->samplingRate() > 0) && !nativeResampling) + { + if(SettingsModel::samplingRates[m_settings->samplingRate()] != currentFile.formatAudioSamplerate() || currentFile.formatAudioSamplerate() == 0) + { + thread->addFilter(new ResampleFilter(SettingsModel::samplingRates[m_settings->samplingRate()])); + } + } + if((m_settings->toneAdjustBass() != 0) || (m_settings->toneAdjustTreble() != 0)) + { + thread->addFilter(new ToneAdjustFilter(m_settings->toneAdjustBass(), m_settings->toneAdjustTreble())); + } + if(m_settings->normalizationFilterEnabled()) + { + thread->addFilter(new NormalizeFilter(m_settings->normalizationFilterMaxVolume(), m_settings->normalizationFilterEqualizationMode())); + } + if(m_settings->renameOutputFilesEnabled() && (!m_settings->renameOutputFilesPattern().simplified().isEmpty())) + { + thread->setRenamePattern(m_settings->renameOutputFilesPattern()); + } + + m_threadList.append(thread); + m_allJobs.append(thread->getId()); + + //Connect thread signals + connect(thread, SIGNAL(finished()), this, SLOT(doneEncoding()), Qt::QueuedConnection); + connect(thread, SIGNAL(processStateInitialized(QUuid,QString,QString,int)), m_progressModel, SLOT(addJob(QUuid,QString,QString,int)), Qt::QueuedConnection); + connect(thread, SIGNAL(processStateChanged(QUuid,QString,int)), m_progressModel, SLOT(updateJob(QUuid,QString,int)), Qt::QueuedConnection); + connect(thread, SIGNAL(processStateFinished(QUuid,QString,bool)), this, SLOT(processFinished(QUuid,QString,bool)), Qt::QueuedConnection); + connect(thread, SIGNAL(processMessageLogged(QUuid,QString)), m_progressModel, SLOT(appendToLog(QUuid,QString)), Qt::QueuedConnection); + + //Give it a go! + m_runningThreads++; + thread->start(); +} + +AbstractEncoder *ProcessingDialog::makeEncoder(bool *nativeResampling) +{ + AbstractEncoder *encoder = NULL; + *nativeResampling = false; + switch(m_settings->compressionEncoder()) { case SettingsModel::MP3Encoder: @@ -657,7 +714,7 @@ void ProcessingDialog::startNextJob(void) if(m_settings->samplingRate() > 0) { mp3Encoder->setSamplingRate(SettingsModel::samplingRates[m_settings->samplingRate()]); - nativeResampling = true; + *nativeResampling = true; } mp3Encoder->setChannelMode(m_settings->lameChannelMode()); mp3Encoder->setCustomParams(m_settings->customParametersLAME()); @@ -676,7 +733,7 @@ void ProcessingDialog::startNextJob(void) if(m_settings->samplingRate() > 0) { vorbisEncoder->setSamplingRate(SettingsModel::samplingRates[m_settings->samplingRate()]); - nativeResampling = true; + *nativeResampling = true; } vorbisEncoder->setCustomParams(m_settings->customParametersOggEnc()); encoder = vorbisEncoder; @@ -736,6 +793,14 @@ void ProcessingDialog::startNextJob(void) encoder = flacEncoder; } break; + case SettingsModel::DCAEncoder: + { + DCAEncoder *dcaEncoder = new DCAEncoder(); + dcaEncoder->setBitrate(m_settings->compressionBitrate()); + dcaEncoder->setRCMode(m_settings->compressionRCMode()); + encoder = dcaEncoder; + } + break; case SettingsModel::PCMEncoder: { WaveEncoder *waveEncoder = new WaveEncoder(); @@ -748,54 +813,7 @@ void ProcessingDialog::startNextJob(void) throw "Unsupported encoder!"; } - //Create processing thread - ProcessThread *thread = new ProcessThread - ( - currentFile, - (m_settings->outputToSourceDir() ? QFileInfo(currentFile.filePath()).absolutePath() : m_settings->outputDir()), - (m_settings->customTempPathEnabled() ? m_settings->customTempPath() : lamexp_temp_folder2()), - encoder, - m_settings->prependRelativeSourcePath() && (!m_settings->outputToSourceDir()) - ); - - //Add audio filters - if(m_settings->forceStereoDownmix()) - { - thread->addFilter(new DownmixFilter()); - } - if((m_settings->samplingRate() > 0) && !nativeResampling) - { - if(SettingsModel::samplingRates[m_settings->samplingRate()] != currentFile.formatAudioSamplerate() || currentFile.formatAudioSamplerate() == 0) - { - thread->addFilter(new ResampleFilter(SettingsModel::samplingRates[m_settings->samplingRate()])); - } - } - if((m_settings->toneAdjustBass() != 0) || (m_settings->toneAdjustTreble() != 0)) - { - thread->addFilter(new ToneAdjustFilter(m_settings->toneAdjustBass(), m_settings->toneAdjustTreble())); - } - if(m_settings->normalizationFilterEnabled()) - { - thread->addFilter(new NormalizeFilter(m_settings->normalizationFilterMaxVolume(), m_settings->normalizationFilterEqualizationMode())); - } - if(m_settings->renameOutputFilesEnabled() && (!m_settings->renameOutputFilesPattern().simplified().isEmpty())) - { - thread->setRenamePattern(m_settings->renameOutputFilesPattern()); - } - - m_threadList.append(thread); - m_allJobs.append(thread->getId()); - - //Connect thread signals - connect(thread, SIGNAL(finished()), this, SLOT(doneEncoding()), Qt::QueuedConnection); - connect(thread, SIGNAL(processStateInitialized(QUuid,QString,QString,int)), m_progressModel, SLOT(addJob(QUuid,QString,QString,int)), Qt::QueuedConnection); - connect(thread, SIGNAL(processStateChanged(QUuid,QString,int)), m_progressModel, SLOT(updateJob(QUuid,QString,int)), Qt::QueuedConnection); - connect(thread, SIGNAL(processStateFinished(QUuid,QString,bool)), this, SLOT(processFinished(QUuid,QString,bool)), Qt::QueuedConnection); - connect(thread, SIGNAL(processMessageLogged(QUuid,QString)), m_progressModel, SLOT(appendToLog(QUuid,QString)), Qt::QueuedConnection); - - //Give it a go! - m_runningThreads++; - thread->start(); + return encoder; } void ProcessingDialog::writePlayList(void) diff --git a/src/Dialog_Processing.h b/src/Dialog_Processing.h index 2deb92e3..21e51566 100644 --- a/src/Dialog_Processing.h +++ b/src/Dialog_Processing.h @@ -36,6 +36,7 @@ class SettingsModel; class CPUObserverThread; class RAMObserverThread; class DiskObserverThread; +class AbstractEncoder; enum shutdownFlag_t { @@ -79,6 +80,7 @@ protected: private: void setCloseButtonEnabled(bool enabled); void startNextJob(void); + AbstractEncoder *makeEncoder(bool *nativeResampling); AudioFileModel updateMetaInfo(const AudioFileModel &audioFile); void writePlayList(void); bool shutdownComputer(void); diff --git a/src/Encoder_DCA.cpp b/src/Encoder_DCA.cpp new file mode 100644 index 00000000..91bfd1cc --- /dev/null +++ b/src/Encoder_DCA.cpp @@ -0,0 +1,152 @@ +/////////////////////////////////////////////////////////////////////////////// +// LameXP - Audio Encoder Front-End +// Copyright (C) 2004-2011 LoRd_MuldeR +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +// +// http://www.gnu.org/licenses/gpl-2.0.txt +/////////////////////////////////////////////////////////////////////////////// + +#include "Encoder_DCA.h" + +#include "Global.h" +#include "Model_Settings.h" + +#include +#include +#include + +DCAEncoder::DCAEncoder(void) +: + m_binary(lamexp_lookup_tool("dcaenc.exe")) +{ + if(m_binary.isEmpty()) + { + throw "Error initializing DCA encoder. Tool 'dcaenc.exe' is not registred!"; + } +} + +DCAEncoder::~DCAEncoder(void) +{ +} + +bool DCAEncoder::encode(const QString &sourceFile, const AudioFileModel &metaInfo, const QString &outputFile, volatile bool *abortFlag) +{ + QProcess process; + QStringList args; + + int bitrate = qBound(32, m_configBitrate * 32, 6144); + + args << QDir::toNativeSeparators(sourceFile); + args << QDir::toNativeSeparators(outputFile); + args << QString::number(bitrate); + + if(!startProcess(process, m_binary, args)) + { + return false; + } + + bool bTimeout = false; + bool bAborted = false; + int prevProgress = -1; + + QRegExp regExp("\\[(\\d+)\\.(\\d+)%\\]"); + + while(process.state() != QProcess::NotRunning) + { + if(*abortFlag) + { + process.kill(); + bAborted = true; + emit messageLogged("\nABORTED BY USER !!!"); + break; + } + process.waitForReadyRead(m_processTimeoutInterval); + if(!process.bytesAvailable() && process.state() == QProcess::Running) + { + process.kill(); + qWarning("DCAENC process timed out <-- killing!"); + emit messageLogged("\nPROCESS TIMEOUT !!!"); + bTimeout = true; + break; + } + while(process.bytesAvailable() > 0) + { + QByteArray line = process.readLine(); + QString text = QString::fromUtf8(line.constData()).simplified(); + if(regExp.lastIndexIn(text) >= 0) + { + bool ok = false; + int progress = regExp.cap(1).toInt(&ok); + if(ok && (progress > prevProgress)) + { + emit statusUpdated(progress); + prevProgress = qMin(progress + 2, 99); + } + } + else if(!text.isEmpty()) + { + emit messageLogged(text); + } + } + } + + process.waitForFinished(); + if(process.state() != QProcess::NotRunning) + { + process.kill(); + process.waitForFinished(-1); + } + + emit statusUpdated(100); + emit messageLogged(QString().sprintf("\nExited with code: 0x%04X", process.exitCode())); + + if(bTimeout || bAborted || process.exitCode() != EXIT_SUCCESS) + { + return false; + } + + return true; +} + +QString DCAEncoder::extension(void) +{ + return "dts"; +} + +bool DCAEncoder::isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion) +{ + if(containerType.compare("Wave", Qt::CaseInsensitive) == 0) + { + if(formatType.compare("PCM", Qt::CaseInsensitive) == 0) + { + return true; + } + } + + return false; +} + +const unsigned int *DCAEncoder::supportedSamplerates(void) +{ + static const unsigned int supportedRates[] = {48000, 44100, 32000, 24000, 22050, 16000, 12000, 11025, 8000, NULL}; + return supportedRates; +} + +const unsigned int *DCAEncoder::supportedBitdepths(void) +{ + static const unsigned int supportedBPS[] = {16, 32, NULL}; + return supportedBPS; +} diff --git a/src/Encoder_DCA.h b/src/Encoder_DCA.h new file mode 100644 index 00000000..a941e21a --- /dev/null +++ b/src/Encoder_DCA.h @@ -0,0 +1,45 @@ +/////////////////////////////////////////////////////////////////////////////// +// LameXP - Audio Encoder Front-End +// Copyright (C) 2004-2011 LoRd_MuldeR +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 2 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along +// with this program; if not, write to the Free Software Foundation, Inc., +// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +// +// http://www.gnu.org/licenses/gpl-2.0.txt +/////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include "Encoder_Abstract.h" + +#include + +class DCAEncoder : public AbstractEncoder +{ + Q_OBJECT + +public: + DCAEncoder(void); + ~DCAEncoder(void); + + virtual bool encode(const QString &sourceFile, const AudioFileModel &metaInfo, const QString &outputFile, volatile bool *abortFlag); + virtual bool isFormatSupported(const QString &containerType, const QString &containerProfile, const QString &formatType, const QString &formatProfile, const QString &formatVersion); + virtual QString extension(void); + virtual const unsigned int *supportedBitdepths(void); + virtual const unsigned int *supportedSamplerates(void); + +private: + const QString m_binary; + int clipBitrate(int bitrate); +}; diff --git a/src/Model_Settings.h b/src/Model_Settings.h index 19a0fd24..2bc93d48 100644 --- a/src/Model_Settings.h +++ b/src/Model_Settings.h @@ -62,7 +62,8 @@ public: AACEncoder = 2, AC3Encoder = 3, FLACEncoder = 4, - PCMEncoder = 5 + DCAEncoder = 5, + PCMEncoder = 6 }; enum RCMode { diff --git a/src/Thread_Process.cpp b/src/Thread_Process.cpp index dcc7166f..b7842246 100644 --- a/src/Thread_Process.cpp +++ b/src/Thread_Process.cpp @@ -420,7 +420,7 @@ void ProcessThread::insertDownsampleFilter(void) for(int i = 0; supportedRates[i]; i++) { currentDiff = DIFF(inputRate, supportedRates[i]); - if(currentDiff < minimumDiff) + if((currentDiff < minimumDiff) || ((currentDiff == minimumDiff) && (bestRate < supportedRates[i]))) { bestRate = supportedRates[i]; minimumDiff = currentDiff; @@ -446,7 +446,7 @@ void ProcessThread::insertDownsampleFilter(void) for(int i = 0; supportedBPS[i]; i++) { currentDiff = DIFF(inputBPS, supportedBPS[i]); - if(currentDiff < minimumDiff) + if((currentDiff < minimumDiff) || ((currentDiff == minimumDiff) && (bestBPS < supportedBPS[i]))) { bestBPS = supportedBPS[i]; minimumDiff = currentDiff; diff --git a/src/Tools.h b/src/Tools.h index be872b22..080e621e 100644 --- a/src/Tools.h +++ b/src/Tools.h @@ -56,6 +56,7 @@ g_lamexp_tools[] = {"29da0d3e810bc3e8d2cddb3db452325eefca0d0c1fff1379fa17806ad447752be1b88e2f", CPU_TYPE_X64_ALL, "aften.x64.exe", 8}, {"1cca303fabd889a18fc01c32a7fd861194cfcac60ba63740ea2d7c55d049dbf8f59259fa", CPU_TYPE_ALL_ALL, "alac.exe", 20}, {"6d22d4bbd7ce2162e38f70ac9187bc84eb28233b36ee6c0492d0a6195318782d7f05c444", CPU_TYPE_ALL_ALL, "avs2wav.exe", 13}, + {"d94bea403cbd24a890d91f55a4e4fed47898b21b62de3ba1202da55dc0917187304171f6", CPU_TYPE_ALL_ALL, "dcaenc.exe", 20111222}, {"e53a787d4a0319453f4fe48c3145f190fcce7ac4802e521db908771437f6250746116e6c", CPU_TYPE_ALL_ALL, "elevator.exe", UINT_MAX}, {"9ae98a3fc779f69ee876a3b477fbc35a709ba5066823b2eb62eeb015057c38807e4be51f", CPU_TYPE_ALL_ALL, "faad.exe", 27}, {"446054f9a7f705f1aadc9053ca7b8a86a775499ef159978954ebdea92de056c34f8841f7", CPU_TYPE_ALL_ALL, "flac.exe", 121},