Change the way the flags are interpreted for MP3 compression. The main impact is that now minimum and maximum bitrates are undefined by default and not passed to lame if they are not defined explicitly. They can also be used for both ABR and VBR now.

Also improved the GUI tools MP3 option page. When switching between ABR and VBR only the relevant options remain visible. The page has not been changed to allow use of minimum and maximum bitrates for ABR though (and they are still always used for VBR). So the user does not have as much flexibility with MP3 options when using the GUI tools than he has with the CLI version.

svn-id: r48974
This commit is contained in:
Thierry Crozat
2010-05-08 22:42:29 +00:00
parent 95e91f2d32
commit 38c17b4c76
6 changed files with 142 additions and 122 deletions
+1 -2
View File
@@ -6,8 +6,7 @@ For a more comprehensive changelog for the latest experimental SVN code, see:
- Add version information to tools.
- Respect $BINDIR when installing (similar to ScummVM).
- Fix bug #2983010: GUI Tools builds even if optioned out.
- Do not give a maximum bitrate to lame when encoding to ABR MP3 since the lame
documentation says "this is NOT RECOMMENDED".
- Change the behavior of the CLI flags for MP3 encoding.
1.1.1 (2010-05-02)
First tools version to contain a NEWS file.
+64 -45
View File
@@ -42,8 +42,8 @@
#endif
struct lameparams {
uint32 minBitr;
uint32 maxBitr;
int32 minBitr;
int32 maxBitr;
uint32 targetBitr;
bool abr;
uint32 algqual;
@@ -72,7 +72,7 @@ struct rawtype {
uint8 bitsPerSample;
};
lameparams encparms = { minBitrDef, maxBitrDef, targetBitrDef, false, algqualDef, vbrqualDef, 0, "lame" };
lameparams lameparms = { -1, -1, 32, false, algqualDef, vbrqualDef, 0, "lame" };
oggencparams oggparms = { -1, -1, -1, (float)oggqualDef, 0 };
flaccparams flacparms = { flacCompressDef, flacBlocksizeDef, false, false };
rawtype rawAudioType = { false, false, 8 };
@@ -125,7 +125,7 @@ void CompressionTool::encodeAudio(const char *inname, bool rawInput, int rawSamp
char *tmp = fbuf;
if (compmode == AUDIO_MP3) {
tmp += sprintf(tmp, "%s -t ", encparms.lamePath.c_str());
tmp += sprintf(tmp, "%s -t ", lameparms.lamePath.c_str());
if (rawInput) {
tmp += sprintf(tmp, "-r ");
tmp += sprintf(tmp, "--bitwidth %d ", rawAudioType.bitsPerSample);
@@ -140,12 +140,15 @@ void CompressionTool::encodeAudio(const char *inname, bool rawInput, int rawSamp
tmp += sprintf(tmp, "-s %d ", rawSamplerate);
}
if (encparms.abr)
tmp += sprintf(tmp, "--abr %d ", encparms.targetBitr);
else {
tmp += sprintf(tmp, "--vbr-new -b %d ", encparms.minBitr);
tmp += sprintf(tmp, "-B %d ", encparms.maxBitr);
}
if (lameparms.abr)
tmp += sprintf(tmp, "--abr %d ", lameparms.targetBitr);
else
tmp += sprintf(tmp, "--vbr-new -V %d ", lameparms.vbrqual);
if (lameparms.minBitr != -1)
tmp += sprintf(tmp, "-b %d ", lameparms.minBitr);
if (lameparms.maxBitr != -1)
tmp += sprintf(tmp, "-B %d ", lameparms.maxBitr);
/* Explicitly specify a target sample rate, to work around a bug (?)
* in newer lame versions (>= 3.95) which causes it to malfunction
@@ -158,12 +161,11 @@ void CompressionTool::encodeAudio(const char *inname, bool rawInput, int rawSamp
tmp += sprintf(tmp, "--resample %d ", map2MP3Frequency(97 * rawSamplerate / 100));
}
if (encparms.silent) {
if (lameparms.silent) {
tmp += sprintf(tmp, " --silent ");
}
tmp += sprintf(tmp, "-q %d ", encparms.algqual);
tmp += sprintf(tmp, "-V %d ", encparms.vbrqual);
tmp += sprintf(tmp, "-q %d ", lameparms.algqual);
tmp += sprintf(tmp, "\"%s\" \"%s\" ", inname, outname);
@@ -778,62 +780,74 @@ void CompressionTool::extractAndEncodeVOC(const char *outName, Common::File &inp
// mp3 settings
void CompressionTool::setMp3LamePath(const std::string& arg) {
encparms.lamePath = arg;
lameparms.lamePath = arg;
}
void CompressionTool::setMp3CompressionType(const std::string& arg) {
encparms.abr = (arg == "ABR");
lameparms.abr = (arg == "ABR");
}
void CompressionTool::setMp3MpegQuality(const std::string& arg) {
encparms.algqual = atoi(arg.c_str());
lameparms.algqual = atoi(arg.c_str());
if (encparms.algqual == 0 && arg != "0")
if (lameparms.algqual == 0 && arg != "0")
throw ToolException("Quality (-q) must be a number.");
if (encparms.algqual > 9)
if (lameparms.algqual > 9)
throw ToolException("Quality (-q) out of bounds, must be between 0 and 9.");
}
void CompressionTool::setMp3ABRBitrate(const std::string& arg) {
encparms.minBitr = atoi(arg.c_str());
void CompressionTool::setMp3TargetBitrate(const std::string& arg) {
lameparms.minBitr = atoi(arg.c_str());
if (encparms.targetBitr == 0 && arg != "0")
if (lameparms.targetBitr == 0 && arg != "0")
throw ToolException("Minimum bitrate (-b) must be a number.");
if (encparms.targetBitr < 8 || encparms.targetBitr > 160)
if (lameparms.targetBitr < 8 || lameparms.targetBitr > 160)
throw ToolException("Minimum bitrate out of bounds (-b), must be between 8 and 160.");
}
void CompressionTool::setMp3VBRMinBitrate(const std::string& arg) {
encparms.minBitr = atoi(arg.c_str());
void CompressionTool::setMp3MinBitrate(const std::string& arg) {
lameparms.minBitr = atoi(arg.c_str());
if (encparms.minBitr == 0 && arg != "0")
if (lameparms.minBitr == 0 && arg != "0")
throw ToolException("Minimum bitrate (-b) must be a number.");
if ((encparms.minBitr % 8) != 0)
encparms.maxBitr -= encparms.minBitr % 8;
if ((lameparms.minBitr % 8) != 0)
lameparms.minBitr -= lameparms.minBitr % 8;
if (lameparms.minBitr > 64 && (lameparms.minBitr % 16) != 0)
lameparms.minBitr -= lameparms.minBitr % 16;
if (encparms.minBitr < 8 || encparms.minBitr > 160)
if (lameparms.minBitr < 8 || lameparms.minBitr > 160)
throw ToolException("Minimum bitrate out of bounds (-b), must be between 8 and 160.");
}
void CompressionTool::setMp3VBRMaxBitrate(const std::string& arg) {
encparms.maxBitr = atoi(arg.c_str());
void CompressionTool::setMp3MaxBitrate(const std::string& arg) {
lameparms.maxBitr = atoi(arg.c_str());
if (encparms.maxBitr == 0 && arg != "0")
if (lameparms.maxBitr == 0 && arg != "0")
throw ToolException("Maximum bitrate (-B) must be a number.");
if ((encparms.maxBitr % 8) != 0)
encparms.maxBitr -= encparms.maxBitr % 8;
if ((lameparms.maxBitr % 8) != 0)
lameparms.maxBitr -= lameparms.maxBitr % 8;
if (lameparms.maxBitr > 64 && (lameparms.maxBitr % 16) != 0)
lameparms.maxBitr -= lameparms.maxBitr % 16;
if (encparms.maxBitr < 8 || encparms.maxBitr > 160)
if (lameparms.maxBitr < 8 || lameparms.maxBitr > 160)
throw ToolException("Maximum bitrate out of bounds (-B), must be between 8 and 160.");
}
void CompressionTool::unsetMp3MinBitrate() {
lameparms.minBitr = -1;
}
void CompressionTool::unsetMp3MaxBitrate() {
lameparms.maxBitr = -1;
}
void CompressionTool::setMp3VBRQuality(const std::string& arg) {
encparms.vbrqual = atoi(arg.c_str());
if (encparms.vbrqual > 9)
lameparms.vbrqual = atoi(arg.c_str());
if (lameparms.vbrqual > 9)
throw ToolException("Quality (-q) out of bounds, must be between 0 and 9.");
}
@@ -903,9 +917,14 @@ bool CompressionTool::processMp3Parms() {
_arguments.pop_front();
if (arg == "--vbr") {
encparms.abr = 0;
lameparms.abr = 0;
} else if (arg == "--abr") {
encparms.abr = 1;
if (_arguments.empty())
throw ToolException("Could not parse command line options, expected target bitrate after --abr");
lameparms.abr = 1;
setMp3TargetBitrate(_arguments.front());
_arguments.pop_front();
} else if (arg == "--lame-path") {
if (_arguments.empty())
throw ToolException("Could not parse command line options, expected value after --lame-path");
@@ -915,13 +934,13 @@ bool CompressionTool::processMp3Parms() {
} else if (arg == "-b") {
if (_arguments.empty())
throw ToolException("Could not parse command line options, expected value after -b");
setMp3VBRMinBitrate(_arguments.front());
setMp3MinBitrate(_arguments.front());
_arguments.pop_front();
} else if (arg == "-B") {
if (_arguments.empty())
throw ToolException("Could not parse command line options, expected value after -B");
setMp3VBRMaxBitrate(_arguments.front());
setMp3MaxBitrate(_arguments.front());
_arguments.pop_front();
} else if (arg == "-V") {
@@ -937,7 +956,7 @@ bool CompressionTool::processMp3Parms() {
_arguments.pop_front();
} else if (arg == "--silent") {
encparms.silent = 1;
lameparms.silent = 1;
} else {
_arguments.push_front(arg); //put back the non-audio argument we popped.
break;
@@ -1115,11 +1134,11 @@ std::string CompressionTool::getHelp() const {
if (_supportedFormats & AUDIO_MP3) {
os << "\nMP3 mode params:\n";
os << " --lame-path <path> Path to the lame excutable to use (default: lame)\n";
os << " -b <rate> <rate> is the target bitrate(ABR)/minimal bitrate(VBR) (default:" << targetBitrDef << " for ABR and " << minBitrDef << " for VBR)\n";
os << " -B <rate> <rate> is the maximum VBR bitrate (default:" << maxBitrDef << ")\n";
os << " --lame-path <path> Path to the lame excutable to use (default:lame)\n";
os << " -b <rate> <rate> is the minimal bitrate (default:unset)\n";
os << " -B <rate> <rate> is the maximum bitrate (default:unset)\n";
os << " --vbr LAME uses the VBR mode (default)\n";
os << " --abr LAME uses the ABR mode\n";
os << " --abr <rate> LAME uses the ABR mode with the given target bitrate\n";
os << " -V <value> specifies the value (0 - 9) of VBR quality (0=best) (default:" << vbrqualDef << ")\n";
os << " -q <value> specifies the MPEG algorithm quality (0-9; 0=best) (default:" << algqualDef << ")\n";
os << " --silent the output of LAME is hidden (default:disabled)\n";
+5 -6
View File
@@ -28,9 +28,6 @@
enum {
/* These are the defaults parameters for the Lame invocation */
minBitrDef = 24,
maxBitrDef = 64,
targetBitrDef = 32,
algqualDef = 2,
vbrqualDef = 4,
@@ -93,9 +90,11 @@ public:
void setMp3LamePath(const std::string&);
void setMp3CompressionType(const std::string&);
void setMp3MpegQuality(const std::string&);
void setMp3ABRBitrate(const std::string&);
void setMp3VBRMinBitrate(const std::string&);
void setMp3VBRMaxBitrate(const std::string&);
void setMp3TargetBitrate(const std::string&);
void setMp3MinBitrate(const std::string&);
void setMp3MaxBitrate(const std::string&);
void unsetMp3MinBitrate();
void unsetMp3MaxBitrate();
void setMp3VBRQuality(const std::string&);
// flac
+7 -5
View File
@@ -149,11 +149,13 @@ void ToolGUI::run(const Configuration &conf) const {
compression->setMp3LamePath ( (const char *)conf.mp3LamePath.mb_str() );
compression->setMp3CompressionType( (const char *)conf.mp3CompressionType.mb_str() );
compression->setMp3MpegQuality ( (const char *)conf.mp3MpegQuality.mb_str() );
if (conf.mp3CompressionType == wxT("ABR"))
compression->setMp3ABRBitrate ( (const char *)conf.mp3ABRBitrate.mb_str() );
else {
compression->setMp3VBRMinBitrate ( (const char *)conf.mp3VBRMinBitrate.mb_str() );
compression->setMp3VBRMaxBitrate ( (const char *)conf.mp3VBRMaxBitrate.mb_str() );
if (conf.mp3CompressionType == wxT("ABR")) {
compression->setMp3TargetBitrate ( (const char *)conf.mp3ABRBitrate.mb_str() );
compression->unsetMp3MinBitrate();
compression->unsetMp3MaxBitrate();
} else {
compression->setMp3MinBitrate ( (const char *)conf.mp3VBRMinBitrate.mb_str() );
compression->setMp3MaxBitrate ( (const char *)conf.mp3VBRMaxBitrate.mb_str() );
}
compression->setMp3VBRQuality ( (const char *)conf.mp3VBRQuality.mb_str() );
+54 -64
View File
@@ -862,14 +862,6 @@ wxWindow *ChooseAudioOptionsMp3Page::CreatePanel(wxWindow *parent) {
wxWindow *panel = WizardPage::CreatePanel(parent);
wxSizer *sizer = new wxBoxSizer(wxVERTICAL);
// Add a ScrolledWindow in that panel as there is a lot of options
// and there might not be enough place to display them all.
wxScrolledWindow *scroll = new wxScrolledWindow(panel);
scroll->FitInside();
scroll->SetScrollRate(10, 10);
sizer->Add(scroll, 1, wxEXPAND | wxALL);
/*
"\nMP3 mode params:\n"
@@ -884,36 +876,36 @@ wxWindow *ChooseAudioOptionsMp3Page::CreatePanel(wxWindow *parent) {
*/
// Grid
wxFlexGridSizer *gridSizer = new wxFlexGridSizer(7, 2, 10, 25);
gridSizer->AddGrowableCol(1);
_gridSizer = new wxFlexGridSizer(7, 2, 10, 25);
_gridSizer->AddGrowableCol(1);
// Create output selection
gridSizer->Add(new wxStaticText(scroll, wxID_ANY, wxT("Lame executable:")));
_gridSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("Lame executable:")));
wxFilePickerCtrl *lamePicker = new wxFilePickerCtrl(
scroll, wxID_ANY, _configuration.outputPath, wxT("Select lame executable"),
panel, wxID_ANY, _configuration.outputPath, wxT("Select lame executable"),
wxT("lame"),
wxDefaultPosition, wxSize(250, -1),
wxFLP_USE_TEXTCTRL | wxFLP_OPEN, wxDefaultValidator,
wxT("LamePath")
);
gridSizer->Add(lamePicker, wxSizerFlags().Expand());
_gridSizer->Add(lamePicker, wxSizerFlags().Expand());
// Type of compression
gridSizer->Add(new wxStaticText(scroll, wxID_ANY, wxT("Compression Type:")));
_gridSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("Compression Type:")));
wxRadioButton *abrButton = new wxRadioButton(scroll, wxID_ANY, wxT("ABR"),
wxRadioButton *abrButton = new wxRadioButton(panel, wxID_ANY, wxT("ABR"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxT("ABR"));
wxSizer *radioSizer = new wxBoxSizer(wxHORIZONTAL);
radioSizer->Add(abrButton);
wxRadioButton *vbrButton = new wxRadioButton(scroll, wxID_ANY, wxT("VBR"),
wxRadioButton *vbrButton = new wxRadioButton(panel, wxID_ANY, wxT("VBR"),
wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator, wxT("VBR"));
radioSizer->Add(vbrButton);
gridSizer->Add(radioSizer, wxSizerFlags().Expand());
_gridSizer->Add(radioSizer, wxSizerFlags().Expand());
// Bitrates
const int possibleBitrateCount = 160 / 8;
@@ -922,28 +914,31 @@ wxWindow *ChooseAudioOptionsMp3Page::CreatePanel(wxWindow *parent) {
possibleBitrates[i] << (i+1)*8;
}
gridSizer->Add(new wxStaticText(scroll, wxID_ANY, wxT("Minimum Bitrate:")));
_vbrMinBitrateLabel = new wxStaticText(panel, wxID_ANY, wxT("Minimum Bitrate:"));
_gridSizer->Add(_vbrMinBitrateLabel);
wxChoice *vbrMinBitrate = new wxChoice(
scroll, wxID_ANY, wxDefaultPosition, wxDefaultSize,
_vbrMinBitrate = new wxChoice(
panel, wxID_ANY, wxDefaultPosition, wxDefaultSize,
possibleBitrateCount, possibleBitrates, 0, wxDefaultValidator, wxT("MinimumBitrate"));
gridSizer->Add(vbrMinBitrate, wxSizerFlags().Expand().Border(wxRIGHT, 100));
_gridSizer->Add(_vbrMinBitrate, wxSizerFlags().Expand().Border(wxRIGHT, 100));
gridSizer->Add(new wxStaticText(scroll, wxID_ANY, wxT("Maximum Bitrate:")));
_vbrMaxBitrateLabel = new wxStaticText(panel, wxID_ANY, wxT("Maximum Bitrate:"));
_gridSizer->Add(_vbrMaxBitrateLabel);
wxChoice *vbrMaxBitrate = new wxChoice(
scroll, wxID_ANY, wxDefaultPosition, wxDefaultSize,
_vbrMaxBitrate = new wxChoice(
panel, wxID_ANY, wxDefaultPosition, wxDefaultSize,
possibleBitrateCount, possibleBitrates, 0, wxDefaultValidator, wxT("MaximumBitrate"));
gridSizer->Add(vbrMaxBitrate, wxSizerFlags().Expand().Border(wxRIGHT, 100));
_gridSizer->Add(_vbrMaxBitrate, wxSizerFlags().Expand().Border(wxRIGHT, 100));
gridSizer->Add(new wxStaticText(scroll, wxID_ANY, wxT("Average Bitrate:")));
_abrAvgBitrateLabel = new wxStaticText(panel, wxID_ANY, wxT("Average Bitrate:"));
_gridSizer->Add(_abrAvgBitrateLabel);
wxChoice *abrAvgBitrate = new wxChoice(
scroll, wxID_ANY, wxDefaultPosition, wxDefaultSize,
_abrAvgBitrate = new wxChoice(
panel, wxID_ANY, wxDefaultPosition, wxDefaultSize,
possibleBitrateCount, possibleBitrates, 0, wxDefaultValidator, wxT("AverageBitrate"));
gridSizer->Add(abrAvgBitrate, wxSizerFlags().Expand().Border(wxRIGHT, 100));
_gridSizer->Add(_abrAvgBitrate, wxSizerFlags().Expand().Border(wxRIGHT, 100));
abrButton->Connect(wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler(ChooseAudioOptionsMp3Page::onChangeCompressionType), NULL, this);
vbrButton->Connect(wxEVT_COMMAND_RADIOBUTTON_SELECTED, wxCommandEventHandler(ChooseAudioOptionsMp3Page::onChangeCompressionType), NULL, this);
@@ -955,23 +950,24 @@ wxWindow *ChooseAudioOptionsMp3Page::CreatePanel(wxWindow *parent) {
possibleQualities[i] << i;
}
gridSizer->Add(new wxStaticText(scroll, wxID_ANY, wxT("VBR Quality:")));
_vbrQualityLabel = new wxStaticText(panel, wxID_ANY, wxT("VBR Quality:"));
_gridSizer->Add(_vbrQualityLabel);
wxChoice *vbrQuality = new wxChoice(
scroll, wxID_ANY, wxDefaultPosition, wxDefaultSize,
_vbrQuality = new wxChoice(
panel, wxID_ANY, wxDefaultPosition, wxDefaultSize,
possibleQualityCount, possibleQualities, 0, wxDefaultValidator, wxT("VBRQuality"));
gridSizer->Add(vbrQuality, wxSizerFlags().Expand().Border(wxRIGHT, 100));
_gridSizer->Add(_vbrQuality, wxSizerFlags().Expand().Border(wxRIGHT, 100));
gridSizer->Add(new wxStaticText(scroll, wxID_ANY, wxT("MPEG Quality:")));
_gridSizer->Add(new wxStaticText(panel, wxID_ANY, wxT("MPEG Quality:")));
wxChoice *mpegQuality = new wxChoice(
scroll, wxID_ANY, wxDefaultPosition, wxDefaultSize,
panel, wxID_ANY, wxDefaultPosition, wxDefaultSize,
possibleQualityCount, possibleQualities, 0, wxDefaultValidator, wxT("MpegQuality"));
gridSizer->Add(mpegQuality, wxSizerFlags().Expand().Border(wxRIGHT, 100));
_gridSizer->Add(mpegQuality, wxSizerFlags().Expand().Border(wxRIGHT, 100));
// Finish the window
scroll->SetSizer(gridSizer);
sizer->Add(_gridSizer, wxSizerFlags().Expand());
SetAlignedSizer(panel, sizer);
@@ -981,11 +977,11 @@ wxWindow *ChooseAudioOptionsMp3Page::CreatePanel(wxWindow *parent) {
abrButton->SetValue(true);
else
vbrButton->SetValue(true);
vbrMinBitrate->SetStringSelection(_configuration.mp3VBRMinBitrate);
vbrMaxBitrate->SetStringSelection(_configuration.mp3VBRMaxBitrate);
abrAvgBitrate->SetStringSelection(_configuration.mp3ABRBitrate);
vbrQuality ->SetStringSelection(_configuration.mp3VBRQuality);
mpegQuality ->SetStringSelection(_configuration.mp3MpegQuality);
_vbrMinBitrate->SetStringSelection(_configuration.mp3VBRMinBitrate);
_vbrMaxBitrate->SetStringSelection(_configuration.mp3VBRMaxBitrate);
_abrAvgBitrate->SetStringSelection(_configuration.mp3ABRBitrate);
_vbrQuality ->SetStringSelection(_configuration.mp3VBRQuality);
mpegQuality ->SetStringSelection(_configuration.mp3MpegQuality);
updateFields(panel);
@@ -996,20 +992,14 @@ void ChooseAudioOptionsMp3Page::save(wxWindow *panel) {
wxFilePickerCtrl *lamePath = static_cast<wxFilePickerCtrl *>(panel->FindWindowByName(wxT("LamePath")));
wxRadioButton *abr = static_cast<wxRadioButton *>(panel->FindWindowByName(wxT("ABR")));
// wxRadioButton *vbr = static_cast<wxRadioButton *>(panel->FindWindowByName(wxT("VBR")));
wxChoice *vbrMinBitrate = static_cast<wxChoice *>(panel->FindWindowByName(wxT("MinimumBitrate")));
wxChoice *vbrMaxBitrate = static_cast<wxChoice *>(panel->FindWindowByName(wxT("MaximumBitrate")));
wxChoice *abrAvgBitrate = static_cast<wxChoice *>(panel->FindWindowByName(wxT("AverageBitrate")));
wxChoice *vbrQuality = static_cast<wxChoice *>(panel->FindWindowByName(wxT("VBRQuality")));
wxChoice *mpegQuality = static_cast<wxChoice *>(panel->FindWindowByName(wxT("MpegQuality")));
_configuration.mp3LamePath = lamePath->GetPath();
_configuration.mp3VBRMinBitrate = vbrMinBitrate->GetStringSelection();
_configuration.mp3VBRMaxBitrate = vbrMaxBitrate->GetStringSelection();
_configuration.mp3ABRBitrate = abrAvgBitrate->GetStringSelection();
_configuration.mp3VBRQuality = vbrQuality ->GetStringSelection();
_configuration.mp3MpegQuality = mpegQuality ->GetStringSelection();
_configuration.mp3VBRMinBitrate = _vbrMinBitrate->GetStringSelection();
_configuration.mp3VBRMaxBitrate = _vbrMaxBitrate->GetStringSelection();
_configuration.mp3ABRBitrate = _abrAvgBitrate->GetStringSelection();
_configuration.mp3VBRQuality = _vbrQuality ->GetStringSelection();
_configuration.mp3MpegQuality = mpegQuality ->GetStringSelection();
if (abr->GetValue())
_configuration.mp3CompressionType = wxT("ABR");
else
@@ -1018,18 +1008,18 @@ void ChooseAudioOptionsMp3Page::save(wxWindow *panel) {
void ChooseAudioOptionsMp3Page::updateFields(wxWindow *panel) {
wxRadioButton *abr = static_cast<wxRadioButton *>(panel->FindWindowByName(wxT("ABR")));
//wxRadioButton *vbr = static_cast<wxRadioButton *>(panel->FindWindowByName(wxT("VBR")));
wxChoice *vbrMinBitrate = static_cast<wxChoice *>(panel->FindWindowByName(wxT("MinimumBitrate")));
wxChoice *vbrMaxBitrate = static_cast<wxChoice *>(panel->FindWindowByName(wxT("MaximumBitrate")));
wxChoice *abrAvgBitrate = static_cast<wxChoice *>(panel->FindWindowByName(wxT("AverageBitrate")));
wxChoice *vbrQuality = static_cast<wxChoice *>(panel->FindWindowByName(wxT("VBRQuality")));
//wxChoice *mpegQuality = static_cast<wxChoice *>(panel->FindWindowByName(wxT("MpegQuality")));
vbrMinBitrate->Enable(!abr->GetValue());
vbrMaxBitrate->Enable(!abr->GetValue());
vbrQuality->Enable(!abr->GetValue());
abrAvgBitrate->Enable(abr->GetValue());
bool isAbrSelected = abr->GetValue();
_gridSizer->Show(_abrAvgBitrate, isAbrSelected);
_gridSizer->Show(_abrAvgBitrateLabel, isAbrSelected);
_gridSizer->Show(_vbrMinBitrate, !isAbrSelected);
_gridSizer->Show(_vbrMinBitrateLabel, !isAbrSelected);
_gridSizer->Show(_vbrMaxBitrate, !isAbrSelected);
_gridSizer->Show(_vbrMaxBitrateLabel, !isAbrSelected);
_gridSizer->Show(_vbrQuality, !isAbrSelected);
_gridSizer->Show(_vbrQualityLabel, !isAbrSelected);
_gridSizer->Layout();
}
void ChooseAudioOptionsMp3Page::onChangeCompressionType(wxCommandEvent &evt) {
+11
View File
@@ -323,6 +323,17 @@ public:
* @param panel The panel to operate on
*/
void updateFields(wxWindow *panel);
private:
wxFlexGridSizer* _gridSizer;
wxStaticText* _vbrMinBitrateLabel;
wxChoice* _vbrMinBitrate;
wxStaticText* _vbrMaxBitrateLabel;
wxChoice* _vbrMaxBitrate;
wxStaticText* _vbrQualityLabel;
wxChoice* _vbrQuality;
wxStaticText* _abrAvgBitrateLabel;
wxChoice* _abrAvgBitrate;
};
/**