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.
|
|
#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
|