// RTPJitterBuffer.h: interface for the RTPJitterBuffer class. // ////////////////////////////////////////////////////////////////////// #ifndef AFX_RTPJITTERBUFFER_H__6EA27482_0A63_473E_9EBD_03F510481719__INCLUDED_ #define AFX_RTPJITTERBUFFER_H__6EA27482_0A63_473E_9EBD_03F510481719__INCLUDED_ #pragma warning(disable:4786) #include #include "AudioTransformer.h" #define DEFAULT_SILENCE_THRESHOLD 15 class RTPAudioStream; class RTPJitterBuffer : public AudioTransformer { public: RTPJitterBuffer(); ~RTPJitterBuffer(); int SetTraceLevel(); int SetJitterBufferDepth(int depth); int SetOutputDuration(int outputDuration); virtual int TransformStarted(); virtual int TransformStopped(); protected: virtual int RenderAudioSamples(std::vector > &data); virtual int GenerateData(AudioSample **ppAudioSample); virtual int TransformAudioSamples(std::vector > &data, AudioSample **ppAudioSample); private: int ChooseNewActiveAudioStream(); int Clear(); private: typedef std::map AUDIO_STREAM_MAP; RTPAudioStream *activeAudioStream; int jitterBufferDepth; int outputDuration; bool bRunning; CRITICAL_SECTION rtpAudioStreamsMutex; CRITICAL_SECTION stateMutex; AUDIO_STREAM_MAP rtpAudioStreams; int numActiveStreamNULLs; }; #endif // !defined(AFX_RTPJITTERBUFFER_H__6EA27482_0A63_473E_9EBD_03F510481719__INCLUDED_)