Support thread-safe LV2 state restoration
[ardour.git] / libs / ardour / ardour / sndfilesource.h
index 99fb9f4d09bcf866b50c34af347f145d77f1d0a2..4579a32b6df9c6bfe19ec2591c708a1807702687 100644 (file)
@@ -24,7 +24,6 @@
 
 #include "ardour/audiofilesource.h"
 #include "ardour/broadcast_info.h"
-#include "pbd/sndfile_manager.h"
 
 namespace ARDOUR {
 
@@ -46,7 +45,7 @@ class LIBARDOUR_API SndFileSource : public AudioFileSource {
        SndFileSource (Session&, const std::string& path, int chn);
 
        /** Constructor to be called for existing in-session files during
-        * session loading 
+        * session loading
         */
        SndFileSource (Session&, const XMLNode&);
 
@@ -67,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;
 
@@ -75,9 +75,9 @@ class LIBARDOUR_API SndFileSource : public AudioFileSource {
 
        static int get_soundfile_info (const std::string& path, SoundFileInfo& _info, std::string& error_msg);
 
-       void release_descriptor ();
-
   protected:
+       void close ();
+
        void set_path (const std::string& p);
        void set_header_timeline_position ();
 
@@ -86,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;
 
@@ -105,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);
@@ -115,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