CPipe 类:成员 m_SoundIn、m_SoundOut 、CSoundFile 指针、播放缓冲区数组
CBuffer* m_pPlayBuffer[5]、录音播放数据块序号 m_nInPos m_nOutPos 0-4
主窗口类继承于 CDialog 类和 CPipe 类调用 CPipe 类方法实现实时播放功能。
void StartRecordToBuffer();
void StartPlayingFromBuffer();
void StopPlayingFromFile();
void StartPlayingFromFile();
void StopRecordingToFile();
void StartRecordingToFile();
void WriteSoundDataToFile(CBuffer* buffer);
BOOL ReadSoundDataFromFile(CBuffer* buffer);
static void DataFromSoundIn(CBuffer* buffer, void* Owner);
static BOOL GetDataToSoundOut(CBuffer* buffer, void* Owner);
CSoundBase 类:
成员:m_nFormat m_nBufferSize
方法:WAVEFORMATEX* GetFormat();
int GetBufferSize();
void SetBufferSize(int NumberOfSamples);
int GetNumberOfChannels();
void SetNumberOfChannels(int nchan);
int GetSamplesPerSecond();
void SetSamplesPerSecond(int sps);
int GetBitsPerSample();
void SetBitsPerSample(int bps);
CSoundIN 和 CSoundOut 均继承于 CSoundBase 类:
BOOL m_bRecording;
HWAVEIN m_hRecord;
int m_QueuedBuffers;
DWORD m_ThreadID;
BOOL m_bPlaying;
HWAVEOUT m_hPlay;
DWORD m_ThreadID;
int m_QueuedBuffers;
BOOL IsRecording();
CRITICAL_SECTION m_cs;
void (*DataFromSoundIn)(CBuffer*
buffer, void* Owner);
void* m_pOwner;
virtual void Stop();
bool Start(WAVEFORMATEX* format);
staticvoid waveInErrorMsg(MMRESULT
result, LPCTSTR addstr);
afx_msgvoid nMM_WIM_DATA(UINT
parm1, LONG parm2);
BOOL InitInstance();
int AddInputBufferToQueue();
BOOL IsPlaying();
CRITICAL_SECTION m_cs;
BOOL (*GetDataToSoundOut)(CBuffer*
buffer, void* Owner);
void* m_pOwner;
virtual void Stop();
bool start(WAVEFORMATEX* format );
void waveOutErrorMsg(MMRESULT
result, LPCTSTR addstr);
void OnMM_WOM_DONE(UINT
parm1, LONG parm2);
int AddOutputBufferToQueue(CBuffer*
buffer);
- 1
- 2
- 3
- 4
- 5
- 6
前往页