1 /* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version 2
10 * of the License, or (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 *
21 */
22
23 #include "backends/mixer/null/null-mixer.h"
24 #include "common/savefile.h"
25
NullMixerManager()26 NullMixerManager::NullMixerManager() : MixerManager() {
27 _outputRate = 22050;
28 _callsCounter = 0;
29 _samples = 8192;
30 while (_samples * 16 > _outputRate * 2)
31 _samples >>= 1;
32 _samplesBuf = new uint8[_samples * 4];
33 }
34
~NullMixerManager()35 NullMixerManager::~NullMixerManager() {
36 delete[] _samplesBuf;
37 }
38
init()39 void NullMixerManager::init() {
40 _mixer = new Audio::MixerImpl(_outputRate);
41 assert(_mixer);
42 _mixer->setReady(true);
43 }
44
suspendAudio()45 void NullMixerManager::suspendAudio() {
46 _audioSuspended = true;
47 }
48
resumeAudio()49 int NullMixerManager::resumeAudio() {
50 if (!_audioSuspended) {
51 return -2;
52 }
53 _audioSuspended = false;
54 return 0;
55 }
56
update(uint8 callbackPeriod)57 void NullMixerManager::update(uint8 callbackPeriod) {
58 if (_audioSuspended) {
59 return;
60 }
61 _callsCounter++;
62 if ((_callsCounter % callbackPeriod) == 0) {
63 assert(_mixer);
64 _mixer->mixCallback(_samplesBuf, _samples);
65 }
66 }
67