[Scummvm-cvs-logs] SF.net SVN: scummvm:[48974] tools/trunk

criezy at users.sourceforge.net criezy at users.sourceforge.net
Sun May 9 00:42:29 CEST 2010


Revision: 48974
          http://scummvm.svn.sourceforge.net/scummvm/?rev=48974&view=rev
Author:   criezy
Date:     2010-05-08 22:42:29 +0000 (Sat, 08 May 2010)

Log Message:
-----------
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.

Modified Paths:
--------------
    tools/trunk/NEWS
    tools/trunk/compress.cpp
    tools/trunk/compress.h
    tools/trunk/gui/gui_tools.cpp
    tools/trunk/gui/pages.cpp
    tools/trunk/gui/pages.h

Modified: tools/trunk/NEWS
===================================================================
--- tools/trunk/NEWS	2010-05-08 21:34:10 UTC (rev 48973)
+++ tools/trunk/NEWS	2010-05-08 22:42:29 UTC (rev 48974)
@@ -6,8 +6,7 @@
  - 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.

Modified: tools/trunk/compress.cpp
===================================================================
--- tools/trunk/compress.cpp	2010-05-08 21:34:10 UTC (rev 48973)
+++ tools/trunk/compress.cpp	2010-05-08 22:42:29 UTC (rev 48974)
@@ -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 @@
 	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 @@
 	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,13 +140,16 @@
 			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
 		* for odd sample rates when in VBR mode. See also bug #934026.
@@ -158,12 +161,11 @@
 			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 @@
 
 // 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 @@
 		_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 @@
 		} 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 @@
 			_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 @@
 
 	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";

Modified: tools/trunk/compress.h
===================================================================
--- tools/trunk/compress.h	2010-05-08 21:34:10 UTC (rev 48973)
+++ tools/trunk/compress.h	2010-05-08 22:42:29 UTC (rev 48974)
@@ -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 @@
 	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

Modified: tools/trunk/gui/gui_tools.cpp
===================================================================
--- tools/trunk/gui/gui_tools.cpp	2010-05-08 21:34:10 UTC (rev 48973)
+++ tools/trunk/gui/gui_tools.cpp	2010-05-08 22:42:29 UTC (rev 48974)
@@ -149,11 +149,13 @@
 		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()      );
 

Modified: tools/trunk/gui/pages.cpp
===================================================================
--- tools/trunk/gui/pages.cpp	2010-05-08 21:34:10 UTC (rev 48973)
+++ tools/trunk/gui/pages.cpp	2010-05-08 22:42:29 UTC (rev 48974)
@@ -862,14 +862,6 @@
 	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 @@
 	*/
 
 	// 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 @@
 		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 @@
 		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 @@
 		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 @@
 	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::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) {

Modified: tools/trunk/gui/pages.h
===================================================================
--- tools/trunk/gui/pages.h	2010-05-08 21:34:10 UTC (rev 48973)
+++ tools/trunk/gui/pages.h	2010-05-08 22:42:29 UTC (rev 48974)
@@ -323,6 +323,17 @@
 	 * @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;
 };
 
 /**


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list