// 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 <string>
|
#include <vector>
|
#include <Winsock.h>
|
|
#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<std::pair<AudioSample *, AudioSource *> > &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_)
|