⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rtcptransmitter.h

📁 symbian平台S60_2nd_FP2_SC rtp实现
💻 H
字号:

#ifndef RTCPTRANSMITTER_HXX
#define RTCPTRANSMITTER_HXX

#include "rtpTypes.h"
#include "socketudp.h"
#include "NetworkAddress.h"

class RtcpReceiver;
class RtcpPacket;

///Class to transmit RTCP packets
class RtcpTransmitter
{
    public:
        /** Constructor creating outgoing RTCP stack using port ranges
            @param remoteHost DNS name receiving the packets
            @param port associated port
         **/
        RtcpTransmitter (CSocketUdp * udp,const char* remoteHost, int remoteMinPort,
                         int remoteMaxPort, RtcpReceiver* receiver);
        /** Constructor creating outgoing RTCP stack using specified port
            @param remoteHost DNS name receiving the packets
            @param port associated port
         **/
        RtcpTransmitter (CSocketUdp * udp,const char* remoteHost, int remotePort,
                         RtcpReceiver* receiver);
        /// consturctor init (don't call this function)
        void constructRtcpTransmitter ();

        /// Deconstructor
        ~RtcpTransmitter ();


        /** Transmits RTCP packet to remoteHost/port.
            Doesn't remove packet from memory.
            Returns -1 failure or number of bytes sent on success
         **/
        int transmit (RtcpPacket* packet);

        /// set timer to next interval
        void updateInterval ();

        /// Check if time to send RTCP packet.  Returns 1 then time up
        int checkInterval ();


        /// Adds SR packet into compound packet
        int addSR (RtcpPacket* packet, int npadSize = 0);

        /// Adds specificed SDES item to compound packet
        int addSDES (RtcpPacket* packet, RtcpSDESType item, int npadSize = 0);

        /// Adds all known SDES items to compound packet
        int addSDES (RtcpPacket* packet, int npadSize = 0);

        /// Adds specificed SDES items in SDESlist, which ends with RTCP_SDES_END
        int addSDES (RtcpPacket* packet, RtcpSDESType* SDESlist, int npadSize = 0);

        /** Adds BYE packet using transmitter's SRC numbers
            @param reason optional text, null-term
         **/
        int addBYE (RtcpPacket* packet, char* reason = NULL, int npadSize = 0);

        /** Adds BYE packet using specified list of SRC numbers
            @param reason optional text, null-term
            @param count number of items in list
         **/
        int addBYE (RtcpPacket* packet, RtpSrc* list, int count,
                    char* reason = NULL, int npadSize = 0);

        /// future: not implemented
        int addAPP (RtcpPacket* packet, int newpadbyeSize = 0);


        /// Used for calculating RR information
        u_int32_t calcLostFrac (RtpTranInfo* source);

        /// Used for calculating RR information
        u_int32_t calcLostCount (RtpTranInfo* source);

        ///
        void setSdesCname ();
        ///
        void setSdesName (char* text);
        ///
        void setSdesEmail (char* text);
        ///
        void setSdesPhone (char* text);
        ///
        void setSdesLoc (char* text);
        ///
        void setSdesTool (char* text);
        ///
        void setSdesNote (char* text);
        ///
        char* getSdesCname ();
        ///
        char* getSdesName ();
        ///
        char* getSdesEmail ();
        ///
        char* getSdesPhone ();
        ///
        char* getSdesLoc ();
        ///
        char* getSdesTool ();
        ///
        char* getSdesNote ();

        /// Sets RTP transmitter if one is used
        void setRTPtran (RtpTransmitter* tran);
        /// Sets RTCP transmitter if one is used
        void setRTPrecv (RtpReceiver* recv);
        /// Sets RTCP receiver if one is used
        void setRTCPrecv (RtcpReceiver* rtcpRecv);

        /// get the ptr of my UdpStack
        CSocketUdp* getUdpStack()
        {
            return myStack;
        }

        ///
        NetworkAddress* getRemoteAddr ()
        {
            return &remoteAddr;
        }

        ///
        void setRemoteAddr ( NetworkAddress& theAddr) ;


    private:
        /// Next time to submit RTCP packet
        NtpTime nextInterval;

        /// Transmission interval in ms
        static const int RTCP_INTERVAL;

        /** Transmitter SDES information
         *  data stored as null-term strings
         **/
        SDESdata* SDESInfo;

        ///
        RtpTransmitter* tran;
        ///
        RtpReceiver* recv;
        ///
        RtcpReceiver* rtcpRecv;

        /// my UDP stack
        CSocketUdp* myStack;

        ///
        bool freeStack;

        NetworkAddress remoteAddr;
};


#endif // RTCPTRANSMITTER_HXX

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -