From 2991afaf0da78f860854f59a7d6c4e64fb519d23 Mon Sep 17 00:00:00 2001 From: Robin Gareus Date: Wed, 7 Nov 2018 19:21:39 +0100 Subject: Add support for recording to .flac --- libs/ardour/sndfilesource.cc | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'libs/ardour/sndfilesource.cc') diff --git a/libs/ardour/sndfilesource.cc b/libs/ardour/sndfilesource.cc index df228cb69e..ac10f94ae1 100644 --- a/libs/ardour/sndfilesource.cc +++ b/libs/ardour/sndfilesource.cc @@ -133,6 +133,15 @@ SndFileSource::SndFileSource (Session& s, const string& path, const string& orig _flags = Flag (_flags & ~Broadcast); break; + case FLAC: + fmt = SF_FORMAT_FLAC; + if (sfmt == FormatFloat) { + sfmt = FormatInt24; + } + _flags = Flag (_flags & ~Broadcast); + _flags = Flag (_flags & ~Destructive); // XXX or force WAV if destructive? + break; + case AIFF: fmt = SF_FORMAT_AIFF; _flags = Flag (_flags & ~Broadcast); @@ -384,8 +393,8 @@ SndFileSource::open () } if ((_info.format & SF_FORMAT_TYPEMASK ) == SF_FORMAT_FLAC) { - assert (!writable()); - _sndfile = sf_open_fd (fd, SFM_READ, &_info, true); + assert (!destructive()); + _sndfile = sf_open_fd (fd, writable () ? SFM_WRITE : SFM_READ, &_info, true); } else { _sndfile = sf_open_fd (fd, writable() ? SFM_RDWR : SFM_READ, &_info, true); } -- cgit v1.2.3