Merge remote-tracking branch 'remotes/origin/exportvis' into windows+cc
[ardour.git] / libs / ardour / ardour / silentfilesource.h
index 92ef076a9ba62d6005bb710de53b82b7f67000eb..cf6462247ae05ca1d07d8a7894e53bfddaf23fab 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2007 Paul Davis 
+    Copyright (C) 2007 Paul Davis
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 
 */
 
-#ifndef __ardour_silentfilesource_h__ 
+#ifndef __ardour_silentfilesource_h__
 #define __ardour_silentfilesource_h__
 
-#include <ardour/audiofilesource.h>
+#include <cstring>
+#include "ardour/audiofilesource.h"
 
 namespace ARDOUR {
 
-class SilentFileSource : public AudioFileSource {
-  public:
-       virtual ~SilentFileSource ();
-
-       int update_header (nframes_t when, struct tm&, time_t) { return 0; }
+class LIBARDOUR_API SilentFileSource : public AudioFileSource {
+public:
+       int update_header (framepos_t /*when*/, struct tm&, time_t) { return 0; }
        int flush_header () { return 0; }
        float sample_rate () const { return _sample_rate; }
 
-       void set_length (nframes_t len);
-       
-       int read_peaks (PeakData *peaks, nframes_t npeaks, nframes_t start, nframes_t cnt, double samples_per_unit) const {
-               memset (peaks, 0, sizeof (PeakData) * npeaks);
-               return 0;
-       }
+       void set_length (framecnt_t len) { _length = len; }
+       void flush () {}
 
        bool destructive() const { return false; }
+       bool can_be_analysed() const { return false; }
 
-  protected:
-
-       float         _sample_rate;
-
-       SilentFileSource (Session&, const XMLNode&, nframes_t nframes, float sample_rate);
+       bool clamped_at_unity() const { return false; }
 
+protected:
        friend class SourceFactory;
 
-       nframes_t read_unlocked (Sample *dst, nframes_t start, nframes_t cnt) const {
+       SilentFileSource (Session& s, const XMLNode& x, framecnt_t len, float srate)
+               : Source (s, x)
+               , AudioFileSource (s, x, false)
+               , _sample_rate(srate)
+       {
+               _length = len;
+       }
+
+       framecnt_t read_unlocked (Sample *dst, framepos_t /*start*/, framecnt_t cnt) const {
                memset (dst, 0, sizeof (Sample) * cnt);
                return cnt;
        }
 
-       nframes_t write_unlocked (Sample *dst, nframes_t cnt) { return 0; }
+       framecnt_t write_unlocked (Sample */*dst*/, framecnt_t /*cnt*/) { return 0; }
 
        void set_header_timeline_position () {}
 
+       int read_peaks_with_fpp (PeakData *peaks, framecnt_t npeaks, framepos_t /*start*/, framecnt_t /*cnt*/,
+                                double /*frames_per_pixel*/, framecnt_t /*fpp*/) const {
+               memset (peaks, 0, sizeof (PeakData) * npeaks);
+               return 0;
+       }
+
+       float _sample_rate;
 };
 
 } // namespace ARDOUR