Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1074)

Unified Diff: webrtc/modules/rtp_rtcp/source/rtcp_sender.cc

Issue 1571283002: Fixes a bug which incorrectly logs incoming RTCP as outgoing. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Added RTC_DISALLOW_IMPLICT_CONSTRUCTORS Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 a4f6f3923b87c5ff4c6eaaf172f8b1509b9b4bb1..6fe1e1f3308de168333e3f782f6dab541e99e45a 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"
@@ -79,16 +81,20 @@ RTCPSender::FeedbackState::FeedbackState()
class PacketContainer : public rtcp::Empty,
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(false, MediaType::ANY, data, length);
+ }
+ }
}
size_t SendPackets() {
@@ -98,7 +104,10 @@ class PacketContainer : public rtcp::Empty,
private:
Transport* transport_;
+ RtcEventLog* event_log_;
size_t bytes_sent_;
+
+ RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(PacketContainer);
};
class RTCPSender::RtcpContext {
@@ -138,11 +147,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_(
@@ -798,7 +809,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) {
@@ -1040,17 +1051,24 @@ 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(false, MediaType::ANY, data, length);
+ }
+ } else {
send_failure_ = true;
+ }
}
Transport* const transport_;
+ RtcEventLog* event_log_;
bool send_failure_;
- } sender(transport_);
+ RTC_DISALLOW_IMPLICIT_CONSTRUCTORS(Sender);
+ } sender(transport_, event_log_);
uint8_t buffer[IP_PACKET_SIZE];
return packet.BuildExternalBuffer(buffer, IP_PACKET_SIZE, &sender) &&

Powered by Google App Engine
This is Rietveld 408576698