LMMS
Loading...
Searching...
No Matches
AudioFileDevice.h
Go to the documentation of this file.
1/*
2 * AudioFileDevice.h - base-class for audio-device-classes which write
3 * their output into a file
4 *
5 * Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
6 *
7 * This file is part of LMMS - https://lmms.io
8 *
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public
11 * License as published by the Free Software Foundation; either
12 * version 2 of the License, or (at your option) any later version.
13 *
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 * General Public License for more details.
18 *
19 * You should have received a copy of the GNU General Public
20 * License along with this program (see COPYING); if not, write to the
21 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
22 * Boston, MA 02110-1301 USA.
23 *
24 */
25
26#ifndef LMMS_AUDIO_FILE_DEVICE_H
27#define LMMS_AUDIO_FILE_DEVICE_H
28
29#include <QFile>
30
31#include "AudioDevice.h"
32#include "OutputSettings.h"
33
34namespace lmms
35{
36
38{
39public:
40 AudioFileDevice(OutputSettings const & outputSettings,
41 const ch_cnt_t _channels, const QString & _file,
43 ~AudioFileDevice() override;
44
45 QString outputFile() const
46 {
47 return m_outputFile.fileName();
48 }
49
51
53 virtual void writeBuffer(const SampleFrame* buf, const f_cnt_t frames) = 0;
54
55protected:
56 int writeData( const void* data, int len );
57
58 inline bool outputFileOpened() const
59 {
60 return m_outputFile.isOpen();
61 }
62
63 inline int outputFileHandle() const
64 {
65 return m_outputFile.handle();
66 }
67
68private:
69 void startProcessingImpl() override {}
70 void stopProcessingImpl() override {}
71
74} ;
75
77 = AudioFileDevice* (*)(const QString&, const OutputSettings&, const ch_cnt_t, AudioEngine*, bool&);
78
79} // namespace lmms
80
81#endif // LMMS_AUDIO_FILE_DEVICE_H
AudioEngine * audioEngine()
Definition AudioDevice.h:84
AudioDevice(const ch_cnt_t _channels, AudioEngine *audioEngine)
Definition AudioDevice.cpp:33
Definition AudioEngine.h:66
Definition AudioFileDevice.h:38
QFile m_outputFile
Definition AudioFileDevice.h:72
void startProcessingImpl() override
Definition AudioFileDevice.h:69
virtual void writeBuffer(const SampleFrame *buf, const f_cnt_t frames)=0
Write size sample frames from buf into the output file.
AudioFileDevice(OutputSettings const &outputSettings, const ch_cnt_t _channels, const QString &_file, AudioEngine *audioEngine)
Definition AudioFileDevice.cpp:35
bool outputFileOpened() const
Definition AudioFileDevice.h:58
void stopProcessingImpl() override
Definition AudioFileDevice.h:70
int writeData(const void *data, int len)
Definition AudioFileDevice.cpp:84
~AudioFileDevice() override
Definition AudioFileDevice.cpp:76
OutputSettings m_outputSettings
Definition AudioFileDevice.h:73
QString outputFile() const
Definition AudioFileDevice.h:45
int outputFileHandle() const
Definition AudioFileDevice.h:63
OutputSettings const & getOutputSettings() const
Definition AudioFileDevice.h:50
Definition OutputSettings.h:36
Definition SampleFrame.h:41
JSAMPIMAGE data
Definition jpeglib.h:945
Definition AudioAlsa.cpp:35
std::uint16_t ch_cnt_t
Definition LmmsTypes.h:44
AudioFileDevice *(*)(const QString &, const OutputSettings &, const ch_cnt_t, AudioEngine *, bool &) AudioFileDeviceInstantiaton
Definition AudioFileDevice.h:76
std::uint64_t f_cnt_t
Definition LmmsTypes.h:43