1
0
mirror of https://github.com/cookiengineer/audacity synced 2025-06-16 16:10:06 +02:00

Bug 2062 - Export as WAV does not remember the previously used setting

This should resolve the final nit for this bug.
This commit is contained in:
Leland Lucius 2020-03-30 22:40:27 -05:00
parent 8d3e6eb2ad
commit e09b35f2c8
2 changed files with 42 additions and 20 deletions

View File

@ -625,18 +625,34 @@ bool ProjectFileManager::SaveCopyWaveTracks(const FilePath & strProjectPathName,
auto &trackFactory = TrackFactory::Get( project );
wxString extension, fileFormat;
#ifdef USE_LIBVORBIS
if (bLossless) {
extension = wxT("wav");
fileFormat = wxT("WAVFLT");
} else {
bool haveVorbis =
#if defined(USE_LIBVORBIS)
true;
#else
false;
#endif
if (!bLossless && haveVorbis) {
extension = wxT("ogg");
fileFormat = wxT("OGG");
} else{
extension = wxT("wav");
fileFormat = wxT("WAV");
// LLL: Temporary hack until I can figure out how to add an "ExportPCMCommand"
// to create a 32-bit float WAV file. It tells the ExportPCM exporter
// to use float when exporting the next WAV file.
//
// This was done as part of the resolution for bug #2062.
//
// See: ExportPCM.cpp, LoadEncoding()
auto cleanup = finally([&] {
gPrefs->DeleteEntry(wxT("/FileFormats/ExportFormat_SF1_ForceFloat"));
gPrefs->Flush();
});
gPrefs->Write(wxT("/FileFormats/ExportFormat_SF1_ForceFloat"), true);
gPrefs->Flush();
}
#else
extension = wxT("wav");
fileFormat = wxT("WAVFLT");
#endif
// Some of this is similar to code in ExportMultipleDialog::ExportMultipleByTrack
// but that code is really tied into the dialogs.

View File

@ -62,8 +62,6 @@ static const kFormats[] =
{SF_FORMAT_AIFF | SF_FORMAT_PCM_16, wxT("AIFF"), XO("AIFF (Apple/SGI)")},
#endif
{SF_FORMAT_WAV | SF_FORMAT_PCM_16, wxT("WAV"), XO("WAV (Microsoft)")},
{SF_FORMAT_WAV | SF_FORMAT_PCM_24, wxT("WAV24"), XO("WAV (Microsoft) signed 24-bit PCM")},
{SF_FORMAT_WAV | SF_FORMAT_FLOAT, wxT("WAVFLT"), XO("WAV (Microsoft) 32-bit float PCM")},
};
enum
@ -72,8 +70,6 @@ enum
FMT_AIFF,
#endif
FMT_WAV,
FMT_WAV24,
FMT_WAVFLT,
FMT_OTHER
};
@ -83,18 +79,33 @@ enum
static int LoadOtherFormat(int def = 0)
{
return gPrefs->Read(wxString::Format(wxT("/FileFormats/ExportFormat_SF1")),
return gPrefs->Read(wxT("/FileFormats/ExportFormat_SF1"),
kFormats[0].format & SF_FORMAT_TYPEMASK);
}
static void SaveOtherFormat(int val)
{
gPrefs->Write(wxString::Format(wxT("/FileFormats/ExportFormat_SF1")), val);
gPrefs->Write(wxT("/FileFormats/ExportFormat_SF1"), val);
gPrefs->Flush();
}
static int LoadEncoding(int type)
{
// LLL: Temporary hack until I can figure out how to add an "ExportPCMCommand"
// to create a 32-bit float WAV file. It tells the ExportPCM exporter
// to use float when exporting the next WAV file.
//
// This was done as part of the resolution for bug #2062.
//
// See: ProjectFileManager.cpp, ProjectFileManager::SaveCopyWaveTracks()
if (gPrefs->HasEntry(wxT("/FileFormats/ExportFormat_SF1_ForceFloat")))
{
gPrefs->DeleteEntry(wxT("/FileFormats/ExportFormat_SF1_ForceFloat"));
gPrefs->Flush();
return SF_FORMAT_FLOAT;
}
return gPrefs->Read(wxString::Format(wxT("/FileFormats/ExportFormat_SF1_Type/%s_%x"),
sf_header_shortname(type), type), (long int) 0);
}
@ -492,11 +503,6 @@ ProgressResult ExportPCM::Export(AudacityProject *project,
sf_format = SF_FORMAT_WAV;
break;
case FMT_WAV24:
case FMT_WAVFLT:
sf_format = kFormats[subformat].format;
break;
default:
// Retrieve the current format.
sf_format = LoadOtherFormat();