LMMS
Loading...
Searching...
No Matches
AudioDummy.h
Go to the documentation of this file.
1/*
2 * AudioDummy.h - dummy audio-device
3 *
4 * Copyright (c) 2004-2014 Tobias Doerffel <tobydox/at/users.sourceforge.net>
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_DUMMY_H
26#define LMMS_AUDIO_DUMMY_H
27
28#include "AudioDevice.h"
30#include "AudioEngine.h"
31#include "MicroTimer.h"
32
33namespace lmms
34{
35
36class AudioDummy : public QThread, public AudioDevice
37{
38 Q_OBJECT
39public:
40 AudioDummy( bool & _success_ful, AudioEngine* audioEngine ) :
42 {
43 _success_ful = true;
44 }
45
46 ~AudioDummy() override
47 {
49 }
50
51 inline static QString name()
52 {
53 return QT_TRANSLATE_NOOP( "AudioDeviceSetupWidget", "Dummy (no sound output)" );
54 }
55
56
58 {
59 public:
60 setupWidget( QWidget * _parent ) :
62 {
63 }
64
65 ~setupWidget() override = default;
66
67 void saveSettings() override
68 {
69 }
70
71 void show() override
72 {
73 parentWidget()->hide();
74 QWidget::show();
75 }
76
77 } ;
78
79
80private:
81 void startProcessing() override
82 {
83 start();
84 }
85
86 void stopProcessing() override
87 {
89 }
90
91 void run() override
92 {
93 MicroTimer timer;
94 while( true )
95 {
96 timer.reset();
97 const SampleFrame* b = audioEngine()->nextBuffer();
98 if( !b )
99 {
100 break;
101 }
102 if( audioEngine()->hasFifoWriter() )
103 {
104 delete[] b;
105 }
106
107 const int microseconds = static_cast<int>( audioEngine()->framesPerPeriod() * 1000000.0f / audioEngine()->outputSampleRate() - timer.elapsed() );
108 if( microseconds > 0 )
109 {
110 usleep( microseconds );
111 }
112 }
113 }
114
115} ;
116
117} // namespace lmms
118
119#endif // LMMS_AUDIO_DUMMY_H
AudioEngine * audioEngine()
Definition AudioDevice.h:121
AudioDevice(const ch_cnt_t _channels, AudioEngine *audioEngine)
Definition AudioDevice.cpp:33
static void stopProcessingThread(QThread *thread)
Definition AudioDevice.cpp:95
setupWidget(QWidget *_parent)
Definition AudioDummy.h:60
void show() override
Definition AudioDummy.h:71
~setupWidget() override=default
void saveSettings() override
Definition AudioDummy.h:67
~AudioDummy() override
Definition AudioDummy.h:46
void run() override
Definition AudioDummy.h:91
AudioDummy(bool &_success_ful, AudioEngine *audioEngine)
Definition AudioDummy.h:40
void stopProcessing() override
Definition AudioDummy.h:86
void startProcessing() override
Definition AudioDummy.h:81
static QString name()
Definition AudioDummy.h:51
Definition AudioEngine.h:66
f_cnt_t framesPerPeriod() const
Definition AudioEngine.h:176
const SampleFrame * nextBuffer()
Definition AudioEngine.h:256
sample_rate_t outputSampleRate() const
Definition AudioEngine.h:200
Definition MicroTimer.h:34
int elapsed() const
Definition MicroTimer.cpp:22
void reset()
Definition MicroTimer.cpp:17
Definition SampleFrame.h:41
Definition AudioDeviceSetupWidget.h:35
AudioDeviceSetupWidget(const QString &_caption, QWidget *_parent)
Definition AudioDeviceSetupWidget.cpp:30
virtual ASIOError start()=0
Definition AudioPortAudio.cpp:223
Definition AudioAlsa.cpp:35
constexpr auto DEFAULT_CHANNELS
Definition lmms_constants.h:38
b
Definition crypt.c:628