diff --git a/doc/Changelog.html b/doc/Changelog.html
index 16dc45ac..8ee9dc50 100644
--- a/doc/Changelog.html
+++ b/doc/Changelog.html
@@ -22,8 +22,9 @@ a:visited { color: #0000EE; }
Added Cue Sheet import wizard, which allows splitting and importing tracks from Cue Sheet images
Added ATSC A/52 (AC-3) encoding support, based on Aften encoder v0.0.8+ (Git Master)
Added Avisynth input (audio only!) using 'avs2wav' tool, partly based on code by Jory Stone
-Added one new translation: Korean
Added a method to use custom tools instead of the "built-in" ones (see FAQ doc for details)
+Added an option to copy all meta information of a single file over to the "meta information" tab
+Added one new translation: Korean
Updated Qt runtime libraries to v4.7.3
Updated LAME encoder to v3.99.1.0 (2011-04-15), compiled with ICL 12.0.3 and MSVC 10.0 (details)
Updated Vorbis encoder to v2.87 using aoTuV Beta-6.03 (2011-05-04), compiled with ICL 11.1 and MSVC 9.0
@@ -31,6 +32,7 @@ a:visited { color: #0000EE; }
Updated MediaInfo to v0.7.45 Beta (2011-05-02), compiled with ICL 12.0.3 and MSVC 10.0
Updated language files (big thank-you to all contributors !!!)
Fixed placement of the Dropbox when the Taskbar is located on the top or on the left side
+Improved playlist generation: Generate M3U (Latin-1) or M3U8 (UTF-8) playlist file as required
Miscellaneous bugfixes
diff --git a/doc/FAQ.html b/doc/FAQ.html
index 138d5306..9c50fd65 100644
--- a/doc/FAQ.html
+++ b/doc/FAQ.html
@@ -49,6 +49,7 @@ a:visited { color: #0000EE; }
How can I translate LameXP to my language or improve an existing translation?
Where can I download the latest version of LameXP?
Where can I submit bug reports or feature requests?
+What programming language is LameXP written in?
Where can I find the LameXP source code?
What are the prerequisites to build LameXP from the sources?
@@ -589,6 +590,14 @@ The preferred place to report bugs or request new features is the LameXP thread
Please do NOT send me E-Mail unless you really have to! I receive a LOT of E-Mail and your mail can get lost!
+What programming language is LameXP written in?
+
+While LameXP v3.xx and all earlier versions were written in Delphi/Pascal, starting with version 4.xx the
+software has been re-written in the C++ programming language. LameXP v4.xx is based on the Qt cross-platform
+application framework and offers full Unicode support. For the time being LameXP is Windows-only.
+
+
+
Where can I find the LameXP source code?
LameXP is developed using the Git revision control system. The LameXP Git repository is mirrored at:
@@ -601,9 +610,10 @@ LameXP is developed using the What are the prerequisites to build LameXP from the sources?
LameXP is currently being developed using the following build environment:
-- Visual Studio 2010 with Service Pack 1, running on Windows 7 with Service Pack 1
-
- Desktop Qt v4.7.3 (MSVC 2008), included in Qt SDK v1.1
-
- Windows Platform SDK v7.1 (Windows SDK for Windows 7 and .NET Framework 4)
+- Visual Studio 2010 with Service Pack 1, running on Windows 7 with Service Pack 1
+
- Desktop Qt v4.7.3 (MSVC 2008), included in Qt SDK v1.1
+
- Windows Platform SDK v7.1 (Windows SDK for Windows 7 and .NET Framework 4)
+
- The minimum supported Windows version is Windows XP with Service Pack 2
Also note the following hints:
- Run "qtenv2.bat" before launching Visual Studio in order to set up the Qt environment
@@ -612,6 +622,14 @@ Also note the following hints:
- The Windows Platform SDK v6.0A should work as well, but there may be a few limitations
- Support for the GNU Toolchain (GCC/MinGW + Make) is planned for a future version
+In order to use the LameXP deployment scripts you need the following tools:
+- 7-Zip - file archiver with a high compression ratio
+
- NSIS - Nullsoft Scriptable Install System (Unicode Version)
+
- GnuPG - the GNU Privacy Guard v1.4.x
+
- UPX - the Ultimate Packer for eXecutables
+
- MPRESS - high-performance executable packer for PE32/PE32+
+
- Copy 'buildenv.template.txt' to 'buildenv.txt' and edit the paths as needed!
+
Instructions to build Qt as 'static' libraries:
- Make sure Visual Studio 2010 and Strawberry Perl for Windows are installed
- Install the Qt SDK v1.1 and choose to install the Qt 4.7.3 Sources
@@ -622,7 +640,7 @@ Instructions to build Qt as 'static' libraries:
- Finally run 'configure.exe -release -static -ltcg <more options>' and wait for completion
- You can now open and build the solution files (e.g. 'src\corelib\QtCore.sln' in Visual Studio
- Make sure you select the "Release" configuration for your builds
-
- It is also recommended to change "C/C++ > Code Generation > Runtime Library" to "/MT"
+
- It is also recommended to change "C/C++ ⇒ Code Generation ⇒ Runtime Library" to "/MT"
- Libraries you need to build for LameXP include the following:
- lib\qtmain.lib
- lib\QtCore.lib
diff --git a/src/Config.h b/src/Config.h
index 8a09bbd2..3b150897 100644
--- a/src/Config.h
+++ b/src/Config.h
@@ -30,7 +30,7 @@
#define VER_LAMEXP_MINOR_LO 2
#define VER_LAMEXP_TYPE Beta
#define VER_LAMEXP_PATCH 6
-#define VER_LAMEXP_BUILD 558
+#define VER_LAMEXP_BUILD 560
///////////////////////////////////////////////////////////////////////////////
// Tools versions
diff --git a/src/Dialog_Processing.cpp b/src/Dialog_Processing.cpp
index 9ef71cd0..931ff11f 100644
--- a/src/Dialog_Processing.cpp
+++ b/src/Dialog_Processing.cpp
@@ -681,32 +681,61 @@ void ProcessingDialog::writePlayList(void)
return;
}
- QString playListName = (m_metaInfo->fileAlbum().isEmpty() ? "Playlist" : m_metaInfo->fileAlbum());
-
+ //Init local variables
const static char *invalidChars = "\\/:*?\"<>|";
+ QStringList list;
+ bool useUtf8 = false;
+ int counter = 1;
+
+ //Generate playlist name
+ QString playListName = (m_metaInfo->fileAlbum().isEmpty() ? "Playlist" : m_metaInfo->fileAlbum());
+ if(!m_metaInfo->fileArtist().isEmpty())
+ {
+ playListName = QString("%1 - %2").arg(m_metaInfo->fileArtist(), playListName);
+ }
+
+ //Clean playlist name
for(int i = 0; invalidChars[i]; i++)
{
- playListName.replace(invalidChars[i], ' ');
- playListName = playListName.simplified();
+ playListName = playListName.replace(invalidChars[i], ' ').simplified();
}
-
- QString playListFile = QString("%1/%2.m3u").arg(m_settings->outputDir(), playListName);
- int counter = 1;
+ //Create list of audio files
+ for(int i = 0; i < m_allJobs.count(); i++)
+ {
+ if(!m_succeededJobs.contains(m_allJobs.at(i))) continue;
+ list << QDir::toNativeSeparators(QDir(m_settings->outputDir()).relativeFilePath(m_playList.value(m_allJobs.at(i), "N/A")));
+ }
+
+ //Do we need an UTF-8 playlist?
+ for(int i = 0; i < list.count(); i++)
+ {
+ if(wcscmp(QWCHAR(QString::fromLatin1(list.at(i).toLatin1().constData())), QWCHAR(list.at(i))))
+ {
+ useUtf8 = true;
+ break;
+ }
+ }
+
+ //Generate playlist output file
+ QString playListFile = QString("%1/%2.%3").arg(m_settings->outputDir(), playListName, (useUtf8 ? "m3u8" : "m3u"));
while(QFileInfo(playListFile).exists())
{
- playListFile = QString("%1/%2 (%3).m3u").arg(m_settings->outputDir(), playListName, QString::number(++counter));
+ playListFile = QString("%1/%2 (%3).%4").arg(m_settings->outputDir(), playListName, QString::number(++counter), (useUtf8 ? "m3u8" : "m3u"));
}
+ //Now write playlist to output file
QFile playList(playListFile);
if(playList.open(QIODevice::WriteOnly))
{
- playList.write("#EXTM3U\r\n");
- for(int i = 0; i < m_allJobs.count(); i++)
+ if(useUtf8)
{
-
- if(!m_succeededJobs.contains(m_allJobs.at(i))) continue;
- playList.write(QDir::toNativeSeparators(QDir(m_settings->outputDir()).relativeFilePath(m_playList.value(m_allJobs.at(i), "N/A"))).toUtf8().constData());
+ playList.write("\xef\xbb\xbf");
+ }
+ playList.write("#EXTM3U\r\n");
+ while(!list.isEmpty())
+ {
+ playList.write(useUtf8 ? list.takeFirst().toUtf8().constData() : list.takeFirst().toLatin1().constData());
playList.write("\r\n");
}
playList.close();