📄 audiosink.h
字号:
// AudioSink.h: interface for the AudioSink class.
//
//////////////////////////////////////////////////////////////////////
#ifndef AFX_AUDIOSINK_H__08C0DCDA_463E_4DF1_80E7_1BC6CE17AF92__INCLUDED_
#define AFX_AUDIOSINK_H__08C0DCDA_463E_4DF1_80E7_1BC6CE17AF92__INCLUDED_
#ifdef WIN32
#include <windows.h>
#else
#include "linTypes.h"
#include "VThread.hxx"
#include "VCondition.h"
#include "VMutex.h"
using namespace Vocal;
#endif
#include <vector>
#include <utility>
#include "AudioSourceListener.h"
#include "TraceUser.h"
class AudioSample;
class AudioSource;
class AudioSink :
public AudioSourceListener,
public virtual TraceUser
{
public:
AudioSink();
virtual ~AudioSink();
int UnsubscribeAudioSource(AudioSource *audioSource);
int SubscribeAudioSource(AudioSource *audioSource);
virtual int TakeNextAudioSample(AudioSample *audioSample, AudioSource *audioSource);
virtual int StartSink();
virtual int StopSink();
virtual int StartSinkThread();
virtual int StopSinkThread();
#ifdef WIN32
static DWORD WINAPI SinkThreadProc(LPVOID params);
virtual int SinkThreadStarted(HANDLE sinkThreadHandle, DWORD sinkThreadID);
virtual int SinkThreadStopped(HANDLE sinkThreadHandle, DWORD sinkThreadID);
#else
static void* SinkThreadProc(void* params);
virtual int SinkThreadStarted(vthread_t sinkThreadHandle, DWORD sinkThreadID);
virtual int SinkThreadStopped(vthread_t sinkThreadHandle, DWORD sinkThreadID);
#endif
protected:
virtual int RenderAudioSamples(std::vector<std::pair<AudioSample *, AudioSource *> > &data);
protected:
std::vector<AudioSource *> audioSources;
std::vector<std::pair<AudioSample *, AudioSource *> > inputData;
#ifdef WIN32
HANDLE sinkThreadHandle;
DWORD sinkThreadID;
HANDLE sinkThreadStartEvent;
HANDLE sinkThreadStopEvent;
CRITICAL_SECTION audioSourcesMutex;
CRITICAL_SECTION sinkThreadMutex;
CRITICAL_SECTION sinkStateMutex;
#else
VThread sinkThreadHandle;
VCondition sinkThreadStartEvent;
VCondition sinkThreadStopEvent;
VMutex audioSourcesMutex;
VMutex sinkThreadMutex;
VMutex sinkStateMutex;
#endif
bool bSinkRunning;
bool bSinkThreadRunning;
bool bSinkThreadShouldStop;
};
#endif // !defined(AFX_AUDIOSINK_H__08C0DCDA_463E_4DF1_80E7_1BC6CE17AF92__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -