X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fsndfile_helpers.cc;h=cab34349f15e885c432f050f5e343c6cd127e5e7;hb=6be56d78b199452e5dba726f2d7aaab2777d2b49;hp=9e439ba4c6902690e784a1c93d2e5ef4338a0843;hpb=87726495c30f90554b5204b5385d17274a8fe93e;p=ardour.git diff --git a/libs/ardour/sndfile_helpers.cc b/libs/ardour/sndfile_helpers.cc index 9e439ba4c6..cab34349f1 100644 --- a/libs/ardour/sndfile_helpers.cc +++ b/libs/ardour/sndfile_helpers.cc @@ -1,5 +1,5 @@ /* - Copyright (C) 2000-2007 Paul Davis + Copyright (C) 2000-2007 Paul Davis This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,13 +17,14 @@ */ +#include #include #include -#include +#include "pbd/convert.h" #include -#include +#include "ardour/sndfile_helpers.h" #include "i18n.h" @@ -33,41 +34,41 @@ using namespace std; const char * const sndfile_header_formats_strings[SNDFILE_HEADER_FORMATS+1] = { N_("WAV"), N_("AIFF"), - N_("raw (no header)"), - N_("PAF (Ensoniq Paris)"), - N_("AU (Sun/NeXT)"), - N_("IRCAM"), + N_("CAF"), N_("W64 (64 bit WAV)"), + N_("FLAC"), + N_("Ogg/Vorbis"), + N_("raw (no header)"), 0 }; const char* const sndfile_file_endings_strings[SNDFILE_HEADER_FORMATS+1] = { N_(".wav"), N_(".aiff"), - N_(".raw"), - N_(".paf"), - N_(".au"), - N_(".ircam"), + N_(".caf"), N_(".w64"), + N_(".flac"), + N_(".ogg"), + N_(".raw"), 0 }; int sndfile_header_formats[SNDFILE_HEADER_FORMATS] = { SF_FORMAT_WAV, SF_FORMAT_AIFF, - SF_FORMAT_RAW, - SF_FORMAT_PAF, - SF_FORMAT_AU, - SF_FORMAT_IRCAM, - SF_FORMAT_W64 + SF_FORMAT_CAF, + SF_FORMAT_W64, + SF_FORMAT_FLAC, + SF_FORMAT_OGG, + SF_FORMAT_RAW }; const char * const sndfile_bitdepth_formats_strings[SNDFILE_BITDEPTH_FORMATS+1] = { - N_("16 bit"), - N_("24 bit"), - N_("32 bit"), - N_("8 bit"), - N_("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 +82,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 }; @@ -163,7 +164,7 @@ sndfile_data_width (int format) } } -string +string sndfile_major_format(int format) { static map m; @@ -174,12 +175,22 @@ sndfile_major_format(int format) sf_command(0, SFC_GET_FORMAT_MAJOR_COUNT, &count, sizeof (int)); for (int i = 0; i < count; ++i){ format_info.format = i; - sf_command (0, SFC_GET_FORMAT_MAJOR, + 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; + } } } - + map::iterator p = m.find(format & SF_FORMAT_TYPEMASK); if(p != m.end()){ return m[format & SF_FORMAT_TYPEMASK]; @@ -199,12 +210,12 @@ sndfile_minor_format(int format) sf_command(0, SFC_GET_FORMAT_SUBTYPE_COUNT, &count, sizeof (int)); for (int i = 0; i < count; ++i){ format_info.format = i; - sf_command (0, SFC_GET_FORMAT_SUBTYPE, + sf_command (0, SFC_GET_FORMAT_SUBTYPE, &format_info, sizeof (format_info)); m[format_info.format & SF_FORMAT_SUBMASK] = format_info.name; } } - + map::iterator p = m.find(format & SF_FORMAT_SUBMASK); if(p != m.end()){ return m[format & SF_FORMAT_SUBMASK];