X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fsndfile_helpers.cc;h=1b69ca2d0ac9a1f7de5c1a222deb93d599aac622;hb=4bdbe77414b956e27f2c1631e67189c70409a3d1;hp=057efff48c4751bbc302942d93c166d37cbac831;hpb=bb9cc45cd22af67ac275a5e73accbe14fee664d8;p=ardour.git diff --git a/libs/ardour/sndfile_helpers.cc b/libs/ardour/sndfile_helpers.cc index 057efff48c..1b69ca2d0a 100644 --- a/libs/ardour/sndfile_helpers.cc +++ b/libs/ardour/sndfile_helpers.cc @@ -17,10 +17,10 @@ */ +#ifndef COMPILER_MSVC +#include +#endif #include -#include - -#include "pbd/convert.h" #include #include "ardour/sndfile_helpers.h" @@ -34,7 +34,7 @@ const char * const sndfile_header_formats_strings[SNDFILE_HEADER_FORMATS+1] = { N_("WAV"), N_("AIFF"), N_("CAF"), - N_("W64 (64 bit WAV)"), + N_("W64 (64-bit WAV)"), N_("FLAC"), N_("Ogg/Vorbis"), N_("raw (no header)"), @@ -63,11 +63,11 @@ int sndfile_header_formats[SNDFILE_HEADER_FORMATS] = { }; const char * const sndfile_bitdepth_formats_strings[SNDFILE_BITDEPTH_FORMATS+1] = { - N_("Signed 16 bit PCM"), - N_("Signed 24 bit PCM"), - N_("Signed 32 bit PCM"), - N_("Signed 8 bit PCM"), - N_("32 bit float"), + N_("Signed 16-bit PCM"), + N_("Signed 24-bit PCM"), + N_("Signed 32-bit PCM"), + N_("Signed 8-bit PCM"), + N_("32-bit float"), 0 }; @@ -81,7 +81,7 @@ int sndfile_bitdepth_formats[SNDFILE_BITDEPTH_FORMATS] = { const char * const sndfile_endian_formats_strings[SNDFILE_ENDIAN_FORMATS+1] = { N_("Little-endian (Intel)"), - N_("Big-endian (Mac)"), + N_("Big-endian (PowerPC)"), 0 }; @@ -91,74 +91,51 @@ 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) { int tval = format & 0xf; switch (tval) { - case SF_FORMAT_PCM_S8: - case SF_FORMAT_PCM_U8: + case SF_FORMAT_PCM_S8: + case SF_FORMAT_PCM_U8: return 8; - case SF_FORMAT_PCM_16: + case SF_FORMAT_PCM_16: return 16; - case SF_FORMAT_PCM_24: + case SF_FORMAT_PCM_24: return 24; - case SF_FORMAT_PCM_32: + case SF_FORMAT_PCM_32: return 32; - case SF_FORMAT_FLOAT: - return 1; // heh, heh - default: - // we don't handle anything else within ardour + case SF_FORMAT_FLOAT: + return 1; /* ridiculous but used as a magic value */ + default: + // we don't handle anything else within ardour return 0; } } @@ -177,6 +154,16 @@ sndfile_major_format(int format) sf_command (0, SFC_GET_FORMAT_MAJOR, &format_info, sizeof (format_info)); m[format_info.format & SF_FORMAT_TYPEMASK] = format_info.name; + + /* normalize a couple of names rather than use what libsndfile gives us */ + + if (strncasecmp (format_info.name, "OGG", 3) == 0) { + m[format_info.format & SF_FORMAT_TYPEMASK] = "Ogg"; + } else if (strncasecmp (format_info.name, "WAV", 3) == 0) { + m[format_info.format & SF_FORMAT_TYPEMASK] = "WAV"; + } else { + m[format_info.format & SF_FORMAT_TYPEMASK] = format_info.name; + } } }