#ifndef CRTPSENDER_H_ #define CRTPSENDER_H_ #include #include #include #define VIDEO_CAPS "video/x-raw-yuv,width=352,height=288,framerate=15/1" #define VOFFSET 0 #define AOFFSET 0 #define UDP_RTP_PORT_SV 5000 #define UDP_RTP_PORT_SA 5002 #define UDP_RTCP_PORT_SV 5001 #define UDP_RTCP_PORT_SA 5003 #define UDP_RTCP_PORT_RV 5005 #define UDP_RTCP_PORT_RA 5007 #define RHOST "127.0.0.1" class CRtpSender { public: static CRtpSender* getInstance(){return &m_theInstance;} virtual ~CRtpSender(); bool startSender(); bool stopSender(); static void cb_new_pad(GstElement* element, GstPad* pad, gpointer data); static void state_changed(const GstBus* const bus, GstMessage* message, void* user_data); GstElement* m_bin; GMainLoop * m_mainLoop; private: CRtpSender(); typedef struct { GstElement* caps; GstElement* source; GstElement* colorspace; GstElement* encoder; GstElement* payloader; } VideoSenderPipe_t; typedef struct { GstElement* rtp_sender; GstElement* rtcp_sender; GstElement* rtcp_receiver; } UdpSender_t; typedef struct { GstPad* send_rtp_src0; GstPad* send_rtp_sink0; GstPad* send_rtcp_src0; GstPad* recv_rtcp_sink0; } PadsSender_t; VideoSenderPipe_t* createVideoSender(GstElement* bin); UdpSender_t* createUdpSender(GstElement* bin); PadsSender_t* getPadsSender(GstElement* rtpbin); //GstElement* m_bin; GstElement* m_gstrtpbin; VideoSenderPipe_t* m_vid_sendpipe; UdpSender_t* m_vid_udpsender; PadsSender_t* m_pads_sender; static CRtpSender m_theInstance; }; #endif /*CRTPSENDER_H_*/