📄 audiosource.h
字号:
// AudioSource.h: interface for the AudioSource class.
//
//////////////////////////////////////////////////////////////////////
#ifndef AFX_AUDIOSOURCE_H__173FE137_77CB_40B5_9E44_E40F9DF01BE7__INCLUDED_
#define AFX_AUDIOSOURCE_H__173FE137_77CB_40B5_9E44_E40F9DF01BE7__INCLUDED_
#ifdef WIN32
#include <windows.h>
#else
#include "linTypes.h"
#include "VThread.hxx"
#include "VCondition.h"
#include "VMutex.h"
#endif
#include <vector>
#include "AudioSinkListener.h"
#include "TraceUser.h"
class AudioSample;
class AudioSink;
class AudioSource :
public AudioSinkListener,
public virtual TraceUser
{
public:
AudioSource();
virtual ~AudioSource();
int UnsubscribeAudioSink(AudioSink *audioSink);
int SubscribeAudioSink(AudioSink *audioSink);
virtual int GiveNextAudioSample(AudioSample **ppAudioSample, AudioSink *audioSink);
virtual int StartSource();
virtual int StopSource();
virtual int StartSourceThread();
virtual int StopSourceThread();
#ifdef WIN32
static DWORD WINAPI SourceThreadProc(LPVOID params);
virtual int SourceThreadStarted(HANDLE sourceThreadHandle, DWORD sourceThreadID);
virtual int SourceThreadStopped(HANDLE sourceThreadHandle, DWORD sourceThreadID);
#else
static void* SourceThreadProc(void* params);
virtual int SourceThreadStarted(pthread_t sourceThreadHandle, DWORD sourceThreadID);
virtual int SourceThreadStopped(pthread_t sourceThreadHandle, DWORD sourceThreadID);
#endif
protected:
virtual int GenerateData(AudioSample **audioSample);
int SendAudioSample(AudioSample *audioSample, AudioSink *audioSink);
protected:
std::vector<AudioSink *> audioSinks;
#ifdef WIN32
HANDLE sourceThreadHandle;
DWORD sourceThreadID;
HANDLE sourceThreadStartEvent;
HANDLE sourceThreadStopEvent;
CRITICAL_SECTION audioSinksMutex;
CRITICAL_SECTION sourceThreadMutex;
CRITICAL_SECTION sourceStateMutex;
#else
VThread sourceThreadHandle;
VCondition sourceThreadStartEvent;
VCondition sourceThreadStopEvent;
VMutex audioSinksMutex;
VMutex sourceThreadMutex;
VMutex sourceStateMutex;
#endif
bool bSourceRunning;
bool bSourceThreadRunning;
bool bSourceThreadShouldStop;
};
#endif // !defined(AFX_AUDIOSOURCE_H__173FE137_77CB_40B5_9E44_E40F9DF01BE7__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -