Write ID3 tags in MP3 files via libid3
[skype-call-recorder.git] / writer.h
blobd4ff44f83704b4c9b9e605fed6c57cd5801e7ed2
1 /*
2 Skype Call Recorder
3 Copyright (C) 2008 jlh (jlh at gmx dot ch)
5 This program is free software; you can redistribute it and/or modify it
6 under the terms of the GNU General Public License as published by the
7 Free Software Foundation; either version 2 of the License, version 3 of
8 the License, or (at your option) any later version.
10 This program is distributed in the hope that it will be useful, but
11 WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 General Public License for more details.
15 You should have received a copy of the GNU General Public License along
16 with this program; if not, write to the Free Software Foundation, Inc.,
17 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
19 The GNU General Public License version 2 is included with the source of
20 this program under the file name COPYING. You can also get a copy on
21 http://www.fsf.org/
24 #ifndef WRITER_H
25 #define WRITER_H
27 #include <QFile>
28 #include <QDateTime>
29 #include <ctime>
31 class QString;
32 class QByteArray;
34 class AudioFileWriter {
35 public:
36 AudioFileWriter() : sampleRate(0), stereo(false), samplesWritten(0), mustWriteTags(true) { };
37 virtual ~AudioFileWriter() { };
39 // tags should be set before open() if possible, but can also be set
40 // and re-set later, but not after close(). tags will be written to
41 // disk at arbitrary times, but close() guarantees they are written.
42 // however, if a writer doesn't support tags at all, they are silently
43 // ignored.
44 virtual void setTags(const QString &, const QDateTime &);
46 // Note: you're not supposed to reopen after a close
47 virtual bool open(const QString &, long, bool);
48 virtual void close();
49 virtual bool write(QByteArray &, QByteArray &, int, bool = false) = 0;
50 QString fileName() const { return file.fileName(); }
52 protected:
53 QFile file;
54 long sampleRate;
55 bool stereo;
56 qint64 samplesWritten;
57 QString tagComment;
58 QDateTime tagTime;
59 bool mustWriteTags;
61 private:
62 // disabled
63 AudioFileWriter(const AudioFileWriter &);
64 AudioFileWriter &operator=(const AudioFileWriter &);
67 #endif