1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
// #pragma once // GCC issues a warning when using 'pragma once' with precompiled headers...
#ifndef SOUND_H
#define SOUND_H
#include "Shared/Storm.h"
#include "Utils/Platform.h"
#include "Core/Io/Stream.h"
namespace sound {
using namespace storm;
using storm::IStream;
/**
* Thread used for audio processing. All classes that provides sound are invoked from this thread.
*/
STORM_THREAD(Audio);
}
/**
* Which backend do we use?
*
* Default is:
* DirectSound on Windows (SOUND_DX)
* OpenAL on others (SOUND_AL)
*/
#ifdef WINDOWS
#define SOUND_DX
#else
#define SOUND_AL
#endif
#ifdef SOUND_DX
// Use DirectSound on Windows.
#include <mmreg.h> // Ignored when using WIN32_LEAN_AND_MEAN
#include <initguid.h>
#include <ks.h> // GUID_NULL is defined here and not included with 'initguid'...
#include <dsound.h>
#undef interface
// Release COM objects.
template <class T>
void release(T *&v) {
if (v)
v->Release();
v = null;
}
#endif
#ifdef SOUND_AL
// Use OpenAl on other operating systems.
#include <AL/al.h>
#include <AL/alc.h>
#endif
// For flac...
#define FLAC__NO_DLL
#endif
|