#ifndef _PL_RTSPCLIENT_H_
|
#define _PL_RTSPCLIENT_H_
|
|
#include "PipeLine.h"
|
#include <string>
|
|
struct PL_RTSPClient_Config
|
{
|
std::string receivingInterfaceAddr;
|
int desiredPortNum;
|
bool requestStreamingOverTcp;
|
std::string progName;
|
std::string rtspURL;
|
bool aux; // frame data start with 0x00000001
|
int verbosityLevel;
|
int tunnelOverHTTPPortNum; // portNumBits
|
void* args;
|
|
PL_RTSPClient_Config() :
|
receivingInterfaceAddr(), desiredPortNum(0), requestStreamingOverTcp(false),
|
progName(), rtspURL() ,aux(true), verbosityLevel(1), tunnelOverHTTPPortNum(0), args(nullptr)
|
{ }
|
};
|
|
struct RtspClientParam;
|
|
class PL_RTSPClient : public PipeLineElem
|
{
|
friend void rtsp_client_frame_callback(void* arg, uint8_t* buffer, size_t buffSize, timeval presentationTime);
|
friend void rtsp_client_continue_callback(void* arg);
|
friend void rtsp_client_set_param_callback(void* arg, RtspClientParam& param);
|
|
public:
|
PL_RTSPClient();
|
virtual ~PL_RTSPClient();
|
|
virtual bool init(void* args);
|
virtual void finit();
|
|
virtual bool pay(const PipeMaterial& pm);
|
virtual bool gain(PipeMaterial& pm);
|
|
// kill locks internal
|
void kill();
|
|
private:
|
void* internal;
|
};
|
|
PipeLineElem* create_PL_RTSPClient();
|
|
#endif
|