⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 audiosink.h

📁 rtp在linux下的实现
💻 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 + -