Exact beat - provide audio->music mapping for region split.
[ardour.git] / libs / ardour / ardour / sndfileimportable.h
index 95c6d80ebb7322cd194d60792f50a6067c783100..10c429c5459cdb25e8f2e3b8247813c04b65cf4c 100644 (file)
 
 #include <boost/shared_ptr.hpp>
 #include <sndfile.h>
-#include "pbd/failed_constructor.h"
+#include "ardour/libardour_visibility.h"
 #include "ardour/types.h"
 #include "ardour/importable_source.h"
 
 namespace ARDOUR {
 
-class SndFileImportableSource : public ImportableSource {
+class LIBARDOUR_API SndFileImportableSource : public ImportableSource {
     public:
        SndFileImportableSource (const std::string& path);
        virtual ~SndFileImportableSource();
 
-       nframes_t read (Sample* buffer, nframes_t nframes);
-       uint32_t  channels() const;
-       nframes_t length() const;
-       nframes_t samplerate() const;
-       void      seek (nframes_t pos);
-       nframes64_t natural_position() const;
+       framecnt_t read (Sample* buffer, framecnt_t nframes);
+       uint32_t   channels() const;
+       framecnt_t length() const;
+       framecnt_t samplerate() const;
+       void       seek (framepos_t pos);
+       framepos_t natural_position() const;
+       bool       clamped_at_unity () const;
 
    protected:
        SF_INFO sf_info;
        boost::shared_ptr<SNDFILE> in;
-       nframes_t timecode;
+
+       /* these are int64_t so as to be independent of whatever
+          types Ardour may use for framepos_t, framecnt_t etc.
+       */
+
+       int64_t timecode;
        int64_t get_timecode_info (SNDFILE*, SF_BROADCAST_INFO*, bool&);
 };