Index: webrtc/logging/rtc_event_log/rtc_event_log_parser.cc |
diff --git a/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc b/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc |
index 3b808b2e43d451fac6915f3aa2a891c5685a2160..c1bf94458dfb3bc2407ef2c2cfb08e80372f7705 100644 |
--- a/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc |
+++ b/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc |
@@ -10,8 +10,10 @@ |
#include "webrtc/logging/rtc_event_log/rtc_event_log_parser.h" |
+#include <stdint.h> |
#include <string.h> |
+#include <algorithm> |
#include <fstream> |
#include <istream> |
#include <utility> |
@@ -314,17 +316,30 @@ void ParsedRtcEventLog::GetVideoReceiveConfig( |
RTC_CHECK(receiver_config.has_remb()); |
config->rtp.remb = receiver_config.remb(); |
// Get RTX map. |
- config->rtp.rtx.clear(); |
+ std::vector<uint32_t> rtx_ssrcs(receiver_config.rtx_map_size()); |
+ config->rtp.rtx_payload_types.clear(); |
for (int i = 0; i < receiver_config.rtx_map_size(); i++) { |
const rtclog::RtxMap& map = receiver_config.rtx_map(i); |
RTC_CHECK(map.has_payload_type()); |
RTC_CHECK(map.has_config()); |
RTC_CHECK(map.config().has_rtx_ssrc()); |
+ rtx_ssrcs[i] = map.config().rtx_ssrc(); |
RTC_CHECK(map.config().has_rtx_payload_type()); |
- webrtc::VideoReceiveStream::Config::Rtp::Rtx rtx_pair; |
- rtx_pair.ssrc = map.config().rtx_ssrc(); |
- rtx_pair.payload_type = map.config().rtx_payload_type(); |
- config->rtp.rtx.insert(std::make_pair(map.payload_type(), rtx_pair)); |
+ config->rtp.rtx_payload_types.insert( |
+ std::make_pair(map.payload_type(), map.config().rtx_payload_type())); |
+ } |
+ if (!rtx_ssrcs.empty()) { |
+ config->rtp.rtx_ssrc = rtx_ssrcs[0]; |
+ |
+ auto pred = [&config](uint32_t ssrc) { |
+ return ssrc == config->rtp.rtx_ssrc; |
+ }; |
+ if (!std::all_of(rtx_ssrcs.cbegin(), rtx_ssrcs.cend(), pred)) { |
+ LOG(LS_WARNING) << "RtcEventLog protobuf contained different SSRCs for " |
+ "different received RTX payload types. Will only use " |
+ "rtx_ssrc = " |
+ << config->rtp.rtx_ssrc << "."; |
+ } |
} |
// Get header extensions. |
GetHeaderExtensions(&config->rtp.extensions, |