annotate data/fileio/WavFileWriter.h @ 299:576be0d0d218

* Merge transform directory from sv-match-alignment branch (the previous comment included notes for this stuff, but I missed it in the actual merge) * Fix crash when a transform fails to create an output model and the thread that created the transform then deletes its input model thinking it's no longer needed, even though the transform run thread is still using it -- fix is to wait() on the transform before returning the null output model
author Chris Cannam
date Fri, 28 Sep 2007 16:15:06 +0000
parents b0f4555b625e
children 920e3880f7b4
rev   line source
Chris@148 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@148 2
Chris@148 3 /*
Chris@148 4 Sonic Visualiser
Chris@148 5 An audio file viewer and annotation editor.
Chris@148 6 Centre for Digital Music, Queen Mary, University of London.
Chris@148 7 This file copyright 2006 Chris Cannam.
Chris@148 8
Chris@148 9 This program is free software; you can redistribute it and/or
Chris@148 10 modify it under the terms of the GNU General Public License as
Chris@148 11 published by the Free Software Foundation; either version 2 of the
Chris@148 12 License, or (at your option) any later version. See the file
Chris@148 13 COPYING included with this distribution for more information.
Chris@148 14 */
Chris@148 15
Chris@148 16 #ifndef _WAV_FILE_WRITER_H_
Chris@148 17 #define _WAV_FILE_WRITER_H_
Chris@148 18
Chris@148 19 #include <QString>
Chris@148 20
Chris@174 21 #include <sndfile.h>
Chris@174 22
Chris@148 23 class DenseTimeValueModel;
Chris@148 24 class MultiSelection;
Chris@148 25
Chris@148 26 class WavFileWriter
Chris@148 27 {
Chris@148 28 public:
Chris@174 29 WavFileWriter(QString path, size_t sampleRate, size_t channels);
Chris@148 30 virtual ~WavFileWriter();
Chris@148 31
Chris@148 32 bool isOK() const;
Chris@148 33
Chris@148 34 virtual QString getError() const;
Chris@148 35
Chris@175 36 QString getPath() const { return m_path; }
Chris@175 37
Chris@174 38 bool writeModel(DenseTimeValueModel *source,
Chris@174 39 MultiSelection *selection = 0);
Chris@174 40
Chris@174 41 bool writeSamples(float **samples, size_t count); // count per channel
Chris@174 42
Chris@174 43 bool close();
Chris@148 44
Chris@148 45 protected:
Chris@148 46 QString m_path;
Chris@148 47 size_t m_sampleRate;
Chris@174 48 size_t m_channels;
Chris@174 49 SNDFILE *m_file;
Chris@148 50 QString m_error;
Chris@148 51 };
Chris@148 52
Chris@148 53
Chris@148 54 #endif