LMMS
Loading...
Searching...
No Matches
AudioFileFlac.h
Go to the documentation of this file.
1/*
2 * AudioFileFlac.h - Audio device which encodes a wave stream into a FLAC file.
3 *
4 * Copyright (c) 2017 to present Levin Oehlmann <irrenhaus3/at/gmail[dot]com> et al.
5 *
6 * This file is part of LMMS - https://lmms.io
7 *
8 * This program is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU General Public
10 * License as published by the Free Software Foundation; either
11 * version 2 of the License, or (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public
19 * License along with this program (see COPYING); if not, write to the
20 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
21 * Boston, MA 02110-1301 USA.
22 *
23 */
24
25#ifndef LMMS_AUDIO_FILE_FLAC_H
26#define LMMS_AUDIO_FILE_FLAC_H
27
28#include "lmmsconfig.h"
29
30#include "AudioFileDevice.h"
31#include <sndfile.h>
32
33namespace lmms
34{
35
37{
38public:
39 AudioFileFlac(OutputSettings const& outputSettings,
40 ch_cnt_t const channels,
41 bool& successful,
42 QString const& file,
44 );
45
46 ~AudioFileFlac() override;
47
48 static AudioFileDevice* getInst(QString const& outputFilename,
49 OutputSettings const& outputSettings,
50 ch_cnt_t const channels,
52 bool& successful)
53 {
54 return new AudioFileFlac(
55 outputSettings,
57 successful,
58 outputFilename,
60 );
61 }
62
63private:
64
65 SF_INFO m_sfinfo;
66 SNDFILE* m_sf;
67
68 void writeBuffer(const SampleFrame* _ab, f_cnt_t const frames) override;
69
70 bool startEncoding();
71 void finishEncoding();
72
73};
74
75
76} // namespace lmms
77
78#endif // LMMS_AUDIO_FILE_FLAC_H
AudioEngine * audioEngine()
Definition AudioDevice.h:121
ch_cnt_t channels() const
Definition AudioDevice.h:106
Definition AudioEngine.h:66
AudioFileDevice(OutputSettings const &outputSettings, const ch_cnt_t _channels, const QString &_file, AudioEngine *audioEngine)
Definition AudioFileDevice.cpp:35
static AudioFileDevice * getInst(QString const &outputFilename, OutputSettings const &outputSettings, ch_cnt_t const channels, AudioEngine *audioEngine, bool &successful)
Definition AudioFileFlac.h:48
void writeBuffer(const SampleFrame *_ab, f_cnt_t const frames) override
Definition AudioFileFlac.cpp:90
bool startEncoding()
Definition AudioFileFlac.cpp:47
AudioFileFlac(OutputSettings const &outputSettings, ch_cnt_t const channels, bool &successful, QString const &file, AudioEngine *audioEngine)
Definition AudioFileFlac.cpp:35
~AudioFileFlac() override
Definition AudioFileFlac.cpp:42
SNDFILE * m_sf
Definition AudioFileFlac.h:66
SF_INFO m_sfinfo
Definition AudioFileFlac.h:65
void finishEncoding()
Definition AudioFileFlac.cpp:120
Definition OutputSettings.h:36
Definition SampleFrame.h:41
Definition AudioAlsa.cpp:35
std::uint16_t ch_cnt_t
Definition LmmsTypes.h:44
std::uint64_t f_cnt_t
Definition LmmsTypes.h:43
struct zdirent * file
Definition win32.c:1500