Index: webrtc/tools/event_log_visualizer/analyzer.cc |
diff --git a/webrtc/tools/event_log_visualizer/analyzer.cc b/webrtc/tools/event_log_visualizer/analyzer.cc |
index d1dec22f0a1c2d0bd5462687ec6c51691f9fd537..4ec1a2972a5db01c38ebeacc64733866890b4219 100644 |
--- a/webrtc/tools/event_log_visualizer/analyzer.cc |
+++ b/webrtc/tools/event_log_visualizer/analyzer.cc |
@@ -29,7 +29,7 @@ |
#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp.h" |
#include "webrtc/modules/rtp_rtcp/include/rtp_rtcp_defines.h" |
#include "webrtc/modules/rtp_rtcp/source/rtp_utility.h" |
-#include "webrtc/modules/rtp_rtcp/source/rtcp_utility.h" |
+#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/common_header.h" |
#include "webrtc/modules/rtp_rtcp/source/rtcp_packet/transport_feedback.h" |
#include "webrtc/video_receive_stream.h" |
#include "webrtc/video_send_stream.h" |
@@ -392,35 +392,27 @@ EventLogAnalyzer::EventLogAnalyzer(const ParsedRtcEventLog& log) |
parsed_log_.GetRtcpPacket(i, &direction, &media_type, packet, |
&total_length); |
- RtpUtility::RtpHeaderParser rtp_parser(packet, total_length); |
- RTPHeader parsed_header; |
- RTC_CHECK(rtp_parser.ParseRtcp(&parsed_header)); |
- uint32_t ssrc = parsed_header.ssrc; |
- |
- RTCPUtility::RTCPParserV2 rtcp_parser(packet, total_length, true); |
- RTC_CHECK(rtcp_parser.IsValid()); |
- |
- RTCPUtility::RTCPPacketTypes packet_type = rtcp_parser.Begin(); |
- while (packet_type != RTCPUtility::RTCPPacketTypes::kInvalid) { |
- switch (packet_type) { |
- case RTCPUtility::RTCPPacketTypes::kTransportFeedback: { |
- // Currently feedback is logged twice, both for audio and video. |
- // Only act on one of them. |
- if (media_type == MediaType::VIDEO) { |
- std::unique_ptr<rtcp::RtcpPacket> rtcp_packet( |
- rtcp_parser.ReleaseRtcpPacket()); |
+ // Currently feedback is logged twice, both for audio and video. |
+ // Only act on one of them. |
+ if (media_type == MediaType::VIDEO) { |
+ rtcp::CommonHeader header; |
+ const uint8_t* packet_end = packet + total_length; |
+ for (const uint8_t* block = packet; block < packet_end; |
+ block = header.NextPacket()) { |
+ RTC_CHECK(header.Parse(block, packet_end - block)); |
+ if (header.type() == rtcp::TransportFeedback::kPacketType && |
+ header.fmt() == rtcp::TransportFeedback::kFeedbackMessageType) { |
+ std::unique_ptr<rtcp::TransportFeedback> rtcp_packet( |
+ new rtcp::TransportFeedback()); |
+ if (rtcp_packet->Parse(header)) { |
+ uint32_t ssrc = rtcp_packet->sender_ssrc(); |
StreamId stream(ssrc, direction); |
uint64_t timestamp = parsed_log_.GetTimestamp(i); |
rtcp_packets_[stream].push_back(LoggedRtcpPacket( |
timestamp, kRtcpTransportFeedback, std::move(rtcp_packet))); |
} |
- break; |
} |
- default: |
- break; |
} |
- rtcp_parser.Iterate(); |
- packet_type = rtcp_parser.PacketType(); |
} |
break; |
} |