fix (no)use of offset in AudioEngine::get_sync_offset()
[ardour.git] / libs / ardour / sndfile_helpers.cc
index d9e7aa563a6d23930e638fb4de3a0279a256190f..08e1117fbb80e367ca4318a0a93ef74696cb548e 100644 (file)
@@ -1,38 +1,67 @@
+/*
+    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 "pbd/convert.h"
 
-#include <ardour/sndfile_helpers.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] = {
-       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
 };
 
@@ -88,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)
 {
@@ -160,3 +206,4 @@ sndfile_minor_format(int format)
                return "-Unknown-";
        }
 }
+