andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. |
| 3 | * |
| 4 | * Use of this source code is governed by a BSD-style license |
| 5 | * that can be found in the LICENSE file in the root of the source |
| 6 | * tree. An additional intellectual property rights grant can be found |
| 7 | * in the file PATENTS. All contributing project authors may |
| 8 | * be found in the AUTHORS file in the root of the source tree. |
| 9 | */ |
| 10 | |
| 11 | #ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_RTCP_IMPL_H_ |
| 12 | #define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_RTCP_IMPL_H_ |
| 13 | |
| 14 | #include <list> |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 15 | #include <vector> |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 16 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 17 | #include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp.h" |
| 18 | #include "webrtc/modules/rtp_rtcp/source/rtcp_receiver.h" |
| 19 | #include "webrtc/modules/rtp_rtcp/source/rtcp_sender.h" |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 20 | #include "webrtc/modules/rtp_rtcp/source/rtp_sender.h" |
| 21 | #include "webrtc/system_wrappers/interface/scoped_ptr.h" |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 22 | |
| 23 | #ifdef MATLAB |
| 24 | class MatlabPlot; |
| 25 | #endif |
| 26 | |
| 27 | namespace webrtc { |
| 28 | |
| 29 | class ModuleRtpRtcpImpl : public RtpRtcp { |
| 30 | public: |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 31 | explicit ModuleRtpRtcpImpl(const RtpRtcp::Configuration& configuration); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 32 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 33 | virtual ~ModuleRtpRtcpImpl(); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 34 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 35 | // Returns the number of milliseconds until the module want a worker thread to |
| 36 | // call Process. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 37 | virtual int32_t TimeUntilNextProcess(); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 38 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 39 | // Process any pending tasks such as timeouts. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 40 | virtual int32_t Process(); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 41 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 42 | // Receiver part. |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 43 | |
stefan@webrtc.org | 6696fba | 2013-05-29 12:12:51 +0000 | [diff] [blame] | 44 | // Called when we receive an RTCP packet. |
| 45 | virtual int32_t IncomingRtcpPacket(const uint8_t* incoming_packet, |
| 46 | uint16_t incoming_packet_length); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 47 | |
stefan@webrtc.org | a32d18f | 2013-07-05 14:30:48 +0000 | [diff] [blame] | 48 | virtual void SetRemoteSSRC(const uint32_t ssrc); |
| 49 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 50 | // Sender part. |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 51 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 52 | virtual int32_t RegisterSendPayload(const CodecInst& voice_codec); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 53 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 54 | virtual int32_t RegisterSendPayload(const VideoCodec& video_codec); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 55 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 56 | virtual int32_t DeRegisterSendPayload(const int8_t payload_type); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 57 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 58 | virtual int8_t SendPayloadType() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 59 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 60 | // Register RTP header extension. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 61 | virtual int32_t RegisterSendRtpHeaderExtension( |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 62 | const RTPExtensionType type, |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 63 | const uint8_t id); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 64 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 65 | virtual int32_t DeregisterSendRtpHeaderExtension( |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 66 | const RTPExtensionType type); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 67 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 68 | // Get start timestamp. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 69 | virtual uint32_t StartTimestamp() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 70 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 71 | // Configure start timestamp, default is a random number. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 72 | virtual int32_t SetStartTimestamp(const uint32_t timestamp); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 73 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 74 | virtual uint16_t SequenceNumber() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 75 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 76 | // Set SequenceNumber, default is a random number. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 77 | virtual int32_t SetSequenceNumber(const uint16_t seq); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 78 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 79 | virtual uint32_t SSRC() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 80 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 81 | // Configure SSRC, default is a random number. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 82 | virtual int32_t SetSSRC(const uint32_t ssrc); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 83 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 84 | virtual int32_t CSRCs(uint32_t arr_of_csrc[kRtpCsrcSize]) const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 85 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 86 | virtual int32_t SetCSRCs(const uint32_t arr_of_csrc[kRtpCsrcSize], |
| 87 | const uint8_t arr_length); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 88 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 89 | virtual int32_t SetCSRCStatus(const bool include); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 90 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 91 | virtual uint32_t PacketCountSent() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 92 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 93 | virtual int CurrentSendFrequencyHz() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 94 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 95 | virtual uint32_t ByteCountSent() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 96 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 97 | virtual int32_t SetRTXSendStatus(const RtxMode mode, |
| 98 | const bool set_ssrc, |
| 99 | const uint32_t ssrc); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 100 | |
mflodman@webrtc.org | 7bc7e02 | 2013-04-12 14:55:46 +0000 | [diff] [blame] | 101 | virtual int32_t RTXSendStatus(RtxMode* mode, uint32_t* ssrc, |
| 102 | int* payloadType) const; |
| 103 | |
| 104 | |
| 105 | virtual void SetRtxSendPayloadType(int payload_type); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 106 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 107 | // Sends kRtcpByeCode when going from true to false. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 108 | virtual int32_t SetSendingStatus(const bool sending); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 109 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 110 | virtual bool Sending() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 111 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 112 | // Drops or relays media packets. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 113 | virtual int32_t SetSendingMediaStatus(const bool sending); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 114 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 115 | virtual bool SendingMedia() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 116 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 117 | // Used by the codec module to deliver a video or audio frame for |
| 118 | // packetization. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 119 | virtual int32_t SendOutgoingData( |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 120 | const FrameType frame_type, |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 121 | const int8_t payload_type, |
| 122 | const uint32_t time_stamp, |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 123 | int64_t capture_time_ms, |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 124 | const uint8_t* payload_data, |
| 125 | const uint32_t payload_size, |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 126 | const RTPFragmentationHeader* fragmentation = NULL, |
| 127 | const RTPVideoHeader* rtp_video_hdr = NULL); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 128 | |
hclam@chromium.org | 0f6f7cb | 2013-06-20 20:18:31 +0000 | [diff] [blame] | 129 | virtual bool TimeToSendPacket(uint32_t ssrc, uint16_t sequence_number, |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 130 | int64_t capture_time_ms); |
stefan@webrtc.org | 69f7605 | 2013-06-17 12:53:37 +0000 | [diff] [blame] | 131 | // Returns the number of padding bytes actually sent, which can be more or |
| 132 | // less than |bytes|. |
| 133 | virtual int TimeToSendPadding(int bytes); |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 134 | // RTCP part. |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 135 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 136 | // Get RTCP status. |
| 137 | virtual RTCPMethod RTCP() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 138 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 139 | // Configure RTCP status i.e on/off. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 140 | virtual int32_t SetRTCPStatus(const RTCPMethod method); |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 141 | |
| 142 | // Set RTCP CName. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 143 | virtual int32_t SetCNAME(const char c_name[RTCP_CNAME_SIZE]); |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 144 | |
| 145 | // Get RTCP CName. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 146 | virtual int32_t CNAME(char c_name[RTCP_CNAME_SIZE]); |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 147 | |
| 148 | // Get remote CName. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 149 | virtual int32_t RemoteCNAME(const uint32_t remote_ssrc, |
| 150 | char c_name[RTCP_CNAME_SIZE]) const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 151 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 152 | // Get remote NTP. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 153 | virtual int32_t RemoteNTP(uint32_t* received_ntp_secs, |
| 154 | uint32_t* received_ntp_frac, |
| 155 | uint32_t* rtcp_arrival_time_secs, |
| 156 | uint32_t* rtcp_arrival_time_frac, |
| 157 | uint32_t* rtcp_timestamp) const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 158 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 159 | virtual int32_t AddMixedCNAME(const uint32_t ssrc, |
| 160 | const char c_name[RTCP_CNAME_SIZE]); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 161 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 162 | virtual int32_t RemoveMixedCNAME(const uint32_t ssrc); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 163 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 164 | // Get RoundTripTime. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 165 | virtual int32_t RTT(const uint32_t remote_ssrc, |
| 166 | uint16_t* rtt, |
| 167 | uint16_t* avg_rtt, |
| 168 | uint16_t* min_rtt, |
| 169 | uint16_t* max_rtt) const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 170 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 171 | // Reset RoundTripTime statistics. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 172 | virtual int32_t ResetRTT(const uint32_t remote_ssrc); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 173 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 174 | virtual void SetRtt(uint32_t rtt); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 175 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 176 | // Force a send of an RTCP packet. |
| 177 | // Normal SR and RR are triggered via the process function. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 178 | virtual int32_t SendRTCP(uint32_t rtcp_packet_type = kRtcpReport); |
mflodman@webrtc.org | 78696d3 | 2012-11-26 12:40:15 +0000 | [diff] [blame] | 179 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 180 | virtual int32_t ResetSendDataCountersRTP(); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 181 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 182 | // Statistics of the amount of data sent and received. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 183 | virtual int32_t DataCountersRTP(uint32_t* bytes_sent, |
stefan@webrtc.org | a32d18f | 2013-07-05 14:30:48 +0000 | [diff] [blame] | 184 | uint32_t* packets_sent) const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 185 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 186 | // Get received RTCP report, sender info. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 187 | virtual int32_t RemoteRTCPStat(RTCPSenderInfo* sender_info); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 188 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 189 | // Get received RTCP report, report block. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 190 | virtual int32_t RemoteRTCPStat( |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 191 | std::vector<RTCPReportBlock>* receive_blocks) const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 192 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 193 | // Set received RTCP report block. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 194 | virtual int32_t AddRTCPReportBlock( |
| 195 | const uint32_t ssrc, const RTCPReportBlock* receive_block); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 196 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 197 | virtual int32_t RemoveRTCPReportBlock(const uint32_t ssrc); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 198 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 199 | // (REMB) Receiver Estimated Max Bitrate. |
| 200 | virtual bool REMB() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 201 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 202 | virtual int32_t SetREMBStatus(const bool enable); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 203 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 204 | virtual int32_t SetREMBData(const uint32_t bitrate, |
| 205 | const uint8_t number_of_ssrc, |
| 206 | const uint32_t* ssrc); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 207 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 208 | // (IJ) Extended jitter report. |
| 209 | virtual bool IJ() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 210 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 211 | virtual int32_t SetIJStatus(const bool enable); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 212 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 213 | // (TMMBR) Temporary Max Media Bit Rate. |
| 214 | virtual bool TMMBR() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 215 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 216 | virtual int32_t SetTMMBRStatus(const bool enable); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 217 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 218 | int32_t SetTMMBN(const TMMBRSet* bounding_set); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 219 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 220 | virtual uint16_t MaxPayloadLength() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 221 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 222 | virtual uint16_t MaxDataPayloadLength() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 223 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 224 | virtual int32_t SetMaxTransferUnit(const uint16_t size); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 225 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 226 | virtual int32_t SetTransportOverhead( |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 227 | const bool tcp, |
| 228 | const bool ipv6, |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 229 | const uint8_t authentication_overhead = 0); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 230 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 231 | // (NACK) Negative acknowledgment part. |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 232 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 233 | virtual int SelectiveRetransmissions() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 234 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 235 | virtual int SetSelectiveRetransmissions(uint8_t settings); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 236 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 237 | // Send a Negative acknowledgment packet. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 238 | virtual int32_t SendNACK(const uint16_t* nack_list, const uint16_t size); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 239 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 240 | // Store the sent packets, needed to answer to a negative acknowledgment |
| 241 | // requests. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 242 | virtual int32_t SetStorePacketsStatus( |
| 243 | const bool enable, const uint16_t number_to_store); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 244 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 245 | // (APP) Application specific data. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 246 | virtual int32_t SetRTCPApplicationSpecificData( |
| 247 | const uint8_t sub_type, |
| 248 | const uint32_t name, |
| 249 | const uint8_t* data, |
| 250 | const uint16_t length); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 251 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 252 | // (XR) VOIP metric. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 253 | virtual int32_t SetRTCPVoIPMetrics(const RTCPVoIPMetric* VoIPMetric); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 254 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 255 | // Audio part. |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 256 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 257 | // Set audio packet size, used to determine when it's time to send a DTMF |
| 258 | // packet in silence (CNG). |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 259 | virtual int32_t SetAudioPacketSize( |
| 260 | const uint16_t packet_size_samples); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 261 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 262 | virtual bool SendTelephoneEventActive(int8_t& telephone_event) const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 263 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 264 | // Send a TelephoneEvent tone using RFC 2833 (4733). |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 265 | virtual int32_t SendTelephoneEventOutband(const uint8_t key, |
| 266 | const uint16_t time_ms, |
| 267 | const uint8_t level); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 268 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 269 | // Set payload type for Redundant Audio Data RFC 2198. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 270 | virtual int32_t SetSendREDPayloadType(const int8_t payload_type); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 271 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 272 | // Get payload type for Redundant Audio Data RFC 2198. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 273 | virtual int32_t SendREDPayloadType(int8_t& payload_type) const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 274 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 275 | // Set status and id for header-extension-for-audio-level-indication. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 276 | virtual int32_t SetRTPAudioLevelIndicationStatus( |
| 277 | const bool enable, const uint8_t id); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 278 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 279 | // Get status and id for header-extension-for-audio-level-indication. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 280 | virtual int32_t GetRTPAudioLevelIndicationStatus( |
| 281 | bool& enable, uint8_t& id) const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 282 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 283 | // Store the audio level in d_bov for header-extension-for-audio-level- |
| 284 | // indication. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 285 | virtual int32_t SetAudioLevel(const uint8_t level_d_bov); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 286 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 287 | // Video part. |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 288 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 289 | virtual RtpVideoCodecTypes SendVideoCodec() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 290 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 291 | virtual int32_t SendRTCPSliceLossIndication( |
| 292 | const uint8_t picture_id); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 293 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 294 | // Set method for requestion a new key frame. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 295 | virtual int32_t SetKeyFrameRequestMethod( |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 296 | const KeyFrameRequestMethod method); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 297 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 298 | // Send a request for a keyframe. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 299 | virtual int32_t RequestKeyFrame(); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 300 | |
stefan@webrtc.org | 73ebe67 | 2013-04-09 14:56:29 +0000 | [diff] [blame] | 301 | virtual int32_t SetCameraDelay(const int32_t delay_ms); |
| 302 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 303 | virtual void SetTargetSendBitrate(const uint32_t bitrate); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 304 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 305 | virtual int32_t SetGenericFECStatus( |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 306 | const bool enable, |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 307 | const uint8_t payload_type_red, |
| 308 | const uint8_t payload_type_fec); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 309 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 310 | virtual int32_t GenericFECStatus( |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 311 | bool& enable, |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 312 | uint8_t& payload_type_red, |
| 313 | uint8_t& payload_type_fec); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 314 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 315 | virtual int32_t SetFecParameters( |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 316 | const FecProtectionParams* delta_params, |
| 317 | const FecProtectionParams* key_params); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 318 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 319 | virtual int32_t LastReceivedNTP(uint32_t& NTPsecs, |
| 320 | uint32_t& NTPfrac, |
| 321 | uint32_t& remote_sr); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 322 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 323 | virtual int32_t BoundingSet(bool& tmmbr_owner, TMMBRSet*& bounding_set_rec); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 324 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 325 | virtual void BitrateSent(uint32_t* total_rate, |
| 326 | uint32_t* video_rate, |
| 327 | uint32_t* fec_rate, |
| 328 | uint32_t* nackRate) const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 329 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 330 | virtual uint32_t SendTimeOfSendReport(const uint32_t send_report); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 331 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 332 | // Good state of RTP receiver inform sender. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 333 | virtual int32_t SendRTCPReferencePictureSelection( |
| 334 | const uint64_t picture_id); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 335 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 336 | void OnReceivedTMMBR(); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 337 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 338 | // Bad state of RTP receiver request a keyframe. |
| 339 | void OnRequestIntraFrame(); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 340 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 341 | // Received a request for a new SLI. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 342 | void OnReceivedSliceLossIndication(const uint8_t picture_id); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 343 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 344 | // Received a new reference frame. |
| 345 | void OnReceivedReferencePictureSelectionIndication( |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 346 | const uint64_t picture_id); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 347 | |
stefan@webrtc.org | 7fff32c | 2013-02-01 15:09:57 +0000 | [diff] [blame] | 348 | void OnReceivedNACK(const std::list<uint16_t>& nack_sequence_numbers); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 349 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 350 | void OnRequestSendReport(); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 351 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 352 | protected: |
| 353 | void RegisterChildModule(RtpRtcp* module); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 354 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 355 | void DeRegisterChildModule(RtpRtcp* module); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 356 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 357 | bool UpdateRTCPReceiveInformationTimers(); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 358 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 359 | uint32_t BitrateReceivedNow() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 360 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 361 | // Get remote SequenceNumber. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 362 | uint16_t RemoteSequenceNumber() const; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 363 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 364 | // Only for internal testing. |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 365 | uint32_t LastSendReport(uint32_t& last_rtcptime); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 366 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 367 | RTPSender rtp_sender_; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 368 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 369 | RTCPSender rtcp_sender_; |
| 370 | RTCPReceiver rtcp_receiver_; |
mflodman@webrtc.org | 8e9767d | 2013-01-09 13:54:43 +0000 | [diff] [blame] | 371 | |
stefan@webrtc.org | 1bb2146 | 2013-01-21 07:42:11 +0000 | [diff] [blame] | 372 | Clock* clock_; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 373 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 374 | private: |
| 375 | int64_t RtcpReportInterval(); |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 376 | |
elham@webrtc.org | b89eed3 | 2013-07-15 21:08:27 +0000 | [diff] [blame^] | 377 | ReceiveStatistics* receive_statistics_; |
| 378 | |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 379 | int32_t id_; |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 380 | const bool audio_; |
| 381 | bool collision_detected_; |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 382 | int64_t last_process_time_; |
| 383 | int64_t last_bitrate_process_time_; |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 384 | int64_t last_rtt_process_time_; |
| 385 | uint16_t packet_overhead_; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 386 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 387 | scoped_ptr<CriticalSectionWrapper> critical_section_module_ptrs_; |
| 388 | scoped_ptr<CriticalSectionWrapper> critical_section_module_ptrs_feedback_; |
| 389 | ModuleRtpRtcpImpl* default_module_; |
| 390 | std::list<ModuleRtpRtcpImpl*> child_modules_; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 391 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 392 | // Send side |
| 393 | NACKMethod nack_method_; |
pbos@webrtc.org | b57da65 | 2013-04-08 11:08:41 +0000 | [diff] [blame] | 394 | uint32_t nack_last_time_sent_full_; |
| 395 | uint16_t nack_last_seq_number_sent_; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 396 | |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 397 | bool simulcast_; |
| 398 | VideoCodec send_video_codec_; |
| 399 | KeyFrameRequestMethod key_frame_req_method_; |
| 400 | |
| 401 | RemoteBitrateEstimator* remote_bitrate_; |
| 402 | |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 403 | #ifdef MATLAB |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 404 | MatlabPlot* plot1_; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 405 | #endif |
phoglund@webrtc.org | 7b1b258 | 2013-01-25 10:53:38 +0000 | [diff] [blame] | 406 | |
| 407 | RtcpRttObserver* rtt_observer_; |
andrew@webrtc.org | b015cbe | 2012-10-22 18:19:23 +0000 | [diff] [blame] | 408 | }; |
phoglund@webrtc.org | 9376346 | 2013-01-16 10:27:33 +0000 | [diff] [blame] | 409 | |
| 410 | } // namespace webrtc |
| 411 | |
| 412 | #endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_RTCP_IMPL_H_ |