*/
+#include <strings.h>
#include <map>
#include <vector>
format_info.format = i;
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;
+ }
}
}
info.samplerate = sf_info.samplerate;
info.channels = sf_info.channels;
info.length = sf_info.frames;
- info.format_name = string_compose("%1\n%2",
- sndfile_major_format(sf_info.format),
- sndfile_minor_format(sf_info.format));
+
+ string major = sndfile_major_format(sf_info.format);
+ string minor = sndfile_minor_format(sf_info.format);
+
+ if (major.length() + minor.length() < 16) { /* arbitrary */
+ info.format_name = string_compose("%1/%2", major, minor);
+ } else {
+ info.format_name = string_compose("%1\n%2", major, minor);
+ }
memset (&binfo, 0, sizeof (binfo));
info.timecode = get_timecode_info (sf, &binfo, timecode_exists);