diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-09-08 17:39:41 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-09-08 17:40:28 -0400 |
commit | bbfb53e88145e2a364ef29597b9b9c703853296f (patch) | |
tree | 81f25193877f68e534faeb2ba7faf67b72c08fbe /libs/ardour/sndfilesource.cc | |
parent | f1c0f587ca24438b1834fcb7d14c751aaf49cf48 (diff) |
RF64, RF64 (WAV) and MBWF native file header formats
Diffstat (limited to 'libs/ardour/sndfilesource.cc')
-rw-r--r-- | libs/ardour/sndfilesource.cc | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/libs/ardour/sndfilesource.cc b/libs/ardour/sndfilesource.cc index 8df88a2732..54854b61ff 100644 --- a/libs/ardour/sndfilesource.cc +++ b/libs/ardour/sndfilesource.cc @@ -152,6 +152,23 @@ SndFileSource::SndFileSource (Session& s, const string& path, const string& orig _flags = Flag (_flags & ~Broadcast); break; + case RF64_WAV: + fmt = SF_FORMAT_RF64; + _flags = Flag (_flags & ~Broadcast); + _flags = Flag (_flags | RF64_RIFF); + break; + + case MBWF: + fmt = SF_FORMAT_RF64; + _flags = Flag (_flags | Broadcast); + _flags = Flag (_flags | RF64_RIFF); + break; + + case RF64: + fmt = SF_FORMAT_RF64; + _flags = Flag (_flags & ~Broadcast); + break; + default: fatal << string_compose (_("programming error: %1"), X_("unsupported audio header format requested")) << endmsg; abort(); /*NOTREACHED*/ @@ -296,6 +313,19 @@ SndFileSource::open () _length = _info.frames; +#ifdef HAVE_RF64_RIFF + if (_file_is_new && _length == 0 && writable()) { + if (_flags & RF64_RIFF) { + if (sf_command (_sndfile, SFC_AUTO_DOWNGRADE_RF64, 0, 0) != SF_TRUE) { + char errbuf[256]; + sf_error_str (_sndfile, errbuf, sizeof (errbuf) - 1); + error << string_compose (_("Cannot mark RF64 audio file for automatic downgrade to WAV: %1"), errbuf) + << endmsg; + } + } + } +#endif + if (!_broadcast_info) { _broadcast_info = new BroadcastInfo; } |