X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=libs%2Fardour%2Fardour%2Fsndfilesource.h;h=4579a32b6df9c6bfe19ec2591c708a1807702687;hb=8fce08610a55a9fb04afdfbefa69e9e4f18034cc;hp=25b8f003b25b8b3a3c6163ed7d5ee4382ac38d53;hpb=59076a7e4c66db12bbbfbf01f012ca2f6ba4bf56;p=ardour.git diff --git a/libs/ardour/ardour/sndfilesource.h b/libs/ardour/ardour/sndfilesource.h index 25b8f003b2..4579a32b6d 100644 --- a/libs/ardour/ardour/sndfilesource.h +++ b/libs/ardour/ardour/sndfilesource.h @@ -24,7 +24,6 @@ #include "ardour/audiofilesource.h" #include "ardour/broadcast_info.h" -#include "pbd/sndfile_manager.h" namespace ARDOUR { @@ -38,7 +37,16 @@ class LIBARDOUR_API SndFileSource : public AudioFileSource { SampleFormat samp_format, HeaderFormat hdr_format, framecnt_t rate, Flag flags = SndFileSource::default_writable_flags); - /** Constructor to be called for existing in-session files */ + /* Constructor to be called for recovering files being used for + * capture. They are in-session, they already exist, they should not + * be writable. They are an odd hybrid (from a constructor point of + * view) of the previous two constructors. + */ + SndFileSource (Session&, const std::string& path, int chn); + + /** Constructor to be called for existing in-session files during + * session loading + */ SndFileSource (Session&, const XMLNode&); ~SndFileSource (); @@ -58,6 +66,7 @@ class LIBARDOUR_API SndFileSource : public AudioFileSource { bool set_destructive (bool yn); bool one_of_several_channels () const; + uint32_t channel_count () const { return _info.channels; } bool clamped_at_unity () const; @@ -67,6 +76,8 @@ class LIBARDOUR_API SndFileSource : public AudioFileSource { static int get_soundfile_info (const std::string& path, SoundFileInfo& _info, std::string& error_msg); protected: + void close (); + void set_path (const std::string& p); void set_header_timeline_position (); @@ -75,7 +86,7 @@ class LIBARDOUR_API SndFileSource : public AudioFileSource { framecnt_t write_float (Sample* data, framepos_t pos, framecnt_t cnt); private: - PBD::SndFileDescriptor* _descriptor; + SNDFILE* _sndfile; SF_INFO _info; BroadcastInfo *_broadcast_info; @@ -94,8 +105,6 @@ class LIBARDOUR_API SndFileSource : public AudioFileSource { bool _capture_end; framepos_t capture_start_frame; framepos_t file_pos; // unit is frames - framecnt_t xfade_out_count; - framecnt_t xfade_in_count; Sample* xfade_buf; framecnt_t crossfade (Sample* data, framecnt_t cnt, int dir); @@ -104,7 +113,6 @@ class LIBARDOUR_API SndFileSource : public AudioFileSource { framecnt_t nondestructive_write_unlocked (Sample *dst, framecnt_t cnt); void handle_header_position_change (); PBD::ScopedConnection header_position_connection; - PBD::ScopedConnection file_manager_connection; }; } // namespace ARDOUR