ScummVM API documentation
LowLevelSoundOpenAL.h
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 modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (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, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 /*
23  * Copyright (C) 2006-2010 - Frictional Games
24  *
25  * This file is part of HPL1 Engine.
26  */
27 
28 #ifndef HPL_LOWLEVELSOUND_OPENAL_H
29 #define HPL_LOWLEVELSOUND_OPENAL_H
30 
31 #include "common/array.h"
32 #include "hpl1/engine/sound/LowLevelSound.h"
33 
34 namespace Audio {
35 
36 class Mixer;
37 
38 }
39 namespace hpl {
40 
41 class cOpenALSoundChannel;
42 
44 public:
47 
48  void GetSupportedFormats(tStringList &alstFormats);
49 
50  iSoundData *LoadSoundData(const tString &asName, const tString &asFilePath,
51  const tString &asType, bool abStream, bool abLoopStream);
52 
53  void UpdateSound(float afTimeStep);
54 
55  void SetListenerAttributes(const cVector3f &avPos, const cVector3f &avVel,
56  const cVector3f &avForward, const cVector3f &avUp);
57  void SetListenerPosition(const cVector3f &avPos);
58 
59  void SetSetRolloffFactor(float afFactor);
60 
61  void SetListenerAttenuation(bool abEnabled);
62 
63  void Init(bool abUseHardware, bool abForceGeneric, bool abUseEnvAudio, int alMaxChannels,
64  int alStreamUpdateFreq, bool abUseThreading, bool abUseVoiceManagement,
65  int alMaxMonoSourceHint, int alMaxStereoSourceHint,
66  int alStreamingBufferSize, int alStreamingBufferCount, bool abEnableLowLevelLog,
67  tString asDeviceName);
68 
69  void SetVolume(float afVolume);
70 
71  void SetEnvVolume(float afEnvVolume);
72 
73  iSoundEnvironment *LoadSoundEnvironment(const tString &asFilePath);
74  void SetSoundEnvironment(iSoundEnvironment *apSoundEnv);
75  void FadeSoundEnvironment(iSoundEnvironment *apSourceSoundEnv, iSoundEnvironment *apDestSoundEnv, float afT);
76 
77  bool playChannel(cOpenALSoundChannel *channel);
78  void closeChannel(cOpenALSoundChannel *channel);
79 
80 private:
81  static const int MAX_ACTIVE_CHANNELS = 32;
83  Audio::Mixer *_mixer;
84  tString mvFormats[30];
85  bool mbInitialized;
86  bool mbNullEffectAttached;
87 };
88 
89 } // namespace hpl
90 
91 #endif // HPL_LOWLEVELSOUND_OPENAL_H
Definition: AI.h:36
Definition: str.h:59
Definition: array.h:52
Definition: SoundEnvironment.h:36
Definition: OpenALSoundChannel.h:45
Definition: mixer.h:59
Definition: SoundData.h:39
Definition: LowLevelSoundOpenAL.h:43
Definition: LowLevelSound.h:45
Definition: system.h:38