cAudio 2.3.0
3d Audio Engine
Loading...
Searching...
No Matches
cAudio.cpp
1// Copyright (c) 2008-2011 Raynaldo (Wildicv) Rivera, Joshua (Dark_Kilauea) Jones, Murat (wolfmanfx) Sari
2// This file is part of the "cAudio Engine"
3// For conditions of distribution and use, see copyright notice in cAudio.h
4
5#include "cAudio.h"
6#include "cAudioManager.h"
7#include "cAudioCapture.h"
8
9#if CAUDIO_COMPILE_WITH_OGG_DECODER == 1
10#include "cOggAudioDecoderFactory.h"
11#endif
12
13#if CAUDIO_COMPILE_WITH_WAV_DECODER == 1
14#include "cWavAudioDecoderFactory.h"
15#endif
16
17#include "cRawAudioDecoderFactory.h"
18
19#if CAUDIO_COMPILE_WITH_FILE_SOURCE == 1
20#include "cFileSourceFactory.h"
21#include "cFileSource.h"
22#endif
23
24#include "cPluginManager.h"
25#include "cLogger.h"
26#include "cConsoleLogReceiver.h"
27#include "cFileLogReceiver.h"
28#include "cOpenALAudioDeviceList.h"
29
30namespace cAudio
31{
32
33//---------------------------------------------------------------------------------------
34// Logger section
35//---------------------------------------------------------------------------------------
36
37#if CAUDIO_COMPILE_WITH_CONSOLE_LOG_RECEIVER == 1
38 static cConsoleLogReceiver ConsoleLog;
39#endif
40
41#if CAUDIO_COMPILE_WITH_FILE_LOG_RECEIVER == 1
42 static cFileLogReceiver *FileLog;
43#endif
44
45 CAUDIO_API ILogger* getLogger()
46 {
47 static cLogger* Logger = NULL;
48 if(!Logger)
49 {
50 Logger = new cLogger;
51#if CAUDIO_COMPILE_WITH_CONSOLE_LOG_RECEIVER == 1
52 Logger->registerLogReceiver(&ConsoleLog, "Console");
53#endif
54#if CAUDIO_COMPILE_WITH_FILE_LOG_RECEIVER == 1
55 Logger->registerLogReceiver(FileLog,"File");
56#endif
57 }
58 return Logger;
59 }
60
61//---------------------------------------------------------------------------------------
62// Audio manager section
63//---------------------------------------------------------------------------------------
64
65#if CAUDIO_COMPILE_WITH_OGG_DECODER == 1
66 static cOggAudioDecoderFactory OggDecoderFactory;
67#endif
68#if CAUDIO_COMPILE_WITH_WAV_DECODER == 1
69 static cWavAudioDecoderFactory WavDecoderFactory;
70#endif
71
72 static cRawAudioDecoderFactory RawDecoderFactory;
73
74#if CAUDIO_COMPILE_WITH_FILE_SOURCE == 1
75 static cFileSourceFactory FileSourceFactory;
76#endif
77 CAUDIO_API IAudioManager* createAudioManager(bool initializeDefault, const char *lFilePath)
78 {
79 cAudioManager* manager = CAUDIO_NEW cAudioManager;
80#if CAUDIO_COMPILE_WITH_FILE_LOG_RECEIVER == 1
81 if(FileLog == NULL)
82
83 FileLog = new cFileLogReceiver(lFilePath);
84#endif
85 if(manager)
86 {
87 if(initializeDefault)
88 manager->initialize();
89
90#if CAUDIO_COMPILE_WITH_OGG_DECODER == 1
91 manager->registerAudioDecoder(&OggDecoderFactory, "ogg");
92#endif
93#if CAUDIO_COMPILE_WITH_WAV_DECODER == 1
94 manager->registerAudioDecoder(&WavDecoderFactory, "wav");
95#endif
96
97 manager->registerAudioDecoder(&RawDecoderFactory, "raw");
98
99#if CAUDIO_COMPILE_WITH_FILE_SOURCE == 1
100 manager->registerDataSource(&FileSourceFactory, "FileSystem", 0);
101#endif
102
103#ifdef CAUDIO_COMPILE_WITH_PLUGIN_SUPPORT
104 cAudioVector<IAudioPlugin*>::Type plugins = cPluginManager::Instance()->getPluginList();
105 for(unsigned int i = 0; i < plugins.size(); ++i)
106 {
107 plugins[i]->onCreateAudioManager(manager);
108 }
109#endif
110 }
111 return manager;
112 }
113
114 CAUDIO_API void destroyAudioManager(IAudioManager* manager)
115 {
116#if CAUDIO_COMPILE_WITH_FILE_LOG_RECEIVER == 1
117 if(FileLog != NULL)
118 delete FileLog;
119#endif
120 if(manager)
121 {
122#ifdef CAUDIO_COMPILE_WITH_PLUGIN_SUPPORT
123 cAudioVector<IAudioPlugin*>::Type plugins = cPluginManager::Instance()->getPluginList();
124 for(unsigned int i = 0; i < plugins.size(); ++i)
125 {
126 plugins[i]->onDestroyAudioManager(manager);
127 }
128#endif
129
130 manager->shutDown();
131
132 CAUDIO_DELETE manager;
133 manager = NULL;
134 }
135 }
136
137 //---------------------------------------------------------------------------------------
138 // Audio capture section
139 //---------------------------------------------------------------------------------------
140
141 CAUDIO_API IAudioCapture* createAudioCapture(bool initializeDefault)
142 {
143 cAudioCapture* capture = CAUDIO_NEW cAudioCapture;
144 if(capture)
145 {
146 if(initializeDefault)
147 capture->initialize();
148
149#ifdef CAUDIO_COMPILE_WITH_PLUGIN_SUPPORT
150 cAudioVector<IAudioPlugin*>::Type plugins = cPluginManager::Instance()->getPluginList();
151 for(unsigned int i = 0; i < plugins.size(); ++i)
152 {
153 plugins[i]->onCreateAudioCapture(capture);
154 }
155#endif
156 }
157 return capture;
158 }
159
160 CAUDIO_API void destroyAudioCapture(IAudioCapture* capture)
161 {
162 if(capture)
163 {
164#ifdef CAUDIO_COMPILE_WITH_PLUGIN_SUPPORT
165 cAudioVector<IAudioPlugin*>::Type plugins = cPluginManager::Instance()->getPluginList();
166 for(unsigned int i = 0; i < plugins.size(); ++i)
167 {
168 plugins[i]->onDestoryAudioCapture(capture);
169 }
170#endif
171 CAUDIO_DELETE capture;
172 capture = NULL;
173 }
174 }
175
176 //---------------------------------------------------------------------------------------
177 // IAudioDeviceList section
178 //---------------------------------------------------------------------------------------
179 CAUDIO_API IAudioDeviceList* createAudioDeviceList(IDeviceType deviceType)
180 {
181 return CAUDIO_NEW cOpenALAudioDeviceList(deviceType);
182 }
183}
Interface for capturing operations in the cAudio Engine.
Definition: IAudioCapture.h:18
Interface for the playback capabilities of cAudio.
Definition: IAudioManager.h:25
virtual void shutDown()=0
Shuts the manager down, cleaning up audio sources in the process. Does not clean up decoders,...
Interface for all logging operations in cAudio.
Definition: ILogger.h:14
virtual bool initialize(const char *deviceName=0x0, unsigned int frequency=22050, AudioFormats format=EAF_16BIT_MONO, unsigned int internalBufferSize=8192)
Initializes the capture device to the selected settings.
virtual bool registerDataSource(IDataSourceFactory *factory, const char *name, int priority)
Registers a data source with this manager.
virtual bool registerAudioDecoder(IAudioDecoderFactory *factory, const char *extension)
Register an Audio Decoder.
virtual bool initialize(const char *deviceName=0x0, int outputFrequency=-1, int eaxEffectSlots=4)
Initializes the manager.
virtual bool registerLogReceiver(ILogReceiver *receiver, const char *name)
Register Log Receiver.
Definition: cLogger.cpp:96
Main namespace for the entire cAudio library.
Definition: cAudioCapture.h:16
CAUDIO_API ILogger * getLogger()
Gets the interface to the logger.
Definition: cAudio.cpp:45
CAUDIO_API IAudioDeviceList * createAudioDeviceList(IDeviceType deviceType=DT_PLAYBACK)
Creates an interface to an IAudioDeviceList object.
Definition: cAudio.cpp:179
CAUDIO_API void destroyAudioManager(IAudioManager *manager)
Destroys an interface to a previously created Audio Manager and frees the memory allocated for it.
Definition: cAudio.cpp:114
CAUDIO_API IAudioCapture * createAudioCapture(bool initializeDefault=true)
Creates an interface to an Audio Capture Object.
Definition: cAudio.cpp:141
CAUDIO_API IAudioManager * createAudioManager(bool initializeDefault=true, const char *lFilePath="cAudioEngineLog.html")
Creates an interface to an Audio Manager.
Definition: cAudio.cpp:77
CAUDIO_API void destroyAudioCapture(IAudioCapture *capture)
Destroys an interface to a previously created Audio Capture Object and frees the memory allocated for...
Definition: cAudio.cpp:160