[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#602277: rezound: raw files are not saved correctly



Package: rezound
Version: 0.12.3beta-3
Severity: normal

rezound-0.12.3_beta simply ingores the parameters of the edited sound when
saving it as RAW file.

Reproducible: Always

Steps to Reproduce:
1. open a stereo RAW file for example
2. monoize it
3. save it as RAW file
Actual Results:  
The written file will be stereo.

Expected Results:  
The written file should be mono.

This is because when saving a a RAW file the same RAW parameter dialog is used
as for opening a RAW file, with the only difference that certain GUI components 
are hidden, which are initialized with hard coded default values.

Attached you find a patch which fixes the issue for rezound 0.12.3beta-3. Just 
drop it into debian/patches.

I already forwarded the patch upstream, as a rather long release cycle is 
expected however, please apply this patch to the debian package for now! (This 
patch was already accepted by Gentoo almost 3 years ago BTW, see Gentoo bug 
report 203471).
diff --recursive -U 3 rezound-0.12.3beta.orig/src/backend/CrawSoundTranslator.cpp rezound-0.12.3beta/src/backend/CrawSoundTranslator.cpp
--- rezound-0.12.3beta.orig/src/backend/CrawSoundTranslator.cpp	2005-02-15 03:28:38.000000000 +0000
+++ rezound-0.12.3beta/src/backend/CrawSoundTranslator.cpp	2007-12-27 16:12:44.000000000 +0000
@@ -132,6 +132,13 @@
 		// get user preferences for saving the raw data
 		static bool parametersGotten=false;
 		static AFrontendHooks::RawParameters parameters;
+
+		// init parameters which cannot be changed by the RAW parameters dialog
+		parameters.channelCount=sound->getChannelCount();
+		parameters.sampleRate=sound->getSampleRate();
+		parameters.dataLength=sound->getLength();
+		parameters.dataOffset=0;
+
 		useLastUserPrefs&=parametersGotten;
 		if(!useLastUserPrefs)
 		{
diff --recursive -U 3 rezound-0.12.3beta.orig/src/frontend_fox/CRawDialog.cpp rezound-0.12.3beta/src/frontend_fox/CRawDialog.cpp
--- rezound-0.12.3beta.orig/src/frontend_fox/CRawDialog.cpp	2005-05-01 04:57:36.000000000 +0000
+++ rezound-0.12.3beta/src/frontend_fox/CRawDialog.cpp	2007-12-27 15:29:47.000000000 +0000
@@ -137,8 +137,11 @@
 
 	if(execute(PLACEMENT_SCREEN))
 	{
-		parameters.channelCount=atoi(channelsCountComboBox->getText().text());
-		parameters.sampleRate=atoi(sampleRateComboBox->getText().text());
+		// don't apply values of hidden GUI controls
+		if (showLoadRawParameters) {
+			parameters.channelCount=atoi(channelsCountComboBox->getText().text());
+			parameters.sampleRate=atoi(sampleRateComboBox->getText().text());
+		}
 
 		switch(sampleFormatComboBox->getCurrentItem())
 		{
@@ -158,19 +161,22 @@
 
 		parameters.endian= byteOrderToggleButton->getState() ? AFrontendHooks::RawParameters::eBigEndian : AFrontendHooks::RawParameters::eLittleEndian;
 
-		if(atoi(dataOffsetTextBox->getText().text())<0)
-		{
-			Error(_("invalid negative data offset"));
-			return(false);
-		}
-		parameters.dataOffset=atoi(dataOffsetTextBox->getText().text());
-
-		if(atoi(dataLengthTextBox->getText().text())<0)
-		{
-			Error(_("invalid negative data length"));
-			return(false);
+		// don't apply values of hidden GUI controls
+		if (showLoadRawParameters) {
+			if(atoi(dataOffsetTextBox->getText().text())<0)
+			{
+				Error(_("invalid negative data offset"));
+				return(false);
+			}
+			parameters.dataOffset=atoi(dataOffsetTextBox->getText().text());
+
+			if(atoi(dataLengthTextBox->getText().text())<0)
+			{
+				Error(_("invalid negative data length"));
+				return(false);
+			}
+			parameters.dataLength=atoi(dataLengthTextBox->getText().text());
 		}
-		parameters.dataLength=atoi(dataLengthTextBox->getText().text());
 
 		return(true);
 	}
diff --recursive -U 3 rezound-0.12.3beta.orig/src/frontend_fox/CRawDialog.h rezound-0.12.3beta/src/frontend_fox/CRawDialog.h
--- rezound-0.12.3beta.orig/src/frontend_fox/CRawDialog.h	2005-02-15 06:23:34.000000000 +0000
+++ rezound-0.12.3beta/src/frontend_fox/CRawDialog.h	2007-12-27 15:03:27.000000000 +0000
@@ -37,7 +37,7 @@
 	CRawDialog(FXWindow *mainWindow);
 	virtual ~CRawDialog();
 
-	bool show(AFrontendHooks::RawParameters &parameters,bool showOffsetAndLengthParameters);
+	bool show(AFrontendHooks::RawParameters &parameters,bool showLoadRawParameters);
 
 	//long onRadioButton(FXObject *sender,FXSelector sel,void *ptr);
 

Reply to: