?? waveaudiosink.h
字號:
// WaveAudioSink.h: interface for the WaveAudioSink class.
//
//////////////////////////////////////////////////////////////////////
#ifndef AFX_WAVEAUDIOSINK_H__82B1217D_28FD_4C8A_B8FA_ADF13478A7CF__INCLUDED_
#define AFX_WAVEAUDIOSINK_H__82B1217D_28FD_4C8A_B8FA_ADF13478A7CF__INCLUDED_
#ifdef WIN32
#include <windows.h>
#include <mmsystem.h>
#else
#include "vtypes.h"
typedef struct w_tag {
char* lpData;
int32_t dwBufferLength;
int32_t dwBytesRecord;
int32_t dwUser;
int32_t dwFlags;
int32_t dwLoops;
struct w_tag* lpNext;
int32_t res;
} VWaveHdr;
#define WAVEHDR VWaveHdr
#endif
#include <list>
#include "AudioSink.h"
#include "Parameters.h"
class WaveAudioSink : public AudioSink
{
public:
WaveAudioSink();
virtual ~WaveAudioSink();
virtual int StartSink();
virtual int StopSink();
#ifdef WIN32
virtual int SinkThreadStarted(HANDLE sinkThreadHandle, DWORD sinkThreadID);
virtual int SinkThreadStopped(HANDLE sinkThreadHandle, DWORD sinkThreadID);
#else
virtual int SinkThreadStarted(vthread_t sinkThreadHandle, DWORD sinkThreadID);
virtual int SinkThreadStopped(vthread_t sinkThreadHandle, DWORD sinkThreadID);
#endif
int SetVolume(unsigned long volume);
int SetDeviceID(unsigned int deviceID);
unsigned int GetDeviceID();
int SetFrameSize(unsigned long size);
int SetNumFrames(unsigned long numFrames);
int SetFormat(int waveFormatNumber);
protected:
virtual int RenderAudioSamples(std::vector<std::pair<AudioSample *, AudioSource *> > &data);
virtual int SetTraceLevel();
private:
int BeginAudioRender();
int EndAudioRender();
int ResetAudioRender();
WAVEHDR *GetBuffer();
#ifdef WIN32
static void CALLBACK SpeakerCallback(HWAVEOUT hWaveOut, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2);
#endif
private:
bool enabled;
bool bRunning;
unsigned long frameSize;
unsigned long numFrames;
unsigned int waveoutDeviceID;
#ifdef WIN32
HANDLE dataEvent;
HWAVEOUT hWaveOut;
HANDLE pauseEvent;
#endif
WAVEHDR waveHdr[WAVESINK_MAX_WAVEHDR];
WAVEFORMATEX wfx;
char dataBuffer[WAVESINK_MAX_WAVEHDR][WAVESINK_MAX_WAVEHDR_SIZE];
std::list<WAVEHDR*> freeBuffers;
CRITICAL_SECTION dataMutex;
CRITICAL_SECTION freeBuffersMutex;
CRITICAL_SECTION filterMutex;
};
#endif // !defined(AFX_WAVEAUDIOSINK_H__82B1217D_28FD_4C8A_B8FA_ADF13478A7CF__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -