Index: webrtc/call/rtc_event_log.cc |
diff --git a/webrtc/call/rtc_event_log.cc b/webrtc/call/rtc_event_log.cc |
index abc2eb47090c69ea8b8798f5f921df40297c52cf..9f592ce479788b7f9c960a75b9f4020980facc01 100644 |
--- a/webrtc/call/rtc_event_log.cc |
+++ b/webrtc/call/rtc_event_log.cc |
@@ -17,7 +17,9 @@ |
#include "webrtc/base/criticalsection.h" |
#include "webrtc/base/thread_annotations.h" |
#include "webrtc/call.h" |
+#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" |
#include "webrtc/modules/rtp_rtcp/source/byte_io.h" |
+#include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h" |
#include "webrtc/system_wrappers/include/clock.h" |
#include "webrtc/system_wrappers/include/file_wrapper.h" |
@@ -269,9 +271,6 @@ void RtcEventLogImpl::LogVideoReceiveStreamConfig( |
receiver_config->set_local_ssrc(config.rtp.local_ssrc); |
receiver_config->set_rtcp_mode(ConvertRtcpMode(config.rtp.rtcp_mode)); |
- |
- receiver_config->set_receiver_reference_time_report( |
- config.rtp.rtcp_xr.receiver_reference_time_report); |
receiver_config->set_remb(config.rtp.remb); |
for (const auto& kv : config.rtp.rtx) { |
@@ -322,8 +321,6 @@ void RtcEventLogImpl::LogVideoSendStreamConfig( |
} |
sender_config->set_rtx_payload_type(config.rtp.rtx.payload_type); |
- sender_config->set_c_name(config.rtp.c_name); |
- |
rtclog::EncoderConfig* encoder = sender_config->mutable_encoder(); |
encoder->set_name(config.encoder_settings.payload_name); |
encoder->set_payload_type(config.encoder_settings.payload_type); |
@@ -371,7 +368,52 @@ void RtcEventLogImpl::LogRtcpPacket(bool incoming, |
rtcp_event.set_type(rtclog::Event::RTCP_EVENT); |
rtcp_event.mutable_rtcp_packet()->set_incoming(incoming); |
rtcp_event.mutable_rtcp_packet()->set_type(ConvertMediaType(media_type)); |
- rtcp_event.mutable_rtcp_packet()->set_packet_data(packet, length); |
+ |
+ RTCPUtility::RtcpCommonHeader header; |
+ const uint8_t* block_begin = packet; |
+ const uint8_t* packet_end = packet + length; |
+ RTC_DCHECK(length <= IP_PACKET_SIZE); |
+ uint8_t buffer[IP_PACKET_SIZE]; |
+ uint32_t buffer_length = 0; |
+ while (block_begin < packet_end) { |
+ if (!RtcpParseCommonHeader(block_begin, packet_end - block_begin, |
+ &header)) { |
+ break; // Incorrect message header. |
+ } |
+ uint32_t block_size = header.BlockSize(); |
+ switch (header.packet_type) { |
+ case RTCPUtility::PT_SR: |
+ FALLTHROUGH(); |
+ case RTCPUtility::PT_RR: |
+ FALLTHROUGH(); |
+ case RTCPUtility::PT_BYE: |
+ FALLTHROUGH(); |
+ case RTCPUtility::PT_IJ: |
+ FALLTHROUGH(); |
+ case RTCPUtility::PT_RTPFB: |
+ FALLTHROUGH(); |
+ case RTCPUtility::PT_PSFB: |
+ FALLTHROUGH(); |
+ case RTCPUtility::PT_XR: |
+ // We log sender reports, receiver reports, bye messages |
+ // inter-arrival jitter, third-party loss reports, payload-specific |
+ // feedback and extended reports. |
+ memcpy(buffer + buffer_length, block_begin, block_size); |
+ buffer_length += block_size; |
+ break; |
+ case RTCPUtility::PT_SDES: |
+ FALLTHROUGH(); |
+ case RTCPUtility::PT_APP: |
+ FALLTHROUGH(); |
+ default: |
+ // We don't log sender descriptions, application defined messages |
+ // or message blocks of unknown type. |
+ break; |
+ } |
+ |
+ block_begin += block_size; |
+ } |
+ rtcp_event.mutable_rtcp_packet()->set_packet_data(buffer, buffer_length); |
HandleEvent(&rtcp_event); |
} |