Index: webrtc/modules/rtp_rtcp/source/rtcp_sender.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtcp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtcp_sender.cc |
index 4b0914d47d290eed663e4c4b37a867a7c209a115..88ada8d9574e2f29e7011133131173c3c8530c49 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtcp_sender.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtcp_sender.cc |
@@ -20,6 +20,8 @@ |
#include "webrtc/base/checks.h" |
#include "webrtc/base/logging.h" |
#include "webrtc/base/trace_event.h" |
+#include "webrtc/call.h" |
+#include "webrtc/call/rtc_event_log.h" |
#include "webrtc/common_types.h" |
#include "webrtc/modules/rtp_rtcp/source/byte_io.h" |
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/app.h" |
@@ -89,16 +91,21 @@ RTCPSender::FeedbackState::FeedbackState() |
class PacketContainer : public rtcp::CompoundPacket, |
public rtcp::RtcpPacket::PacketReadyCallback { |
public: |
- explicit PacketContainer(Transport* transport) |
- : transport_(transport), bytes_sent_(0) {} |
+ PacketContainer(Transport* transport, RtcEventLog* event_log) |
+ : transport_(transport), event_log_(event_log), bytes_sent_(0) {} |
virtual ~PacketContainer() { |
for (RtcpPacket* packet : appended_packets_) |
delete packet; |
} |
void OnPacketReady(uint8_t* data, size_t length) override { |
- if (transport_->SendRtcp(data, length)) |
+ if (transport_->SendRtcp(data, length)) { |
bytes_sent_ += length; |
+ if (event_log_) { |
+ event_log_->LogRtcpPacket(kOutgoingPacket, MediaType::ANY, data, |
+ length); |
+ } |
+ } |
} |
size_t SendPackets() { |
@@ -108,7 +115,10 @@ class PacketContainer : public rtcp::CompoundPacket, |
private: |
Transport* transport_; |
+ RtcEventLog* const event_log_; |
size_t bytes_sent_; |
+ |
+ RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(PacketContainer); |
}; |
class RTCPSender::RtcpContext { |
@@ -148,11 +158,13 @@ RTCPSender::RTCPSender( |
Clock* clock, |
ReceiveStatistics* receive_statistics, |
RtcpPacketTypeCounterObserver* packet_type_counter_observer, |
+ RtcEventLog* event_log, |
Transport* outgoing_transport) |
: audio_(audio), |
clock_(clock), |
random_(clock_->TimeInMicroseconds()), |
method_(RtcpMode::kOff), |
+ event_log_(event_log), |
transport_(outgoing_transport), |
critical_section_rtcp_sender_( |
@@ -805,7 +817,7 @@ int32_t RTCPSender::SendCompoundRTCP( |
const uint16_t* nack_list, |
bool repeat, |
uint64_t pictureID) { |
- PacketContainer container(transport_); |
+ PacketContainer container(transport_, event_log_); |
{ |
CriticalSectionScoped lock(critical_section_rtcp_sender_.get()); |
if (method_ == RtcpMode::kOff) { |
@@ -1047,17 +1059,27 @@ bool RTCPSender::AllVolatileFlagsConsumed() const { |
bool RTCPSender::SendFeedbackPacket(const rtcp::TransportFeedback& packet) { |
class Sender : public rtcp::RtcpPacket::PacketReadyCallback { |
public: |
- explicit Sender(Transport* transport) |
- : transport_(transport), send_failure_(false) {} |
+ Sender(Transport* transport, RtcEventLog* event_log) |
+ : transport_(transport), event_log_(event_log), send_failure_(false) {} |
void OnPacketReady(uint8_t* data, size_t length) override { |
- if (!transport_->SendRtcp(data, length)) |
+ if (transport_->SendRtcp(data, length)) { |
+ if (event_log_) { |
+ event_log_->LogRtcpPacket(kOutgoingPacket, MediaType::ANY, data, |
+ length); |
+ } |
+ } else { |
send_failure_ = true; |
+ } |
} |
Transport* const transport_; |
+ RtcEventLog* const event_log_; |
bool send_failure_; |
- } sender(transport_); |
+ // TODO(terelius): We would like to |
+ // RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(Sender); |
+ // but we can't because of an incorrect warning (C4822) in MVS 2013. |
+ } sender(transport_, event_log_); |
uint8_t buffer[IP_PACKET_SIZE]; |
return packet.BuildExternalBuffer(buffer, IP_PACKET_SIZE, &sender) && |