77 lines
2.1 KiB
C++
77 lines
2.1 KiB
C++
#ifndef _SAMPLE_WAVEINDEVICE_HPP_
|
|
#define _SAMPLE_WAVEINDEVICE_HPP_
|
|
#ifndef _COMMON_WINDOWS_HPP_
|
|
#include <common/windows.hpp>
|
|
#endif
|
|
#ifndef _COMMON_GLOBALDATA_HPP_
|
|
#include <common/gdata.hpp>
|
|
#endif
|
|
#ifndef _SAMPLE_WAVEINCAPS_HPP_
|
|
#include <sample/incaps.hpp>
|
|
#endif
|
|
#ifndef _SAMPLE_WAVEHEADER_HPP_
|
|
#include <sample/wavehdr.hpp>
|
|
#endif
|
|
#ifndef _SAMPLE_WAVEFORM_HPP_
|
|
#include <sample/wave.hpp>
|
|
#endif
|
|
#ifndef _SAMPLE_DEVICEHANDLER_HPP_
|
|
#include <sample/devhndlr.hpp>
|
|
#endif
|
|
#ifndef _SAMPLE_WAVEFORMATPCM_HPP_
|
|
#include <sample/pcmform.hpp>
|
|
#endif
|
|
|
|
class WaveInDevice : public DeviceHandler
|
|
{
|
|
public:
|
|
WaveInDevice(UINT waveDeviceID,Window &windowHandler);
|
|
WaveInDevice(const WaveInDevice &someWaveInDevice);
|
|
virtual ~WaveInDevice();
|
|
WaveInDevice &operator=(const WaveInDevice &someWaveInDevice);
|
|
WORD record(WaveForm &waveForm);
|
|
protected:
|
|
virtual void openHandler(CallbackData &someCallbackData);
|
|
virtual void closeHandler(CallbackData &someCallbackData);
|
|
virtual void doneHandler(CallbackData &someCallbackData);
|
|
virtual void message(const String &strErrorMessage)const;
|
|
private:
|
|
WORD openDevice(WaveFormatPCM &waveFormatPCM);
|
|
WORD closeDevice(void);
|
|
UINT mWaveDeviceID;
|
|
GlobalData<WaveHeader> mGlobalWaveHeader;
|
|
WaveInCaps mWaveInCaps;
|
|
HWAVEIN mhWaveIn;
|
|
Window &mWindowHandler;
|
|
};
|
|
|
|
inline
|
|
WaveInDevice::WaveInDevice(UINT waveDeviceID,Window &windowHandler)
|
|
: mWaveDeviceID(waveDeviceID), mhWaveIn(0), mGlobalWaveHeader(1,GMEM_MOVEABLE|GMEM_ZEROINIT),
|
|
mWindowHandler(windowHandler), DeviceHandler(windowHandler)
|
|
{
|
|
::waveInGetDevCaps(mWaveDeviceID,&((WAVEINCAPS&)mWaveInCaps),sizeof(mWaveInCaps));
|
|
}
|
|
|
|
inline
|
|
WaveInDevice::WaveInDevice(const WaveInDevice &someWaveInDevice)
|
|
: mWaveDeviceID(someWaveInDevice.mWaveDeviceID), mGlobalWaveHeader(1,GMEM_MOVEABLE|GMEM_ZEROINIT),
|
|
mhWaveIn(0), mWindowHandler(someWaveInDevice.mWindowHandler), DeviceHandler(someWaveInDevice.mWindowHandler)
|
|
{
|
|
*this=someWaveInDevice;
|
|
}
|
|
|
|
inline
|
|
WaveInDevice &WaveInDevice::operator=(const WaveInDevice &someWaveInDevice)
|
|
{
|
|
mWaveInCaps=someWaveInDevice.mWaveInCaps;
|
|
return *this;
|
|
}
|
|
|
|
inline
|
|
WaveInDevice::~WaveInDevice()
|
|
{
|
|
closeDevice();
|
|
}
|
|
#endif
|