#include "ardour/export_format_specification.h"
#include "ardour/export_utilities.h"
-using Glib::ustring;
-
namespace ARDOUR
{
public:
virtual ~ExportFileWriter () {}
- string filename () const { return _filename; }
+ std::string filename () const { return _filename; }
nframes_t position () const { return _position; }
-
+
void set_position (nframes_t position) { _position = position; }
-
+
protected:
- ExportFileWriter (string filename) : _filename (filename) {}
+ ExportFileWriter (std::string filename) : _filename (filename) {}
- string _filename;
+ std::string _filename;
nframes_t _position;
};
SNDFILE * get_sndfile () const { return sndfile; }
protected:
- SndfileWriterBase (int channels, nframes_t samplerate, int format, string const & path);
+ SndfileWriterBase (int channels, nframes_t samplerate, int format, std::string const & path);
virtual ~SndfileWriterBase ();
SF_INFO sf_info;
// Should only be created vie ExportFileFactory and derived classes
public: // protected
friend class ExportFileFactory;
- SndfileWriter (int channels, nframes_t samplerate, int format, string const & path);
+ SndfileWriter (int channels, nframes_t samplerate, int format, std::string const & path);
public:
nframes_t write (T * data, nframes_t frames);
public:
ExportTempFile (uint32_t channels, nframes_t samplerate);
~ExportTempFile () {}
-
+
/// Causes the file to be read from the beginning again
void reset_read () { reading = false; }
nframes_t read (float * data, nframes_t frames);
-
+
/* Silence management */
-
+
nframes_t trim_beginning (bool yn = true);
nframes_t trim_end (bool yn = true);
-
+
void set_silence_beginning (nframes_t frames);
void set_silence_end (nframes_t frames);
private:
/* File access */
-
+
sf_count_t get_length ();
sf_count_t get_position ();
sf_count_t get_read_position (); // get position seems to default to the write pointer
sf_count_t locate_to (nframes_t frames);
sf_count_t _read (float * data, nframes_t frames);
-
+
uint32_t channels;
bool reading;
-
+
/* Silence related */
-
+
/* start and end are used by read() */
-
+
nframes_t start;
nframes_t end;
-
+
/* these are the silence processing results and state */
-
+
void process_beginning ();
void process_end ();
-
+
bool beginning_processed;
bool end_processed;
-
+
nframes_t silent_frames_beginning;
nframes_t silent_frames_end;
-
+
/* Silence to add to start and end */
-
+
nframes_t silence_beginning;
nframes_t silence_end;
-
+
/* Takes care that the end postion gets set at some stage */
-
+
bool end_set;
-
+
};
class ExportFileFactory
typedef GraphSink<float> FloatSink;
typedef boost::shared_ptr<FloatSink> FloatSinkPtr;
typedef boost::shared_ptr<ExportFileWriter> FileWriterPtr;
-
+
typedef std::pair<FloatSinkPtr, FileWriterPtr> FilePair;
- static FilePair create (FormatPtr format, uint32_t channels, ustring const & filename);
+ static FilePair create (FormatPtr format, uint32_t channels, Glib::ustring const & filename);
static bool check (FormatPtr format, uint32_t channels);
private:
- static FilePair create_sndfile (FormatPtr format, unsigned int channels, ustring const & filename);
+ static FilePair create_sndfile (FormatPtr format, unsigned int channels, Glib::ustring const & filename);
static bool check_sndfile (FormatPtr format, unsigned int channels);
};