Updated F.A.Q. document.

This commit is contained in:
LoRd_MuldeR 2012-08-02 23:32:21 +02:00
parent 0ac460b8dd
commit 0deb759096
19 changed files with 1302 additions and 1165 deletions

View File

@ -26,6 +26,7 @@ a:visited { color: #0000EE; }
<li><a href="#fd53d98a">Who created LameXP?</a> <li><a href="#fd53d98a">Who created LameXP?</a>
<li><a href="#de1c5e44">What license is LameXP released under?</a> <li><a href="#de1c5e44">What license is LameXP released under?</a>
<li><a href="#303e5fa7">Do I have to pay for LameXP? / How can I donate to the authors of LameXP?</a> <li><a href="#303e5fa7">Do I have to pay for LameXP? / How can I donate to the authors of LameXP?</a>
<li><a href="#e75ad4ac">Why is the thing called "LameXP" when it does so much more?</a>
<li><a href="#054010d9">MP3, AAC or Vorbis - What is the best compressed audio format?</a> <li><a href="#054010d9">MP3, AAC or Vorbis - What is the best compressed audio format?</a>
<li><a href="#411d1257">What is the difference between the CBR, VBR and ABR rate control modes?</a> <li><a href="#411d1257">What is the difference between the CBR, VBR and ABR rate control modes?</a>
<li><a href="#71a113b0">How do I enable AAC/MP4/M4A output (encoding) in LameXP?</a> <li><a href="#71a113b0">How do I enable AAC/MP4/M4A output (encoding) in LameXP?</a>
@ -216,6 +217,23 @@ If you want to support the development of LameXP, you can do so by contributing
<br><br> <br><br>
<a name="e75ad4ac"></a><b>Why is the thing called "LameXP" although it does so much more?</b><br>
<br>
LameXP was created as a (very simple!) GUI front-end to the LAME MP3 encoder, back in 2004. That version did<br>
NOT support any encoders except for LAME, it did NOT support any input formats other than Wave Audio files,<br>
it did NOT support any audio filters, it did NOT support multi-threading, it did NOT support Unicode file<br>
names and it did NOT handle meta data at all. Because the program really was nothing but (yet another) LAME<br>
front-end for Windows and because at that time Windows XP was the operating system of choice - for many<br>
people it still is nowadays - I decided to call the program "LameXP" (aka "LAME for Windows XP"). Since then<br>
more and more features have been added to LameXP. The program even went through two complete re-writes. Thus<br>
the name "LameXP" may not be the most meaningful one, especially because the program supports a huge number<br>
of encoders and decoders now, but I'm obviosuly lacking the creativity to come up with a better name. Also I<br>
think we already have enough doubious "super-duper everything to everything converter" programs out there...<br>
<br>
So to make a long story short: The name has historical reasons and probably isn't going to change ;-)<br><br>
<br><br>
<a name="054010d9"></a><b>MP3, AAC or Vorbis - What is the best compressed audio format?</b><br> <a name="054010d9"></a><b>MP3, AAC or Vorbis - What is the best compressed audio format?</b><br>
<br> <br>
This question can NOT be answered in general. The best audio format is the format that works best for you!<br> This question can NOT be answered in general. The best audio format is the format that works best for you!<br>
@ -252,31 +270,35 @@ Another resource you might find interesting are Sebastian's Public Listening Tes
<br> <br>
CBR means "constant bitrate" and, as the name implies, CBR mode allocates the bits at a constant rate. This<br> CBR means "constant bitrate" and, as the name implies, CBR mode allocates the bits at a constant rate. This<br>
means that each part of the audio will get the same amount of bits, regardless of its content. Obviously this<br> means that each part of the audio will get the same amount of bits, regardless of its content. Obviously this<br>
will waste bits in parts of the audio that are easy to compress. At the same time the quality of parts of the<br> will waste bits in parts of the audio that are "easy" to compress. At the same time the quality of parts of<br>
audio that are hard to compress will be degraded. Consequently using CBR mode is NOT a very good idea, unless<br> the audio that are "hard" to compress will be degraded. Consequently using CBR mode is NOT a very good idea,<br>
you really have to for some reason. However CBR mode has the advantage that the final size of the compressed<br> unless you really have to enforce a 100% constant bitrate (this is almost NEVER the case). However CBR mode<br>
file is perfectly predictable. The resulting file size is defined simply as "duration &times; fixed bitrate".<br> has the advantage that the final size of the compressed file is perfectly predictable. The resulting file<br>
size is defined simply as "duration &times; fixed_bitrate". Note: The file size *is* predictable with ABR mode too!<br>
<br> <br>
VBR means "variable bitrate" and, in contrast to CBR mode, VBR mode allows the bitrate to vary/fluctuate.<br> VBR means "variable bitrate" and, in contrast to CBR mode, VBR mode allows the bitrate to vary/fluctuate.<br>
Thus the VBR mode enables the encoder to adapt the bitrate with respect to the content of the audio. Parts of<br> Thus the VBR mode enables the encoder to adapt the bitrate with respect to the content of the audio. Parts of<br>
the audio that are easy to compress will get a lower bitrate in order to safe bits. Parts of the audio that<br> the audio that are "easy" to compress will get a lower bitrate in order to avoid wasting bits there. At the<br>
are hard to compress will get a higher bitrate in order to avoid quality degradation. Or in other words: VBR<br> same time, parts of the audio that are "hard" to compress will get a higher bitrate in order to avoid quality<br>
mode "moves" the bits to the locations where they are actually needed. Therefore the VBR mode achieves a much<br> degradation. Or in other words: VBR mode "moves" the bits to the locations where they are actually needed!<br>
better compression efficiency than the CBR mode, i.e. with VBR mode you can get a better quality at the same<br> Therefore the VBR mode achieves a much better compression efficiency than the CBR mode. This means with VBR<br>
file size, or the same quality at a smaller file size (compared to CBR mode). One disadvantage of the VBR<br> mode you can get a better quality at the same file size - or the same quality at a smaller file size. One<br>
mode is, however, that the final size of the compressed file can NOT be predicted. The resulting file size is<br> disadvantage of the VBR mode, however, is that the final size of the compressed file can NOT be predicted.<br>
defined as "duration &times; average bitrate", but the average bitrate can NOT be known beforehand. That's<br> The resulting file size now is defined as "duration &times; average_bitrate", but the average bitrate is NOT<br>
because the average bitrate for a specific VBR quality level can vary greatly, depending solely on the<br> known beforehand. That's because the average bitrate for a specific VBR quality level can vary greatly,<br>
complexity of the individual audio. Nonetheless VBR mode generally should be the preferred encoding mode.<br> depending solely on the complexity of the individual audio. With VBR mode the encoder uses as many bits as<br>
required to achieve the desired level of quality. That clearly makes VBR the preferred encoding mode.<br>
<br> <br>
ABR means "average bitrate". You can think of ABR mode as a compromise between the CBR and VBR mode. With ABR<br> ABR means "average bitrate". You can think of ABR mode as a compromise between the CBR and VBR mode. With ABR<br>
mode the bitrate is allowed to vary/fluctuate, similar to VBR mode. However the ABR mode doesn't work with a<br> mode the bitrate is allowed to vary/fluctuate, similar to VBR mode. However the ABR mode doesn't work with a<br>
predefined/fixed quality level, as VBR mode does. Instead in ABR mode the encoder will continuously re-adjust<br> predefined/fixed quality level, as VBR mode does. Instead in ABR mode the encoder will continuously re-adjust<br>
the quality level in order to hit the target average(!) bitrate. You can also think of ABR mode as a mode<br> the quality level in order to hit the target average(!) bitrate. You can also think of ABR mode as a mode<br>
that pre-allocates the bits in a CBR-like fashion and then redistributes the bits within a local neighborhood<br> that pre-allocates the bits in a CBR-like fashion and then redistributes the bits within a local neighborhood<br>
as needed. Thus the ABR mode combines advantages of CBR mode (predictability) and VBR mode (good quality).<br> as needed. Thus the ABR mode combines advantages of CBR mode (predictability) and VBR mode (higher quality).<br>
The final size of the encoded file is still defined as "duration &times; average bitrate", but with ABR mode the<br> The final size of the encoded file is still defined as "duration &times; average_bitrate", but with ABR mode the<br>
average bitrate *is* known beforehand. So if you need to hit a specific file size, ABR mode is the solution.<br> average bitrate *is* known beforehand. So if you need to hit a specific file size, ABR mode is the solution.<br>
Using ABR mode is to be preferred over CBR mode. Nonetheless VBR mode usually provides the best experience.<br>
<br>
<br> <br>
Hint: The Nero AAC encoder supports a variant of the ABR mode, the so-called "2-Pass" mode. That mode scans<br> Hint: The Nero AAC encoder supports a variant of the ABR mode, the so-called "2-Pass" mode. That mode scans<br>
through the entire file once (first pass) before the actual encoding is performed (second pass). This way the<br> through the entire file once (first pass) before the actual encoding is performed (second pass). This way the<br>
@ -291,10 +313,11 @@ quality for obvious reasons. But drawing the conclusion that there is no differe
VBR/ABR modes would be very wrong! The differences will become significant when using a reasonable bitrate.<br> VBR/ABR modes would be very wrong! The differences will become significant when using a reasonable bitrate.<br>
Another mistake is starting with a low-quality source file and concluding that all modes perform equally bad.<br> Another mistake is starting with a low-quality source file and concluding that all modes perform equally bad.<br>
<br> <br>
Summary of rate control modes:<br><ul> <br>
<li>Need to hit a specific fixed file size and still want to retain decent quality? &rArr; ABR mode SUMMARY ON RATE CONTROL MODES:<br><ul>
<li>Want to retain a certain level of quality and the file size doesn't matter that much? &rArr; VBR mode <li>Need to hit a specific fixed file size and still want to retain a decent quality? &rArr; ABR mode
<li>Avoid CBR mode by all means, unless there are crude restrictions that force you to use it!</ul> <li>Want to retain a certain level of quality and hitting an exact file size is not needed? &rArr; VBR mode
<li>Avoid CBR mode by all means, unless there are "external" restrictions that force you to use it!</ul>
<br><br> <br><br>

File diff suppressed because it is too large Load Diff

View File

@ -1898,6 +1898,10 @@
<source>OpusEnc:</source> <source>OpusEnc:</source>
<translation></translation> <translation></translation>
</message> </message>
<message>
<source>Show Help</source>
<translation>Hilfethemen anzeigen</translation>
</message>
</context> </context>
<context> <context>
<name>MetaInfo</name> <name>MetaInfo</name>

View File

@ -1897,6 +1897,10 @@
<source>OpusEnc:</source> <source>OpusEnc:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Show Help</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MetaInfo</name> <name>MetaInfo</name>

View File

@ -1907,6 +1907,10 @@ Ouvrir le dossier récursivement...</translation>
<source>OpusEnc:</source> <source>OpusEnc:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Show Help</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MetaInfo</name> <name>MetaInfo</name>

View File

@ -1898,6 +1898,10 @@
<source>OpusEnc:</source> <source>OpusEnc:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Show Help</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MetaInfo</name> <name>MetaInfo</name>

View File

@ -1897,6 +1897,10 @@
<source>OpusEnc:</source> <source>OpusEnc:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Show Help</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MetaInfo</name> <name>MetaInfo</name>

File diff suppressed because it is too large Load Diff

View File

@ -1903,6 +1903,10 @@
<source>OpusEnc:</source> <source>OpusEnc:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Show Help</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MetaInfo</name> <name>MetaInfo</name>

File diff suppressed because it is too large Load Diff

View File

@ -1897,6 +1897,10 @@
<source>OpusEnc:</source> <source>OpusEnc:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Show Help</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MetaInfo</name> <name>MetaInfo</name>

View File

@ -1898,6 +1898,10 @@
<source>OpusEnc:</source> <source>OpusEnc:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Show Help</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MetaInfo</name> <name>MetaInfo</name>

View File

@ -1897,6 +1897,10 @@
<source>OpusEnc:</source> <source>OpusEnc:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Show Help</source>
<translation type="unfinished"></translation>
</message>
</context> </context>
<context> <context>
<name>MetaInfo</name> <name>MetaInfo</name>

View File

@ -1269,17 +1269,91 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QLabel" name="labelEncoderInfo"> <layout class="QHBoxLayout" name="horizontalLayout_10">
<property name="font"> <item>
<font> <widget class="QLabel" name="labelEncoderInfo">
<weight>50</weight> <property name="font">
<bold>false</bold> <font>
</font> <weight>50</weight>
</property> <bold>false</bold>
<property name="text"> </font>
<string notr="true">(Encoder Info)</string> </property>
</property> <property name="text">
</widget> <string notr="true">(Encoder Info)</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_60">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="labelCompressionHelp">
<property name="palette">
<palette>
<active>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>255</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>120</red>
<green>120</green>
<blue>120</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
<underline>true</underline>
</font>
</property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="text">
<string>Show Help</string>
</property>
<property name="alignment">
<set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
</layout>
</item> </item>
<item> <item>
<spacer name="verticalSpacer_2"> <spacer name="verticalSpacer_2">
@ -1323,8 +1397,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>604</width> <width>602</width>
<height>1677</height> <height>1668</height>
</rect> </rect>
</property> </property>
<layout class="QGridLayout" name="gridLayout_22"> <layout class="QGridLayout" name="gridLayout_22">
@ -4514,6 +4588,9 @@
<include location="../res/Icons.qrc"/> <include location="../res/Icons.qrc"/>
<include location="../res/Icons.qrc"/> <include location="../res/Icons.qrc"/>
<include location="../res/Icons.qrc"/> <include location="../res/Icons.qrc"/>
<include location="../res/Icons.qrc"/>
<include location="../res/Icons.qrc"/>
<include location="../res/Icons.qrc"/>
</resources> </resources>
<connections> <connections>
<connection> <connection>

Binary file not shown.

View File

@ -30,7 +30,7 @@
#define VER_LAMEXP_MINOR_LO 5 #define VER_LAMEXP_MINOR_LO 5
#define VER_LAMEXP_TYPE Alpha #define VER_LAMEXP_TYPE Alpha
#define VER_LAMEXP_PATCH 13 #define VER_LAMEXP_PATCH 13
#define VER_LAMEXP_BUILD 1068 #define VER_LAMEXP_BUILD 1069
/////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////
// Tool versions (minimum expected versions!) // Tool versions (minimum expected versions!)

View File

@ -316,10 +316,12 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
m_encoderButtonGroup->addButton(radioButtonEncoderOpus, SettingsModel::OpusEncoder); m_encoderButtonGroup->addButton(radioButtonEncoderOpus, SettingsModel::OpusEncoder);
m_encoderButtonGroup->addButton(radioButtonEncoderDCA, SettingsModel::DCAEncoder); m_encoderButtonGroup->addButton(radioButtonEncoderDCA, SettingsModel::DCAEncoder);
m_encoderButtonGroup->addButton(radioButtonEncoderPCM, SettingsModel::PCMEncoder); m_encoderButtonGroup->addButton(radioButtonEncoderPCM, SettingsModel::PCMEncoder);
m_modeButtonGroup = new QButtonGroup(this); m_modeButtonGroup = new QButtonGroup(this);
m_modeButtonGroup->addButton(radioButtonModeQuality, SettingsModel::VBRMode); m_modeButtonGroup->addButton(radioButtonModeQuality, SettingsModel::VBRMode);
m_modeButtonGroup->addButton(radioButtonModeAverageBitrate, SettingsModel::ABRMode); m_modeButtonGroup->addButton(radioButtonModeAverageBitrate, SettingsModel::ABRMode);
m_modeButtonGroup->addButton(radioButtonConstBitrate, SettingsModel::CBRMode); m_modeButtonGroup->addButton(radioButtonConstBitrate, SettingsModel::CBRMode);
radioButtonEncoderAAC->setEnabled(m_neroEncoderAvailable || m_fhgEncoderAvailable || m_qaacEncoderAvailable); radioButtonEncoderAAC->setEnabled(m_neroEncoderAvailable || m_fhgEncoderAvailable || m_qaacEncoderAvailable);
radioButtonEncoderMP3->setChecked(m_settings->compressionEncoder() == SettingsModel::MP3Encoder); radioButtonEncoderMP3->setChecked(m_settings->compressionEncoder() == SettingsModel::MP3Encoder);
radioButtonEncoderVorbis->setChecked(m_settings->compressionEncoder() == SettingsModel::VorbisEncoder); radioButtonEncoderVorbis->setChecked(m_settings->compressionEncoder() == SettingsModel::VorbisEncoder);
@ -333,9 +335,15 @@ MainWindow::MainWindow(FileListModel *fileListModel, AudioFileModel *metaInfo, S
radioButtonModeAverageBitrate->setChecked(m_settings->compressionRCMode() == SettingsModel::ABRMode); radioButtonModeAverageBitrate->setChecked(m_settings->compressionRCMode() == SettingsModel::ABRMode);
radioButtonConstBitrate->setChecked(m_settings->compressionRCMode() == SettingsModel::CBRMode); radioButtonConstBitrate->setChecked(m_settings->compressionRCMode() == SettingsModel::CBRMode);
sliderBitrate->setValue(m_settings->compressionBitrate()); sliderBitrate->setValue(m_settings->compressionBitrate());
m_evenFilterCompressionTab = new CustomEventFilter();
labelCompressionHelp->installEventFilter(m_evenFilterCompressionTab);
connect(m_encoderButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(updateEncoder(int))); connect(m_encoderButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(updateEncoder(int)));
connect(m_modeButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(updateRCMode(int))); connect(m_modeButtonGroup, SIGNAL(buttonClicked(int)), this, SLOT(updateRCMode(int)));
connect(m_evenFilterCompressionTab, SIGNAL(eventOccurred(QWidget*, QEvent*)), this, SLOT(compressionTabEventOccurred(QWidget*, QEvent*)));
connect(sliderBitrate, SIGNAL(valueChanged(int)), this, SLOT(updateBitrate(int))); connect(sliderBitrate, SIGNAL(valueChanged(int)), this, SLOT(updateBitrate(int)));
updateEncoder(m_encoderButtonGroup->checkedId()); updateEncoder(m_encoderButtonGroup->checkedId());
//-------------------------------- //--------------------------------
@ -630,6 +638,7 @@ MainWindow::~MainWindow(void)
LAMEXP_DELETE(m_evenFilterCustumParamsHelp); LAMEXP_DELETE(m_evenFilterCustumParamsHelp);
LAMEXP_DELETE(m_evenFilterOutputFolderMouse); LAMEXP_DELETE(m_evenFilterOutputFolderMouse);
LAMEXP_DELETE(m_evenFilterOutputFolderView); LAMEXP_DELETE(m_evenFilterOutputFolderView);
LAMEXP_DELETE(m_evenFilterCompressionTab);
} }
//////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////
@ -690,42 +699,6 @@ void MainWindow::addFiles(const QStringList &files)
/* ignore any exceptions that may occur */ /* ignore any exceptions that may occur */
} }
//--ST--
//
//FileAnalyzer_ST *analyzerST = new FileAnalyzer_ST(files);
//connect(analyzerST, SIGNAL(fileSelected(QString)), m_banner, SLOT(setText(QString)), Qt::QueuedConnection);
//connect(analyzerST, SIGNAL(progressValChanged(unsigned int)), m_banner, SLOT(setProgressVal(unsigned int)), Qt::QueuedConnection);
//connect(analyzerST, SIGNAL(progressMaxChanged(unsigned int)), m_banner, SLOT(setProgressMax(unsigned int)), Qt::QueuedConnection);
//connect(analyzerST, SIGNAL(fileAnalyzed(AudioFileModel)), m_fileListModel, SLOT(addFile(AudioFileModel)), Qt::QueuedConnection);
//connect(m_banner, SIGNAL(userAbort()), analyzerST, SLOT(abortProcess()), Qt::DirectConnection);
//
//try
//{
// m_fileListModel->setBlockUpdates(true);
// QTime startTime = QTime::currentTime();
// m_banner->show(tr("Adding file(s), please wait..."), analyzerST);
// timeST = startTime.secsTo(QTime::currentTime());
//}
//catch(...)
//{
// /* ignore any exceptions that may occur */
//}
//
//------
//
//if(timeST > 0 && timeMT > 0)
//{
// double speedUp = static_cast<double>(timeST) / static_cast<double>(timeMT);
// qWarning("ST: %d, MT: %d", timeST, timeMT);
// QMessageBox::information(this, "Speed Up", QString().sprintf("Announcement: The new multi-threaded file analyzer is %.1fx faster !!!", speedUp), QMessageBox::Ok);
//}
//else
//{
// QMessageBox::information(this, "Speed Up", "Couldn't compare the the new multi-threaded file analyzer this time!", QMessageBox::Ok);
//}
//
//------
m_fileListModel->setBlockUpdates(false); m_fileListModel->setBlockUpdates(false);
qApp->processEvents(QEventLoop::ExcludeUserInputEvents); qApp->processEvents(QEventLoop::ExcludeUserInputEvents);
sourceFileView->update(); sourceFileView->update();
@ -3398,6 +3371,17 @@ void MainWindow::updateBitrate(int value)
} }
} }
/*
* Event for compression tab occurred
*/
void MainWindow::compressionTabEventOccurred(QWidget *sender, QEvent *event)
{
if((sender == labelCompressionHelp) && (event->type() == QEvent::MouseButtonPress))
{
QDesktopServices::openUrl(QUrl("http://lamexp.git.sourceforge.net/git/gitweb.cgi?p=lamexp/lamexp;a=blob_plain;f=doc/FAQ.html;hb=HEAD#054010d9"));
}
}
// ========================================================= // =========================================================
// Advanced option slots // Advanced option slots
// ========================================================= // =========================================================

View File

@ -71,6 +71,7 @@ private slots:
void clearFilesButtonClicked(void); void clearFilesButtonClicked(void);
void clearMetaButtonClicked(void); void clearMetaButtonClicked(void);
void closeButtonClicked(void); void closeButtonClicked(void);
void compressionTabEventOccurred(QWidget*, QEvent*);
void customParamsChanged(void); void customParamsChanged(void);
void customParamsHelpRequested(QWidget *obj, QEvent *event); void customParamsHelpRequested(QWidget *obj, QEvent *event);
void customTempFolderChanged(const QString &text); void customTempFolderChanged(const QString &text);
@ -214,4 +215,5 @@ private:
CustomEventFilter *m_evenFilterCustumParamsHelp; CustomEventFilter *m_evenFilterCustumParamsHelp;
CustomEventFilter *m_evenFilterOutputFolderMouse; CustomEventFilter *m_evenFilterOutputFolderMouse;
CustomEventFilter *m_evenFilterOutputFolderView; CustomEventFilter *m_evenFilterOutputFolderView;
CustomEventFilter *m_evenFilterCompressionTab;
}; };

View File

@ -743,7 +743,7 @@ void InitializationThread::selfTest(void)
qDebug("%02i -> %s", ++n, g_lamexp_tools[i].pcName); qDebug("%02i -> %s", ++n, g_lamexp_tools[i].pcName);
} }
} }
if(n != 25) if(n != 28)
{ {
qFatal("Tool count mismatch !!!"); qFatal("Tool count mismatch !!!");
} }