cAudio  2.3.0
3d Audio Engine
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 
30 namespace 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 }
CAUDIO_API IAudioManager * createAudioManager(bool initializeDefault=true, const char *lFilePath="cAudioEngineLog.html")
Creates an interface to an Audio Manager.
Definition: cAudio.cpp:77
virtual bool registerDataSource(IDataSourceFactory *factory, const char *name, int priority)
Registers a data source with this manager.
CAUDIO_API IAudioDeviceList * createAudioDeviceList(IDeviceType deviceType=DT_PLAYBACK)
Creates an interface to an IAudioDeviceList object.
Definition: cAudio.cpp:179
Interface for the playback capabilities of cAudio.
Definition: IAudioManager.h:24
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.
Interface for all logging operations in cAudio.
Definition: ILogger.h:13
CAUDIO_API IAudioCapture * createAudioCapture(bool initializeDefault=true)
Creates an interface to an Audio Capture Object.
Definition: cAudio.cpp:141
Interface for capturing operations in the cAudio Engine.
Definition: IAudioCapture.h:17
virtual bool registerLogReceiver(ILogReceiver *receiver, const char *name)
Register Log Receiver.
Definition: cLogger.cpp:96
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
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 void shutDown()=0
Shuts the manager down, cleaning up audio sources in the process. Does not clean up decoders,...
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
CAUDIO_API ILogger * getLogger()
Gets the interface to the logger.
Definition: cAudio.cpp:45
Main namespace for the entire cAudio library.
Definition: cAudioCapture.h:15