Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

76 lines
1.6 KiB

#ifndef _WAVEDEV_H
#define _WAVEDEV_H
#include "WaveIo.h"
class waveInDev
{
private:
UINT m_devID;
HWAVEIN m_hwi;
BOOL m_bOpen; // is the device open ?
WAVEFORMATEX m_waveFormat;
BOOL m_fAllowMapper;
HANDLE m_hEvent;
public:
waveInDev(UINT uDevId, HANDLE hEvent=NULL);
~waveInDev();
MMRESULT Open(int hertz=8000, int bps=16);
MMRESULT Reset();
MMRESULT Close();
MMRESULT PrepareHeader(WAVEHDR *pHdr);
MMRESULT UnPrepareHeader(WAVEHDR *pHdr);
MMRESULT Record(WAVEHDR *pHdr);
void AllowMapper(BOOL fAllow);
};
// waveOutDev works in blocking/synchronous mode and
// non-blocking async mode. If a window handle is passed
// as the second argument to the contructor, then the window
// will receive message from the waveOut device and the calls
// are non-blocking. Otherwise, Play() and PlayFile are blocking.
class waveOutDev
{
private:
UINT m_devID;
HWAVEOUT m_hwo;
BOOL m_bOpen; // is the device open
HANDLE m_hWnd;
HANDLE m_hEvent;
WAVEFORMATEX m_waveFormat;
BOOL m_fAllowMapper;
// playfile needs a temporary buffer
char *m_pfBuffer;
WAVEHDR m_waveHdr;
int m_nBufferSize;
TCHAR m_szPlayFile[150];
WAVEFORMATEX m_PlayFileWf;
BOOL m_fFileBufferValid;
public:
waveOutDev(UINT uDevID, HWND hwnd=NULL);
~waveOutDev();
MMRESULT Open(int hertz=8000, int bps=16);
MMRESULT Open(WAVEFORMATEX *pWaveFormat);
MMRESULT Close();
MMRESULT PrepareHeader(WAVEHDR *pWhdr, SHORT *shBuffer=NULL, int numSamples=0);
MMRESULT Play(WAVEHDR *pWhdr);
MMRESULT UnprepareHeader(WAVEHDR *pWhdr);
MMRESULT PlayFile(LPCTSTR szFileName);
void AllowMapper(BOOL fAllow);
};
#endif