// RTPAudioSink.h: interface for the RTPAudioSink class. // ////////////////////////////////////////////////////////////////////// #ifndef AFX_RTPAUDIOSINK_H__D14DA56A_E37A_4BF0_9746_6A803873E24E__INCLUDED_ #define AFX_RTPAUDIOSINK_H__D14DA56A_E37A_4BF0_9746_6A803873E24E__INCLUDED_ #include #include #include #include "AudioSink.h" #include "TraceUser.h" #include "Parameters.h" class RTPAudioSink : public AudioSink { public: RTPAudioSink(); virtual ~RTPAudioSink(); int SetDestination(std::string ipAddress, unsigned short udpPort); int SetTOS(unsigned char tosByte); int SetLocalPort(unsigned short port); virtual int SinkStarted(); virtual int SinkStopped(); virtual int SinkThreadStarted(HANDLE sinkThreadHandle, DWORD sinkThreadID); virtual int SinkThreadStopped(HANDLE sinkThreadHandle, DWORD sinkThreadID); protected: virtual int RenderAudioSamples(std::vector > &data); int SetTraceLevel(); private: int CreateSocket(); int CloseSocket(); int PrepareSink(); int UnprepareSink(); int SetCodecInRegistry(char *codecName); private: unsigned long destinationIP; std::string destinationIPString; unsigned short destinationPort; SOCKET rtpSocket; sockaddr_in destinationSockAddr; unsigned short localPort; unsigned char tos; unsigned long timestamp; unsigned long ssrc; unsigned short seqno; unsigned char sendBuffer[512]; bool bRunning; bool silenceInterval; int lastCodec; CRITICAL_SECTION filterMutex; }; #endif // !defined(AFX_RTPAUDIOSINK_H__D14DA56A_E37A_4BF0_9746_6A803873E24E__INCLUDED_)