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 79f077dc5c95ea39153394e280bbf4c49faa3cf6..281615850191bd30a6caae38f53dc52ffecc35fb 100644 |
--- a/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc |
+++ b/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc |
@@ -16,6 +16,7 @@ |
#include <algorithm> |
#include <fstream> |
#include <istream> |
+#include <map> |
#include <utility> |
#include "webrtc/base/checks.h" |
@@ -316,7 +317,7 @@ void ParsedRtcEventLog::GetRtcpPacket(size_t index, |
void ParsedRtcEventLog::GetVideoReceiveConfig( |
size_t index, |
- VideoReceiveStream::Config* config) const { |
+ rtclog::StreamConfig* config) const { |
RTC_CHECK_LT(index, GetNumberOfEvents()); |
const rtclog::Event& event = events_[index]; |
RTC_CHECK(config != nullptr); |
@@ -327,52 +328,53 @@ void ParsedRtcEventLog::GetVideoReceiveConfig( |
event.video_receiver_config(); |
// Get SSRCs. |
RTC_CHECK(receiver_config.has_remote_ssrc()); |
- config->rtp.remote_ssrc = receiver_config.remote_ssrc(); |
+ config->remote_ssrc = receiver_config.remote_ssrc(); |
RTC_CHECK(receiver_config.has_local_ssrc()); |
- config->rtp.local_ssrc = receiver_config.local_ssrc(); |
+ config->local_ssrc = receiver_config.local_ssrc(); |
+ config->rtx_ssrc = 0; |
// Get RTCP settings. |
RTC_CHECK(receiver_config.has_rtcp_mode()); |
- config->rtp.rtcp_mode = GetRuntimeRtcpMode(receiver_config.rtcp_mode()); |
+ config->rtcp_mode = GetRuntimeRtcpMode(receiver_config.rtcp_mode()); |
RTC_CHECK(receiver_config.has_remb()); |
- config->rtp.remb = receiver_config.remb(); |
+ config->remb = receiver_config.remb(); |
+ |
// Get RTX map. |
- std::vector<uint32_t> rtx_ssrcs(receiver_config.rtx_map_size()); |
- config->rtp.rtx_payload_types.clear(); |
+ std::map<uint32_t, const rtclog::RtxConfig> rtx_map; |
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()); |
- 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 << "."; |
- } |
+ rtx_map.insert(std::make_pair(map.payload_type(), map.config())); |
} |
+ |
// Get header extensions. |
- GetHeaderExtensions(&config->rtp.extensions, |
+ GetHeaderExtensions(&config->rtp_extensions, |
receiver_config.header_extensions()); |
// Get decoders. |
- config->decoders.clear(); |
+ config->codecs.clear(); |
for (int i = 0; i < receiver_config.decoders_size(); i++) { |
RTC_CHECK(receiver_config.decoders(i).has_name()); |
RTC_CHECK(receiver_config.decoders(i).has_payload_type()); |
- VideoReceiveStream::Decoder decoder; |
- decoder.payload_name = receiver_config.decoders(i).name(); |
- decoder.payload_type = receiver_config.decoders(i).payload_type(); |
- config->decoders.push_back(decoder); |
+ int rtx_payload_type = 0; |
+ auto rtx_it = rtx_map.find(receiver_config.decoders(i).payload_type()); |
+ if (rtx_it != rtx_map.end()) { |
+ rtx_payload_type = rtx_it->second.rtx_payload_type(); |
+ if (config->rtx_ssrc != 0 && |
+ config->rtx_ssrc != rtx_it->second.rtx_ssrc()) { |
+ LOG(LS_WARNING) |
+ << "RtcEventLog protobuf contained different SSRCs for " |
+ "different received RTX payload types. Will only use " |
+ "rtx_ssrc = " |
+ << config->rtx_ssrc << "."; |
+ } else { |
+ config->rtx_ssrc = rtx_it->second.rtx_ssrc(); |
+ } |
+ } |
+ config->codecs.emplace_back(receiver_config.decoders(i).name(), |
+ receiver_config.decoders(i).payload_type(), |
+ rtx_payload_type); |
} |
} |