Index: webrtc/modules/rtp_rtcp/source/rtp_sender.cc |
diff --git a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc |
index 19d53c5459d07450e19abae44297c1b60aa9c5a0..bd9314d5d768b6e2d30c5be2a4ef2287b9c35ef5 100644 |
--- a/webrtc/modules/rtp_rtcp/source/rtp_sender.cc |
+++ b/webrtc/modules/rtp_rtcp/source/rtp_sender.cc |
@@ -17,6 +17,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/modules/rtp_rtcp/include/rtp_cvo.h" |
#include "webrtc/modules/rtp_rtcp/source/byte_io.h" |
#include "webrtc/modules/rtp_rtcp/source/rtp_sender_audio.h" |
@@ -122,7 +124,8 @@ RTPSender::RTPSender( |
TransportFeedbackObserver* transport_feedback_observer, |
BitrateStatisticsObserver* bitrate_callback, |
FrameCountObserver* frame_count_observer, |
- SendSideDelayObserver* send_side_delay_observer) |
+ SendSideDelayObserver* send_side_delay_observer, |
+ RtcEventLog* event_log) |
: clock_(clock), |
// TODO(holmer): Remove this conversion when we remove the use of |
// TickTime. |
@@ -161,6 +164,7 @@ RTPSender::RTPSender( |
rtp_stats_callback_(NULL), |
frame_count_observer_(frame_count_observer), |
send_side_delay_observer_(send_side_delay_observer), |
+ event_log_(event_log), |
// RTP variables |
start_timestamp_forced_(false), |
start_timestamp_(0), |
@@ -755,6 +759,9 @@ bool RTPSender::SendPacketToNetwork(const uint8_t* packet, |
bytes_sent = transport_->SendRtp(packet, size, options) |
? static_cast<int>(size) |
: -1; |
+ if (event_log_ && bytes_sent > 0) { |
+ event_log_->LogRtpHeader(kOutgoingPacket, MediaType::ANY, packet, size); |
+ } |
} |
TRACE_EVENT_INSTANT2(TRACE_DISABLED_BY_DEFAULT("webrtc_rtp"), |
"RTPSender::SendPacketToNetwork", "size", size, "sent", |
@@ -1028,8 +1035,9 @@ int32_t RTPSender::SendToNetwork(uint8_t* buffer, |
int64_t capture_time_ms, |
StorageType storage, |
RtpPacketSender::Priority priority) { |
- RtpUtility::RtpHeaderParser rtp_parser(buffer, |
- payload_length + rtp_header_length); |
+ size_t length = payload_length + rtp_header_length; |
+ RtpUtility::RtpHeaderParser rtp_parser(buffer, length); |
+ |
RTPHeader rtp_header; |
rtp_parser.Parse(&rtp_header); |
@@ -1039,16 +1047,15 @@ int32_t RTPSender::SendToNetwork(uint8_t* buffer, |
// TODO(holmer): This should be changed all over Video Engine so that negative |
// time is consider invalid, while 0 is considered a valid time. |
if (capture_time_ms > 0) { |
- UpdateTransmissionTimeOffset(buffer, payload_length + rtp_header_length, |
- rtp_header, now_ms - capture_time_ms); |
+ UpdateTransmissionTimeOffset(buffer, length, rtp_header, |
+ now_ms - capture_time_ms); |
} |
- UpdateAbsoluteSendTime(buffer, payload_length + rtp_header_length, |
- rtp_header, now_ms); |
+ UpdateAbsoluteSendTime(buffer, length, rtp_header, now_ms); |
// Used for NACK and to spread out the transmission of packets. |
- if (packet_history_.PutRTPPacket(buffer, rtp_header_length + payload_length, |
- capture_time_ms, storage) != 0) { |
+ if (packet_history_.PutRTPPacket(buffer, length, capture_time_ms, storage) != |
+ 0) { |
return -1; |
} |
@@ -1072,7 +1079,6 @@ int32_t RTPSender::SendToNetwork(uint8_t* buffer, |
UpdateDelayStatistics(capture_time_ms, now_ms); |
} |
- size_t length = payload_length + rtp_header_length; |
bool sent = SendPacketToNetwork(buffer, length, PacketOptions()); |
// Mark the packet as sent in the history even if send failed. Dropping a |