LV2 support.
[ardour.git] / libs / ardour / sndfile_helpers.cc
index 2fd9e63ce2fc9efdc55d2b53af6e8525b18da3ae..22a1b3555e088f179d897bbcc011f8c1a3d70422 100644 (file)
@@ -1,32 +1,59 @@
+/*
+    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
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program; if not, write to the Free Software
+    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+*/
+
 #include <map>
+#include <vector>
 
-#include <sndfile.h>
+#include <pbd/convert.h>
 
+#include <sndfile.h>
 #include <ardour/sndfile_helpers.h>
 
 #include "i18n.h"
 
 using std::map;
+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_("raw (no header)"),
+       0
+};
+
+const char* const sndfile_file_endings_strings[SNDFILE_HEADER_FORMATS+1] = {
+       N_(".wav"),
+       N_(".aiff"),
+       N_(".caf"),
+       N_(".w64"),
+       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_RAW
 };
 
 const char * const sndfile_bitdepth_formats_strings[SNDFILE_BITDEPTH_FORMATS+1] = {
@@ -90,6 +117,23 @@ sndfile_endian_format_from_string (string str)
        return -1;
 }
 
+string
+sndfile_file_ending_from_string (string str)
+{
+       static vector<string> 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)
 {
@@ -162,3 +206,4 @@ sndfile_minor_format(int format)
                return "-Unknown-";
        }
 }
+