1b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org/* 2b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 3b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * 4b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * Use of this source code is governed by a BSD-style license 5b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * that can be found in the LICENSE file in the root of the source 6b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * tree. An additional intellectual property rights grant can be found 7b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * in the file PATENTS. All contributing project authors may 8b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org * be found in the AUTHORS file in the root of the source tree. 9b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org */ 10b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 11b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#ifndef WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_RTCP_IMPL_H_ 12b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#define WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_RTCP_IMPL_H_ 13b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 14b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org#include <list> 15937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org#include <vector> 16b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 17937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org#include "webrtc/modules/rtp_rtcp/interface/rtp_rtcp.h" 18937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org#include "webrtc/modules/rtp_rtcp/source/rtcp_receiver.h" 19937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org#include "webrtc/modules/rtp_rtcp/source/rtcp_sender.h" 20937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org#include "webrtc/modules/rtp_rtcp/source/rtp_sender.h" 21937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org#include "webrtc/system_wrappers/interface/scoped_ptr.h" 22c4af4cf7814bb773d838aefa476c196e5f1bc360asapersson@webrtc.org#include "webrtc/test/testsupport/gtest_prod_util.h" 23b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 24b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgnamespace webrtc { 25b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 26b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.orgclass ModuleRtpRtcpImpl : public RtpRtcp { 27b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org public: 28937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org explicit ModuleRtpRtcpImpl(const RtpRtcp::Configuration& configuration); 29b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 30937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org virtual ~ModuleRtpRtcpImpl(); 31b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 32937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Returns the number of milliseconds until the module want a worker thread to 33937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // call Process. 349d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t TimeUntilNextProcess() OVERRIDE; 35b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 36937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Process any pending tasks such as timeouts. 379d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t Process() OVERRIDE; 38b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 39937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Receiver part. 40b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 416696fba9388a386f7d0e3e0d93df48d43f05cd95stefan@webrtc.org // Called when we receive an RTCP packet. 426696fba9388a386f7d0e3e0d93df48d43f05cd95stefan@webrtc.org virtual int32_t IncomingRtcpPacket(const uint8_t* incoming_packet, 439d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org uint16_t incoming_packet_length) OVERRIDE; 44b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 456b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org virtual void SetRemoteSSRC(const uint32_t ssrc) OVERRIDE; 467fc75bbb65cc1cd99fdf45d9fce44bcce1396dfawu@webrtc.org 47937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Sender part. 48b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 499d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t RegisterSendPayload(const CodecInst& voice_codec) OVERRIDE; 50b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 519d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t RegisterSendPayload(const VideoCodec& video_codec) OVERRIDE; 52b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 539d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t DeRegisterSendPayload(const int8_t payload_type) OVERRIDE; 54b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 556b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org int8_t SendPayloadType() const; 56b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 57937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Register RTP header extension. 58b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t RegisterSendRtpHeaderExtension( 59937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org const RTPExtensionType type, 609d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const uint8_t id) OVERRIDE; 61b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 62b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t DeregisterSendRtpHeaderExtension( 639d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const RTPExtensionType type) OVERRIDE; 64b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 65937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Get start timestamp. 669d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual uint32_t StartTimestamp() const OVERRIDE; 67b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 68937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Configure start timestamp, default is a random number. 699d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetStartTimestamp(const uint32_t timestamp) OVERRIDE; 70b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 719d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual uint16_t SequenceNumber() const OVERRIDE; 72b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 73937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Set SequenceNumber, default is a random number. 749d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetSequenceNumber(const uint16_t seq) OVERRIDE; 75b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 762fd91bd35094b909b4b3cce636454426fc893ac2pbos@webrtc.org virtual void SetRtpStateForSsrc(uint32_t ssrc, 772fd91bd35094b909b4b3cce636454426fc893ac2pbos@webrtc.org const RtpState& rtp_state) OVERRIDE; 782fd91bd35094b909b4b3cce636454426fc893ac2pbos@webrtc.org virtual bool GetRtpStateForSsrc(uint32_t ssrc, RtpState* rtp_state) OVERRIDE; 792fd91bd35094b909b4b3cce636454426fc893ac2pbos@webrtc.org 809d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual uint32_t SSRC() const OVERRIDE; 81b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 82937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Configure SSRC, default is a random number. 83903e746cc9a73da17bfa3f6110293582fa6ee3bestefan@webrtc.org virtual void SetSSRC(const uint32_t ssrc) OVERRIDE; 84b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 859d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t CSRCs(uint32_t arr_of_csrc[kRtpCsrcSize]) const OVERRIDE; 86b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 87b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SetCSRCs(const uint32_t arr_of_csrc[kRtpCsrcSize], 889d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const uint8_t arr_length) OVERRIDE; 89b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 909d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetCSRCStatus(const bool include) OVERRIDE; 91b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 926b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org RTCPSender::FeedbackState GetFeedbackState(); 93b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 946b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org int CurrentSendFrequencyHz() const; 95b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 96903e746cc9a73da17bfa3f6110293582fa6ee3bestefan@webrtc.org virtual void SetRTXSendStatus(const int mode) OVERRIDE; 97b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 98903e746cc9a73da17bfa3f6110293582fa6ee3bestefan@webrtc.org virtual void RTXSendStatus(int* mode, uint32_t* ssrc, 99903e746cc9a73da17bfa3f6110293582fa6ee3bestefan@webrtc.org int* payloadType) const OVERRIDE; 1007bc7e02c4aadc8acb8fdc35a555a0cb33e566b16mflodman@webrtc.org 101903e746cc9a73da17bfa3f6110293582fa6ee3bestefan@webrtc.org virtual void SetRtxSsrc(uint32_t ssrc) OVERRIDE; 1027bc7e02c4aadc8acb8fdc35a555a0cb33e566b16mflodman@webrtc.org 1039d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual void SetRtxSendPayloadType(int payload_type) OVERRIDE; 104b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 105937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Sends kRtcpByeCode when going from true to false. 1069d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetSendingStatus(const bool sending) OVERRIDE; 107b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1089d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual bool Sending() const OVERRIDE; 109b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 110937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Drops or relays media packets. 1119d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetSendingMediaStatus(const bool sending) OVERRIDE; 112b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1139d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual bool SendingMedia() const OVERRIDE; 114b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 115937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Used by the codec module to deliver a video or audio frame for 116937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // packetization. 117b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SendOutgoingData( 118937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org const FrameType frame_type, 119b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org const int8_t payload_type, 120b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org const uint32_t time_stamp, 121937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org int64_t capture_time_ms, 122b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org const uint8_t* payload_data, 123b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org const uint32_t payload_size, 124937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org const RTPFragmentationHeader* fragmentation = NULL, 1259d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const RTPVideoHeader* rtp_video_hdr = NULL) OVERRIDE; 126b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 127b748c9d2022042b2cc04eaf89052945ba7149ba6stefan@webrtc.org virtual bool TimeToSendPacket(uint32_t ssrc, 128b748c9d2022042b2cc04eaf89052945ba7149ba6stefan@webrtc.org uint16_t sequence_number, 129b748c9d2022042b2cc04eaf89052945ba7149ba6stefan@webrtc.org int64_t capture_time_ms, 130b748c9d2022042b2cc04eaf89052945ba7149ba6stefan@webrtc.org bool retransmission) OVERRIDE; 13169f76054f5dc242b313e7e0642c8657a885682bastefan@webrtc.org // Returns the number of padding bytes actually sent, which can be more or 13269f76054f5dc242b313e7e0642c8657a885682bastefan@webrtc.org // less than |bytes|. 1339d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int TimeToSendPadding(int bytes) OVERRIDE; 134ee234be7908840221b78e6489d42ea792d4ce87dstefan@webrtc.org 135ee234be7908840221b78e6489d42ea792d4ce87dstefan@webrtc.org virtual bool GetSendSideDelay(int* avg_send_delay_ms, 136ee234be7908840221b78e6489d42ea792d4ce87dstefan@webrtc.org int* max_send_delay_ms) const OVERRIDE; 137ee234be7908840221b78e6489d42ea792d4ce87dstefan@webrtc.org 138937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // RTCP part. 139b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 140937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Get RTCP status. 1419d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual RTCPMethod RTCP() const OVERRIDE; 142b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 143937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Configure RTCP status i.e on/off. 1449d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetRTCPStatus(const RTCPMethod method) OVERRIDE; 145b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 146937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Set RTCP CName. 1479d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetCNAME(const char c_name[RTCP_CNAME_SIZE]) OVERRIDE; 148b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 149937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Get remote CName. 150b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t RemoteCNAME(const uint32_t remote_ssrc, 1519d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org char c_name[RTCP_CNAME_SIZE]) const OVERRIDE; 152b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 153937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Get remote NTP. 154b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t RemoteNTP(uint32_t* received_ntp_secs, 155b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint32_t* received_ntp_frac, 156b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint32_t* rtcp_arrival_time_secs, 157b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint32_t* rtcp_arrival_time_frac, 1589d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org uint32_t* rtcp_timestamp) const OVERRIDE; 159b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 160b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t AddMixedCNAME(const uint32_t ssrc, 1619d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const char c_name[RTCP_CNAME_SIZE]) OVERRIDE; 162b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1639d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t RemoveMixedCNAME(const uint32_t ssrc) OVERRIDE; 164b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 165937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Get RoundTripTime. 166b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t RTT(const uint32_t remote_ssrc, 167b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint16_t* rtt, 168b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint16_t* avg_rtt, 169b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint16_t* min_rtt, 1709d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org uint16_t* max_rtt) const OVERRIDE; 17178696d33d7711eb8208400908237c384b235bf74mflodman@webrtc.org 172937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Reset RoundTripTime statistics. 1739d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t ResetRTT(const uint32_t remote_ssrc) OVERRIDE; 174b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 175937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Force a send of an RTCP packet. 176937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Normal SR and RR are triggered via the process function. 1779d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SendRTCP(uint32_t rtcp_packet_type = kRtcpReport) OVERRIDE; 178b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1799d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t ResetSendDataCountersRTP() OVERRIDE; 180b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 181937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Statistics of the amount of data sent and received. 182b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t DataCountersRTP(uint32_t* bytes_sent, 1837fc75bbb65cc1cd99fdf45d9fce44bcce1396dfawu@webrtc.org uint32_t* packets_sent) const OVERRIDE; 184b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 185937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Get received RTCP report, sender info. 1869d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t RemoteRTCPStat(RTCPSenderInfo* sender_info) OVERRIDE; 187b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 188937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Get received RTCP report, report block. 189b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t RemoteRTCPStat( 1909d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org std::vector<RTCPReportBlock>* receive_blocks) const OVERRIDE; 191b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 192937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Set received RTCP report block. 193b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t AddRTCPReportBlock( 1944a1556017653ef7702585897b071872e83bd95b9asapersson@webrtc.org const uint32_t ssrc, const RTCPReportBlock* receive_block) OVERRIDE; 195b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1969d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t RemoveRTCPReportBlock(const uint32_t ssrc) OVERRIDE; 197b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 1984a1556017653ef7702585897b071872e83bd95b9asapersson@webrtc.org virtual void GetRtcpPacketTypeCounters( 1994a1556017653ef7702585897b071872e83bd95b9asapersson@webrtc.org RtcpPacketTypeCounter* packets_sent, 2004a1556017653ef7702585897b071872e83bd95b9asapersson@webrtc.org RtcpPacketTypeCounter* packets_received) const OVERRIDE; 2014a1556017653ef7702585897b071872e83bd95b9asapersson@webrtc.org 202937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // (REMB) Receiver Estimated Max Bitrate. 2039d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual bool REMB() const OVERRIDE; 204b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2059d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetREMBStatus(const bool enable) OVERRIDE; 206b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 207b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SetREMBData(const uint32_t bitrate, 208b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org const uint8_t number_of_ssrc, 2099d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const uint32_t* ssrc) OVERRIDE; 210b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 211937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // (IJ) Extended jitter report. 2129d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual bool IJ() const OVERRIDE; 213b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2149d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetIJStatus(const bool enable) OVERRIDE; 215b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 216937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // (TMMBR) Temporary Max Media Bit Rate. 2179d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual bool TMMBR() const OVERRIDE; 218b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2199d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetTMMBRStatus(const bool enable) OVERRIDE; 220b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 221b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org int32_t SetTMMBN(const TMMBRSet* bounding_set); 222b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2239d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual uint16_t MaxPayloadLength() const OVERRIDE; 224b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2259d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual uint16_t MaxDataPayloadLength() const OVERRIDE; 226b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2279d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetMaxTransferUnit(const uint16_t size) OVERRIDE; 228b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 229b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SetTransportOverhead( 230937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org const bool tcp, 231937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org const bool ipv6, 2329d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const uint8_t authentication_overhead = 0) OVERRIDE; 233b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 234937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // (NACK) Negative acknowledgment part. 235b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2369d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int SelectiveRetransmissions() const OVERRIDE; 237b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2389d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int SetSelectiveRetransmissions(uint8_t settings) OVERRIDE; 239b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 240937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Send a Negative acknowledgment packet. 2419d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SendNACK(const uint16_t* nack_list, 2429d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const uint16_t size) OVERRIDE; 243b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 244937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Store the sent packets, needed to answer to a negative acknowledgment 245937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // requests. 246b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SetStorePacketsStatus( 2479d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const bool enable, const uint16_t number_to_store) OVERRIDE; 248b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2497fc75bbb65cc1cd99fdf45d9fce44bcce1396dfawu@webrtc.org virtual bool StorePackets() const OVERRIDE; 2507fc75bbb65cc1cd99fdf45d9fce44bcce1396dfawu@webrtc.org 2519b30fd3991cf4fdbab0141e297c5b2e55fc65937sprang@webrtc.org // Called on receipt of RTCP report block from remote side. 2529b30fd3991cf4fdbab0141e297c5b2e55fc65937sprang@webrtc.org virtual void RegisterSendChannelRtcpStatisticsCallback( 2539b30fd3991cf4fdbab0141e297c5b2e55fc65937sprang@webrtc.org RtcpStatisticsCallback* callback) OVERRIDE; 2549b30fd3991cf4fdbab0141e297c5b2e55fc65937sprang@webrtc.org virtual RtcpStatisticsCallback* 2559b30fd3991cf4fdbab0141e297c5b2e55fc65937sprang@webrtc.org GetSendChannelRtcpStatisticsCallback() OVERRIDE; 2569b30fd3991cf4fdbab0141e297c5b2e55fc65937sprang@webrtc.org 257937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // (APP) Application specific data. 258b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SetRTCPApplicationSpecificData( 259b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org const uint8_t sub_type, 260b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org const uint32_t name, 261b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org const uint8_t* data, 2629d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const uint16_t length) OVERRIDE; 263b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 264937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // (XR) VOIP metric. 2659d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetRTCPVoIPMetrics(const RTCPVoIPMetric* VoIPMetric) OVERRIDE; 266b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 26772cc32a68bcb9b2aa32f751dc6d120716d220a10asapersson@webrtc.org // (XR) Receiver reference time report. 26872cc32a68bcb9b2aa32f751dc6d120716d220a10asapersson@webrtc.org virtual void SetRtcpXrRrtrStatus(bool enable) OVERRIDE; 26972cc32a68bcb9b2aa32f751dc6d120716d220a10asapersson@webrtc.org 2703dc7ff30185a2d7a597acb69183fca73bd1004d8asapersson@webrtc.org virtual bool RtcpXrRrtrStatus() const OVERRIDE; 2713dc7ff30185a2d7a597acb69183fca73bd1004d8asapersson@webrtc.org 272937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Audio part. 273b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 274937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Set audio packet size, used to determine when it's time to send a DTMF 275937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // packet in silence (CNG). 276b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SetAudioPacketSize( 2779d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const uint16_t packet_size_samples) OVERRIDE; 278b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 2799d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual bool SendTelephoneEventActive(int8_t& telephone_event) const OVERRIDE; 280937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org 281937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Send a TelephoneEvent tone using RFC 2833 (4733). 282b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SendTelephoneEventOutband(const uint8_t key, 283b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org const uint16_t time_ms, 2849d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const uint8_t level) OVERRIDE; 285b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 286937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Set payload type for Redundant Audio Data RFC 2198. 2879d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetSendREDPayloadType(const int8_t payload_type) OVERRIDE; 288937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org 289937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Get payload type for Redundant Audio Data RFC 2198. 2909d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SendREDPayloadType(int8_t& payload_type) const OVERRIDE; 291b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 292937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Store the audio level in d_bov for header-extension-for-audio-level- 293937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // indication. 2949d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetAudioLevel(const uint8_t level_d_bov) OVERRIDE; 295b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 296937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Video part. 297b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 298b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SendRTCPSliceLossIndication( 2999d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const uint8_t picture_id) OVERRIDE; 300b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 301937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Set method for requestion a new key frame. 302b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SetKeyFrameRequestMethod( 3039d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const KeyFrameRequestMethod method) OVERRIDE; 304b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 305937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Send a request for a keyframe. 3069d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t RequestKeyFrame() OVERRIDE; 307b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 3089d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org virtual int32_t SetCameraDelay(const int32_t delay_ms) OVERRIDE; 30973ebe67b3e6f0a65efed02efd4eee4dfb1b7729estefan@webrtc.org 3107dc17903111cf74bc28f45d87e595c628481f1acstefan@webrtc.org virtual void SetTargetSendBitrate( 3117dc17903111cf74bc28f45d87e595c628481f1acstefan@webrtc.org const std::vector<uint32_t>& stream_bitrates) OVERRIDE; 312b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 313b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SetGenericFECStatus( 314937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org const bool enable, 315b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org const uint8_t payload_type_red, 3169d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const uint8_t payload_type_fec) OVERRIDE; 317b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 318b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t GenericFECStatus( 319937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org bool& enable, 320b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint8_t& payload_type_red, 3219d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org uint8_t& payload_type_fec) OVERRIDE; 322b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 323b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SetFecParameters( 324937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org const FecProtectionParams* delta_params, 3259d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const FecProtectionParams* key_params) OVERRIDE; 326b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 3276b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org bool LastReceivedNTP(uint32_t* NTPsecs, 3286b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org uint32_t* NTPfrac, 3296b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org uint32_t* remote_sr) const; 330b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 3316b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org bool LastReceivedXrReferenceTimeInfo(RtcpReceiveTimeInfo* info) const; 332d6da239905c84110a7c90789df70238afd0f64b6asapersson@webrtc.org 333b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t BoundingSet(bool& tmmbr_owner, TMMBRSet*& bounding_set_rec); 334b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 335b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual void BitrateSent(uint32_t* total_rate, 336b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint32_t* video_rate, 337b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint32_t* fec_rate, 3389d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org uint32_t* nackRate) const OVERRIDE; 339b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 3406b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org uint32_t SendTimeOfSendReport(const uint32_t send_report); 341b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 3426b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org bool SendTimeOfXrRrReport(uint32_t mid_ntp, int64_t* time_ms) const; 343d6da239905c84110a7c90789df70238afd0f64b6asapersson@webrtc.org 344937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Good state of RTP receiver inform sender. 345b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org virtual int32_t SendRTCPReferencePictureSelection( 3469d71e286a6c8fa79d30fc6f55e0e6071de5d37e3pbos@webrtc.org const uint64_t picture_id) OVERRIDE; 347b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 348b113981639e341ed642be9ca74c22a83d2b33a28sprang@webrtc.org virtual void RegisterSendChannelRtpStatisticsCallback( 3496b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org StreamDataCountersCallback* callback) OVERRIDE; 350b113981639e341ed642be9ca74c22a83d2b33a28sprang@webrtc.org virtual StreamDataCountersCallback* 3516b0dab1b84bb8b6cccd9cffa15067099c1fcfa51henrik.lundin@webrtc.org GetSendChannelRtpStatisticsCallback() const OVERRIDE; 352b113981639e341ed642be9ca74c22a83d2b33a28sprang@webrtc.org 353937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org void OnReceivedTMMBR(); 354b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 355937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Bad state of RTP receiver request a keyframe. 356937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org void OnRequestIntraFrame(); 357b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 358937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Received a request for a new SLI. 359b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org void OnReceivedSliceLossIndication(const uint8_t picture_id); 360b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 361937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Received a new reference frame. 362937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org void OnReceivedReferencePictureSelectionIndication( 363b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org const uint64_t picture_id); 364b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 3657fff32c808707eb6810d1057747069d7afce9939stefan@webrtc.org void OnReceivedNACK(const std::list<uint16_t>& nack_sequence_numbers); 366b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 367937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org void OnRequestSendReport(); 368b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 369937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org protected: 370937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org void RegisterChildModule(RtpRtcp* module); 371b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 372937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org void DeRegisterChildModule(RtpRtcp* module); 373b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 374937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org bool UpdateRTCPReceiveInformationTimers(); 375b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 376b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint32_t BitrateReceivedNow() const; 377b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 378937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Get remote SequenceNumber. 379b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint16_t RemoteSequenceNumber() const; 380b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 381937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Only for internal testing. 382b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint32_t LastSendReport(uint32_t& last_rtcptime); 383b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 384937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org RTPSender rtp_sender_; 385b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 386937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org RTCPSender rtcp_sender_; 387937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org RTCPReceiver rtcp_receiver_; 388b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 3891bb2146351979b6610107419b2a9c86cca2692a3stefan@webrtc.org Clock* clock_; 3908e9767d9395e565a363fbe30b2bcea596f8df36cmflodman@webrtc.org 391937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org private: 3925041831648212bfd5b68e91e1ff39e2b420f679easapersson@webrtc.org FRIEND_TEST_ALL_PREFIXES(RtpRtcpImplTest, Rtt); 393c4af4cf7814bb773d838aefa476c196e5f1bc360asapersson@webrtc.org FRIEND_TEST_ALL_PREFIXES(RtpRtcpImplTest, RttForReceiverOnly); 394937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org int64_t RtcpReportInterval(); 3957485573a0f9547055f66584680e10909c6906017stefan@webrtc.org void SetRtcpReceiverSsrcs(uint32_t main_ssrc); 396b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 397c4af4cf7814bb773d838aefa476c196e5f1bc360asapersson@webrtc.org void set_rtt_ms(uint32_t rtt_ms); 398c4af4cf7814bb773d838aefa476c196e5f1bc360asapersson@webrtc.org uint32_t rtt_ms() const; 399c4af4cf7814bb773d838aefa476c196e5f1bc360asapersson@webrtc.org 400202d38d3640f5fde06d192924585672acdea3192mflodman@webrtc.org bool IsDefaultModule() const; 401202d38d3640f5fde06d192924585672acdea3192mflodman@webrtc.org 402b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org int32_t id_; 403937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org const bool audio_; 404937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org bool collision_detected_; 405b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org int64_t last_process_time_; 406b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org int64_t last_bitrate_process_time_; 407b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org int64_t last_rtt_process_time_; 408b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint16_t packet_overhead_; 409b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 410937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org scoped_ptr<CriticalSectionWrapper> critical_section_module_ptrs_; 411937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org scoped_ptr<CriticalSectionWrapper> critical_section_module_ptrs_feedback_; 412937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org ModuleRtpRtcpImpl* default_module_; 4137e87822cf6f75bb60c3d47cfb7d76c98b0ad6d6astefan@webrtc.org std::vector<ModuleRtpRtcpImpl*> child_modules_; 4147e87822cf6f75bb60c3d47cfb7d76c98b0ad6d6astefan@webrtc.org size_t padding_index_; 415b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 416937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org // Send side 417937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org NACKMethod nack_method_; 418b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint32_t nack_last_time_sent_full_; 419b57da6501f9db93536f51f7a64abf27306a7af04pbos@webrtc.org uint16_t nack_last_seq_number_sent_; 420b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 421937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org bool simulcast_; 422937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org VideoCodec send_video_codec_; 423937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org KeyFrameRequestMethod key_frame_req_method_; 424b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org 425937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org RemoteBitrateEstimator* remote_bitrate_; 426937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org 427c4af4cf7814bb773d838aefa476c196e5f1bc360asapersson@webrtc.org RtcpRttStats* rtt_stats_; 428c4af4cf7814bb773d838aefa476c196e5f1bc360asapersson@webrtc.org 429c4af4cf7814bb773d838aefa476c196e5f1bc360asapersson@webrtc.org // The processed RTT from RtcpRttStats. 430c4af4cf7814bb773d838aefa476c196e5f1bc360asapersson@webrtc.org scoped_ptr<CriticalSectionWrapper> critical_section_rtt_; 431c4af4cf7814bb773d838aefa476c196e5f1bc360asapersson@webrtc.org uint32_t rtt_ms_; 432b015cbede88899f67a53fbbe581b02ce8e32794andrew@webrtc.org}; 433937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org 434937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org} // namespace webrtc 435937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org 436937634675cd05832ef69c6e376f36b413ef13bcaphoglund@webrtc.org#endif // WEBRTC_MODULES_RTP_RTCP_SOURCE_RTP_RTCP_IMPL_H_ 437