From 66498207f1d54a0e58ddcc3eb1723b754866ad9b Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 12 Sep 2011 19:22:42 +0000 Subject: do not attempt to lookup sndfile constants/enums using a string, because this breaks when using anything but english; remove thinko-function sndfile_file_ending_by_string() because file endings like .wav .caf etc. are not subject to i18n git-svn-id: svn://localhost/ardour2/branches/2.0-ongoing@10070 d708f5d6-7413-0410-9779-e7cbd77b26cf --- gtk2_ardour/export_dialog.cc | 18 ++++++++-------- libs/ardour/ardour/sndfile_helpers.h | 7 +++--- libs/ardour/sndfile_helpers.cc | 41 ++++++++---------------------------- 3 files changed, 21 insertions(+), 45 deletions(-) diff --git a/gtk2_ardour/export_dialog.cc b/gtk2_ardour/export_dialog.cc index 50322e2d0c..b5adec4777 100644 --- a/gtk2_ardour/export_dialog.cc +++ b/gtk2_ardour/export_dialog.cc @@ -845,16 +845,16 @@ ExportDialog::export_cue_file (Locations::LocationList& locations, const string& For all other formats we just make up our own file type. MP3 is not supported at the moment. */ - int file_format = sndfile_header_format_from_string (header_format_combo.get_active_text ()); + int file_format = sndfile_header_format_by_index (header_format_combo.get_active_row_number ()); if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_WAV) { out << "WAVE"; } else if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_AIFF) { out << "AIFF"; } else if ( ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_RAW) - && (sndfile_bitdepth_format_from_string(bitdepth_format_combo.get_active_text()) == SF_FORMAT_PCM_16) + && (sndfile_bitdepth_format_by_index (bitdepth_format_combo.get_active_row_number()) == SF_FORMAT_PCM_16) && (sample_rate_combo.get_active_text() == _("44.1kHz")) ) { /* raw audio, 16 Bit, 44.1 kHz */ - if (sndfile_endian_format_from_string(endian_format_combo.get_active_text()) == SF_ENDIAN_LITTLE) { + if (sndfile_endian_format_by_index (endian_format_combo.get_active_row_number()) == SF_ENDIAN_LITTLE) { out << "BINARY"; } else { out << "MOTOROLA"; @@ -996,7 +996,7 @@ ExportDialog::get_suffixed_filepath () /* maybe add suffix */ - int file_format = sndfile_header_format_from_string (header_format_combo.get_active_text ()); + int file_format = sndfile_header_format_by_index (header_format_combo.get_active_row_number ()); if ((file_format & SF_FORMAT_TYPEMASK) == SF_FORMAT_WAV) { if (filepath.find (".wav") != filepath.length() - 4) { @@ -1177,7 +1177,7 @@ ExportDialog::start_export () void ExportDialog::header_chosen () { - int fmt = sndfile_header_format_from_string (header_format_combo.get_active_text ()); + int fmt = sndfile_header_format_by_index (header_format_combo.get_active_row_number ()); if ((fmt & SF_FORMAT_TYPEMASK) == SF_FORMAT_OGG) { endian_format_combo.set_sensitive (false); @@ -1202,7 +1202,7 @@ ExportDialog::header_chosen () void ExportDialog::bitdepth_chosen () { - int format = sndfile_bitdepth_format_from_string (bitdepth_format_combo.get_active_text ()); + int format = sndfile_bitdepth_format_by_index (bitdepth_format_combo.get_active_row_number ()); switch (format) { case SF_FORMAT_PCM_24: case SF_FORMAT_PCM_32: @@ -1391,7 +1391,7 @@ ExportDialog::initSpec(string &filepath) spec.format = 0; - spec.format |= sndfile_header_format_from_string (header_format_combo.get_active_text ()); + spec.format |= sndfile_header_format_by_index (header_format_combo.get_active_row_number ()); /* if they picked Ogg, give them Ogg/Vorbis */ @@ -1402,12 +1402,12 @@ ExportDialog::initSpec(string &filepath) if (!Profile->get_sae()) { if ((spec.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_OGG) { /* O/V has no concept of endianness */ - spec.format |= sndfile_endian_format_from_string (endian_format_combo.get_active_text ()); + spec.format |= sndfile_endian_format_by_index (endian_format_combo.get_active_row_number ()); } } if ((spec.format & SF_FORMAT_TYPEMASK) != SF_FORMAT_OGG) { - spec.format |= sndfile_bitdepth_format_from_string (bitdepth_format_combo.get_active_text ()); + spec.format |= sndfile_bitdepth_format_by_index (bitdepth_format_combo.get_active_row_number ()); } string sr_str = sample_rate_combo.get_active_text(); diff --git a/libs/ardour/ardour/sndfile_helpers.h b/libs/ardour/ardour/sndfile_helpers.h index 26a93ad124..d31e889cc6 100644 --- a/libs/ardour/ardour/sndfile_helpers.h +++ b/libs/ardour/ardour/sndfile_helpers.h @@ -44,10 +44,9 @@ extern const char * const sndfile_endian_formats_strings[SNDFILE_ENDIAN_FORMATS+ extern int sndfile_endian_formats[SNDFILE_ENDIAN_FORMATS]; -int sndfile_bitdepth_format_from_string(string); -int sndfile_header_format_from_string(string); -int sndfile_endian_format_from_string(string); -string sndfile_file_ending_from_string(string); +int sndfile_bitdepth_format_by_index(int); +int sndfile_header_format_by_index(int); +int sndfile_endian_format_by_index(int); int sndfile_data_width (int format); diff --git a/libs/ardour/sndfile_helpers.cc b/libs/ardour/sndfile_helpers.cc index 08181730fd..67a2be5a2c 100644 --- a/libs/ardour/sndfile_helpers.cc +++ b/libs/ardour/sndfile_helpers.cc @@ -92,55 +92,32 @@ int sndfile_endian_formats[SNDFILE_ENDIAN_FORMATS] = { }; int -sndfile_header_format_from_string (string str) +sndfile_header_format_by_index (int index) { - for (int n = 0; sndfile_header_formats_strings[n]; ++n) { - if (str == sndfile_header_formats_strings[n]) { - return sndfile_header_formats[n]; - } + if (index >= 0 && index < SNDFILE_HEADER_FORMATS) { + return sndfile_header_formats[index]; } return -1; } int -sndfile_bitdepth_format_from_string (string str) +sndfile_bitdepth_format_by_index (int index) { - for (int n = 0; sndfile_bitdepth_formats_strings[n]; ++n) { - if (str == sndfile_bitdepth_formats_strings[n]) { - return sndfile_bitdepth_formats[n]; - } + if (index >= 0 && index < SNDFILE_BITDEPTH_FORMATS) { + return sndfile_bitdepth_formats[index]; } return -1; } int -sndfile_endian_format_from_string (string str) +sndfile_endian_format_by_index (int index) { - for (int n = 0; sndfile_endian_formats_strings[n]; ++n) { - if (str == sndfile_endian_formats_strings[n]) { - return sndfile_endian_formats[n]; - } + if (index >= 0 && index < SNDFILE_ENDIAN_FORMATS) { + return sndfile_endian_formats[index]; } return -1; } -string -sndfile_file_ending_from_string (string str) -{ - static vector file_endings; - - if (file_endings.empty()) { - file_endings = I18N((const char **) sndfile_file_endings_strings); - } - - for (int n = 0; sndfile_header_formats_strings[n]; ++n) { - if (str == sndfile_header_formats_strings[n]) { - return file_endings[n]; - } - } - return 0; -} - int sndfile_data_width (int format) { -- cgit v1.2.3