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

📄 audiosource.h

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