X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fardour%2Fsndfile_helpers.cc;h=057efff48c4751bbc302942d93c166d37cbac831;hb=c35eae34c39c9962ac93110f67e9ea40f24834b6;hp=58a51f8bbe714e7a6b6d1c2841e671cdbe89b088;hpb=bb457bb960c5bd7ed538f9d31477293415739f68;p=ardour.git diff --git a/libs/ardour/sndfile_helpers.cc b/libs/ardour/sndfile_helpers.cc index 58a51f8bbe..057efff48c 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 @@ -20,10 +20,10 @@ #include #include -#include +#include "pbd/convert.h" #include -#include +#include "ardour/sndfile_helpers.h" #include "i18n.h" @@ -35,6 +35,8 @@ const char * const sndfile_header_formats_strings[SNDFILE_HEADER_FORMATS+1] = { N_("AIFF"), N_("CAF"), N_("W64 (64 bit WAV)"), + N_("FLAC"), + N_("Ogg/Vorbis"), N_("raw (no header)"), 0 }; @@ -44,6 +46,8 @@ const char* const sndfile_file_endings_strings[SNDFILE_HEADER_FORMATS+1] = { N_(".aiff"), N_(".caf"), N_(".w64"), + N_(".flac"), + N_(".ogg"), N_(".raw"), 0 }; @@ -53,6 +57,8 @@ int sndfile_header_formats[SNDFILE_HEADER_FORMATS] = { SF_FORMAT_AIFF, SF_FORMAT_CAF, SF_FORMAT_W64, + SF_FORMAT_FLAC, + SF_FORMAT_OGG, SF_FORMAT_RAW }; @@ -119,7 +125,7 @@ sndfile_endian_format_from_string (string str) string sndfile_file_ending_from_string (string str) -{ +{ static vector file_endings; if (file_endings.empty()) { @@ -157,7 +163,7 @@ sndfile_data_width (int format) } } -string +string sndfile_major_format(int format) { static map m; @@ -168,12 +174,12 @@ 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; } } - + map::iterator p = m.find(format & SF_FORMAT_TYPEMASK); if(p != m.end()){ return m[format & SF_FORMAT_TYPEMASK]; @@ -193,12 +199,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];