namespace ARDOUR {
-struct SoundFileInfo {
- float samplerate;
- uint16_t channels;
- int64_t length;
- std::string format_name;
- int64_t timecode;
+struct LIBARDOUR_API SoundFileInfo {
+ float samplerate;
+ uint16_t channels;
+ int64_t length;
+ std::string format_name;
+ int64_t timecode;
};
-class AudioFileSource : public AudioSource, public FileSource {
+class LIBARDOUR_API AudioFileSource : public AudioSource, public FileSource {
public:
virtual ~AudioFileSource ();
- bool set_name (const std::string& newname) {
- return (set_source_name(newname, destructive()) == 0);
- }
-
- std::string peak_path (std::string audio_path);
- std::string find_broken_peakfile (std::string missing_peak_path,
- std::string audio_path);
+ std::string peak_path (std::string audio_path);
+ std::string find_broken_peakfile (std::string missing_peak_path,
+ std::string audio_path);
static void set_peak_dir (std::string dir) { peak_dir = dir; }
virtual void clear_capture_marks() {}
virtual bool one_of_several_channels () const { return false; }
+ virtual void flush () = 0;
virtual int update_header (framepos_t when, struct tm&, time_t) = 0;
virtual int flush_header () = 0;
/** Constructor to be called for existing in-session files */
AudioFileSource (Session&, const XMLNode&, bool must_exist = true);
+ /** Constructor to be called for crash recovery. Final argument is not
+ * used but exists to differentiate from the external-to-session
+ * constructor above.
+ */
+ AudioFileSource (Session&, const std::string& path, Source::Flag flags, bool);
+
int init (const std::string& idstr, bool must_exist);
virtual void set_header_timeline_position () = 0;
static char bwf_organization_code[4];
static char bwf_serial_number[13];
- static uint64_t header_position_offset;
+ /** Kept up to date with the position of the session location start */
+ static framecnt_t header_position_offset;
private:
std::string old_peak_path (std::string audio_path);