~ubuntu-branches/ubuntu/precise/crtmpserver/precise-backports

« back to all changes in this revision

Viewing changes to thelib/include/protocols/rtp/connectivity/outboundconnectivity.h

  • Committer: Package Import Robot
  • Author(s): Micah Gersten
  • Date: 2012-07-04 00:04:40 UTC
  • mfrom: (3.1.7 sid)
  • Revision ID: package-import@ubuntu.com-20120704000440-u9x7yhyglqjvspk8
Tags: 1.0~dfsg-3~ubuntu12.04.1
No-change backport to precise (LP: #964153)

Show diffs side-by-side

added added

removed removed

Lines of Context:
24
24
#include "protocols/rtp/connectivity/baseconnectivity.h"
25
25
 
26
26
class BaseOutNetRTPUDPStream;
 
27
class RTSPProtocol;
 
28
class NATTraversalProtocol;
27
29
 
28
 
typedef struct _RTPClient {
 
30
struct RTPClient {
29
31
        uint32_t protocolId;
30
32
        bool isUdp;
31
33
 
36
38
        uint32_t audioBytesCount;
37
39
        uint32_t audioStartRTP;
38
40
        double audioStartTS;
 
41
        uint8_t audioDataChannel;
 
42
        uint8_t audioRtcpChannel;
39
43
 
40
44
        bool hasVideo;
41
45
        sockaddr_in videoDataAddress;
44
48
        uint32_t videoBytesCount;
45
49
        uint32_t videoStartRTP;
46
50
        double videoStartTS;
 
51
        uint8_t videoDataChannel;
 
52
        uint8_t videoRtcpChannel;
47
53
 
48
 
        _RTPClient() {
 
54
        RTPClient() {
49
55
                protocolId = 0;
50
56
                isUdp = false;
51
57
 
56
62
                audioBytesCount = 0;
57
63
                audioStartRTP = 0xffffffff;
58
64
                audioStartTS = -1;
 
65
                audioDataChannel = 0xff;
 
66
                audioRtcpChannel = 0xff;
59
67
 
60
68
                hasVideo = false;
61
69
                memset(&videoDataAddress, 0, sizeof (videoDataAddress));
64
72
                videoBytesCount = 0;
65
73
                videoStartRTP = 0xffffffff;
66
74
                videoStartTS = -1;
 
75
                videoDataChannel = 0xff;
 
76
                videoRtcpChannel = 0xff;
67
77
        }
68
 
} RTPClient;
 
78
};
69
79
 
70
80
class DLLEXP OutboundConnectivity
71
81
: public BaseConnectivity {
72
82
private:
 
83
        bool _forceTcp;
 
84
        RTSPProtocol *_pRTSPProtocol;
73
85
        BaseOutNetRTPUDPStream *_pOutStream;
74
 
        msghdr _dataMessage;
75
 
        msghdr _rtcpMessage;
 
86
        MSGHDR _dataMessage;
 
87
        MSGHDR _rtcpMessage;
76
88
        uint8_t *_pRTCPNTP;
77
89
        uint8_t *_pRTCPRTP;
78
90
        uint8_t *_pRTCPSPC;
79
91
        uint8_t *_pRTCPSOC;
80
92
        uint64_t _startupTime;
81
 
        map<uint32_t, RTPClient> _clients;
82
 
        bool _hasAudio;
 
93
        RTPClient _rtpClient;
 
94
 
83
95
        bool _hasVideo;
84
 
 
85
96
        int32_t _videoDataFd;
86
97
        uint16_t _videoDataPort;
87
98
        int32_t _videoRTCPFd;
88
99
        uint16_t _videoRTCPPort;
 
100
        NATTraversalProtocol *_pVideoNATData;
 
101
        NATTraversalProtocol *_pVideoNATRTCP;
89
102
 
 
103
        bool _hasAudio;
90
104
        int32_t _audioDataFd;
91
105
        uint16_t _audioDataPort;
92
106
        int32_t _audioRTCPFd;
93
107
        uint16_t _audioRTCPPort;
 
108
        NATTraversalProtocol *_pAudioNATData;
 
109
        NATTraversalProtocol *_pAudioNATRTCP;
 
110
 
 
111
        uint32_t _dummyValue;
94
112
public:
95
 
        OutboundConnectivity();
 
113
        OutboundConnectivity(bool forceTcp, RTSPProtocol *pRTSPProtocol);
96
114
        virtual ~OutboundConnectivity();
97
115
        bool Initialize();
98
116
        void SetOutStream(BaseOutNetRTPUDPStream *pOutStream);
99
117
        string GetVideoPorts();
100
118
        string GetAudioPorts();
 
119
        string GetVideoChannels();
 
120
        string GetAudioChannels();
101
121
        uint32_t GetAudioSSRC();
102
122
        uint32_t GetVideoSSRC();
103
123
        uint16_t GetLastVideoSequence();
104
124
        uint16_t GetLastAudioSequence();
105
125
        void HasAudio(bool value);
106
126
        void HasVideo(bool value);
107
 
        bool RegisterUDPVideoClient1(uint32_t rtspProtocolId, sockaddr_in &data,
108
 
                        sockaddr_in &rtcp);
109
 
        bool RegisterUDPAudioClient1(uint32_t rtspProtocolId, sockaddr_in &data,
110
 
                        sockaddr_in &rtcp);
111
 
        void UnRegisterClient(uint32_t protocolId);
112
 
        bool HasClients();
 
127
        bool RegisterUDPVideoClient(uint32_t rtspProtocolId, sockaddr_in &data,
 
128
                        sockaddr_in &rtcp);
 
129
        bool RegisterUDPAudioClient(uint32_t rtspProtocolId, sockaddr_in &data,
 
130
                        sockaddr_in &rtcp);
 
131
        bool RegisterTCPVideoClient(uint32_t rtspProtocolId, uint8_t data, uint8_t rtcp);
 
132
        bool RegisterTCPAudioClient(uint32_t rtspProtocolId, uint8_t data, uint8_t rtcp);
113
133
        void SignalDetachedFromInStream();
114
 
        bool FeedVideoData(uint8_t *pBuffer, uint32_t length, double absoluteTimestamp);
115
 
        bool FeedAudioData(uint8_t *pBuffer, uint32_t length, double absoluteTimestamp);
116
 
        bool FeedVideoData(msghdr &message, double absoluteTimestamp);
117
 
        bool FeedAudioData(msghdr &message, double absoluteTimestamp);
 
134
        bool FeedVideoData(MSGHDR &message, double absoluteTimestamp);
 
135
        bool FeedAudioData(MSGHDR &message, double absoluteTimestamp);
118
136
private:
119
137
        bool InitializePorts(int32_t &dataFd, uint16_t &dataPort,
120
 
                        int32_t &RTCPFd, uint16_t &RTCPPort);
121
 
        bool FeedDataUDP(msghdr &message, double absoluteTimestamp, bool isAudio);
122
 
        bool FeedDataTCP(msghdr &message, double absoluteTimestamp, bool isAudio);
 
138
                        NATTraversalProtocol **ppNATData, int32_t &RTCPFd, uint16_t &RTCPPort,
 
139
                        NATTraversalProtocol **ppNATRTCP);
 
140
        bool FeedData(MSGHDR &message, double absoluteTimestamp, bool isAudio);
123
141
};
124
142
 
125
143