cAudio  2.3.0
3d Audio Engine
cAudioCapture.h
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 #pragma once
6 
7 #include "cOpenALUtil.h"
8 #include "cMutex.h"
9 #include "cMemoryOverride.h"
10 #include "IAudioCapture.h"
11 #include "cSTLAllocator.h"
12 #include "cAudioString.h"
13 #include "IThread.h"
14 
15 namespace cAudio
16 {
18  {
19  public:
20 
21  enum Events{
22  ON_INIT,
23  ON_UPDATE,
24  ON_RELEASE,
25  ON_BEGINCAPTURE,
26  ON_ENDCAPTURE,
27  ON_USERREQUESTEDBUFFER,
28  };
29 
30  cAudioCapture();
31  ~cAudioCapture();
32 
33  virtual bool initialize(const char* deviceName = 0x0, unsigned int frequency = 22050, AudioFormats format = EAF_16BIT_MONO, unsigned int internalBufferSize = 8192);
34  virtual bool isReady() { return Ready; }
35  virtual void updateCaptureBuffer(bool force = false);
36  virtual void shutdown();
37  virtual bool isUpdateThreadRunning()
38  {
39  return (AudioThread != NULL && AudioThread->isRunning());
40  }
41 
42  virtual const char* getDeviceName() { return toUTF8(DeviceName); }
43  virtual unsigned int getFrequency() { return Frequency; }
44  virtual AudioFormats getFormat() { return Format; }
45  virtual unsigned int getInternalBufferSize() { return InternalBufferSize; }
46  virtual unsigned int getSampleSize() { return SampleSize; }
47 
48  virtual bool setDevice(const char* deviceName);
49  virtual bool setFrequency(unsigned int frequency);
50  virtual bool setFormat(AudioFormats format);
51  virtual bool setInternalBufferSize(unsigned int internalBufferSize);
52 
53  virtual bool beginCapture();
54  virtual void stopCapture();
55  virtual unsigned int getCapturedAudio(void* outputBuffer, unsigned int outputBufferSize);
57 
58  virtual unsigned int getCurrentCapturedAudioSize();
59  void getAvailableDevices();
60 
61  virtual void registerEventHandler(ICaptureEventHandler* handler);
62  virtual void unRegisterEventHandler(ICaptureEventHandler* handler);
63  virtual void unRegisterAllEventHandlers();
64 
65  protected:
66  virtual void run();
67 
68  cAudioMutex Mutex;
69 
72 
73  bool initOpenALDevice();
74  void shutdownOpenALDevice();
75 
76  unsigned int Frequency;
77  AudioFormats Format;
78  unsigned int InternalBufferSize;
79  int SampleSize;
80 
81  cAudioVector<char>::Type CaptureBuffer;
82  cAudioList<ICaptureEventHandler*>::Type eventHandlerList;
83 
84  bool Ready;
85  bool Capturing;
86 
87  cAudioString DeviceName;
88  ALCdevice* CaptureDevice;
89 
90  bool checkError();
91  ALenum convertAudioFormatEnum(AudioFormats format);
92  void signalEvent(Events sevent);
93  };
94 };
cAudio::AudioFormats
AudioFormats
Enumeration of audio formats supported by the engine.
Definition: EAudioFormats.h:10
cAudio::cAudioCapture::unRegisterAllEventHandlers
virtual void unRegisterAllEventHandlers()
Removes all event handlers attached to this manager.
Definition: cAudioCapture.cpp:302
cAudio::cAudioCapture::updateCaptureBuffer
virtual void updateCaptureBuffer(bool force=false)
Grabs samples from the OpenAL buffer into the capture buffer if the OpenAL buffer has reached half fu...
Definition: cAudioCapture.cpp:90
cAudio::cAudioCapture::setFormat
virtual bool setFormat(AudioFormats format)
Sets the format that the captured audio will be at. Will cause the capture device to be reinitialized...
Definition: cAudioCapture.cpp:188
cAudio::IThread
Definition: IThread.h:9
cAudio::cAudioCapture::getCurrentCapturedAudioSize
virtual unsigned int getCurrentCapturedAudioSize()
Returns the current size of the internal audio buffer in bytes.
Definition: cAudioCapture.cpp:174
cAudio::cAudioCapture::getSampleSize
virtual unsigned int getSampleSize()
Returns the size of a "sample" of audio data. Useful for making sure you grab audio data at sample bo...
Definition: cAudioCapture.h:46
cAudio::cAudioCapture::getDeviceName
virtual const char * getDeviceName()
Returns the name of the audio device being used to capture audio.
Definition: cAudioCapture.h:42
cAudio::cAudioCapture
Definition: cAudioCapture.h:17
cAudio::cAudioCapture::setInternalBufferSize
virtual bool setInternalBufferSize(unsigned int internalBufferSize)
Sets the internal buffer size that OpenAL will use to store captured audio between calls to getCaptur...
Definition: cAudioCapture.cpp:205
cAudio::cMemoryOverride
Overrides the memory allocations for classes derived from it and makes them use the cAudio memory sys...
Definition: cMemoryOverride.h:13
cAudio::IAudioCapture
Interface for capturing operations in the cAudio Engine.
Definition: IAudioCapture.h:17
cAudio::IThreadWorker
Definition: IThread.h:19
cAudio::cAudioCapture::initialize
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.
Definition: cAudioCapture.cpp:223
cAudio
Main namespace for the entire cAudio library.
Definition: cAudioCapture.h:15
cAudio::cAudioMutex
Definition: cMutex.h:38
cAudio::ICaptureEventHandler
Interface for recieving Capture Manager Events.
Definition: ICaptureEventHandler.h:10
cAudio::cAudioCapture::setFrequency
virtual bool setFrequency(unsigned int frequency)
Sets the frequency that the captured audio will be at. Will cause the capture device to be reinitiali...
Definition: cAudioCapture.cpp:180
cAudio::cAudioCapture::shutdown
virtual void shutdown()
Shuts down the capture device, clearing the internal buffer and setting the audio capture into an uni...
Definition: cAudioCapture.cpp:75
cAudio::cAudioCapture::isReady
virtual bool isReady()
Returns true if the capture device is ready to be used. False may indicate an error with the current ...
Definition: cAudioCapture.h:34
cAudio::cAudioCapture::getInternalBufferSize
virtual unsigned int getInternalBufferSize()
Returns the internal OpenAL buffer size in bytes.
Definition: cAudioCapture.h:45
cAudio::cAudioVector
Definition: cSTLAllocator.h:133
cAudio::cAudioCapture::getFrequency
virtual unsigned int getFrequency()
Returns the frequency that the captured audio will be at.
Definition: cAudioCapture.h:43
cAudio::cAudioCapture::AudioThread
IThread * AudioThread
Our update thread.
Definition: cAudioCapture.h:71
cAudio::cAudioCapture::getFormat
virtual AudioFormats getFormat()
Returns the format of the captured audio.
Definition: cAudioCapture.h:44
cAudio::cAudioCapture::beginCapture
virtual bool beginCapture()
Starts capturing audio data to an internal buffer. Will clear any old data in the buffer.
Definition: cAudioCapture.cpp:116
cAudio::cAudioCapture::registerEventHandler
virtual void registerEventHandler(ICaptureEventHandler *handler)
Registers a new event handler to this manager.
Definition: cAudioCapture.cpp:286
cAudio::AudioCaptureBuffer
Definition: IAudioCapture.h:113
cAudio::cAudioCapture::getCapturedAudioBuffer
virtual AudioCaptureBuffer * getCapturedAudioBuffer()
this method is the same as getCapturedAudio but it returns an managed CaptureBuffer
Definition: cAudioCapture.cpp:150
cAudio::cAudioCapture::setDevice
virtual bool setDevice(const char *deviceName)
Sets the audio device . Will cause the capture device to be reinitialized. Calling while in use will ...
Definition: cAudioCapture.cpp:214
cAudio::cAudioCapture::getCapturedAudio
virtual unsigned int getCapturedAudio(void *outputBuffer, unsigned int outputBufferSize)
Allows access to the audio data in the internal capture buffer.
Definition: cAudioCapture.cpp:157
cAudio::cAudioCapture::unRegisterEventHandler
virtual void unRegisterEventHandler(ICaptureEventHandler *handler)
Removes the specified event handler from this manager.
Definition: cAudioCapture.cpp:294
cAudio::cAudioCapture::isUpdateThreadRunning
virtual bool isUpdateThreadRunning()
Returns if the thread used to update all Audio Capture Objects is running.
Definition: cAudioCapture.h:37
cAudio::cAudioCapture::stopCapture
virtual void stopCapture()
Stops capturing audio data to an internal buffer.
Definition: cAudioCapture.cpp:136