Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(234)

Unified Diff: webrtc/logging/rtc_event_log/rtc_event_log_parser.cc

Issue 2912113002: Ensure the RtcEventLog parser is backwards compatible (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 f01895af70082197c2d3446442653d14a9013a13..d2cdcd5b5dda623aeee6444cfb909b1f7a336b31 100644
--- a/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc
+++ b/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc
@@ -202,8 +202,7 @@ bool ParsedRtcEventLog::ParseStream(std::istream& stream) {
EventType type = GetRuntimeEventType(event.type());
switch (type) {
case VIDEO_RECEIVER_CONFIG_EVENT: {
- rtclog::StreamConfig config;
- GetVideoReceiveConfig(event, &config);
+ rtclog::StreamConfig config = GetVideoReceiveConfig(event);
streams_.emplace_back(config.remote_ssrc, MediaType::VIDEO,
kIncomingPacket);
streams_.emplace_back(config.local_ssrc, MediaType::VIDEO,
@@ -211,18 +210,18 @@ bool ParsedRtcEventLog::ParseStream(std::istream& stream) {
break;
}
case VIDEO_SENDER_CONFIG_EVENT: {
- rtclog::StreamConfig config;
- GetVideoSendConfig(event, &config);
- streams_.emplace_back(config.local_ssrc, MediaType::VIDEO,
- kOutgoingPacket);
-
- streams_.emplace_back(config.rtx_ssrc, MediaType::VIDEO,
- kOutgoingPacket);
+ std::vector<rtclog::StreamConfig> configs = GetVideoSendConfig(event);
+ for (size_t i = 0; i < configs.size(); i++) {
+ streams_.emplace_back(configs[i].local_ssrc, MediaType::VIDEO,
+ kOutgoingPacket);
+
+ streams_.emplace_back(configs[i].rtx_ssrc, MediaType::VIDEO,
+ kOutgoingPacket);
+ }
break;
}
case AUDIO_RECEIVER_CONFIG_EVENT: {
- rtclog::StreamConfig config;
- GetAudioReceiveConfig(event, &config);
+ rtclog::StreamConfig config = GetAudioReceiveConfig(event);
streams_.emplace_back(config.remote_ssrc, MediaType::AUDIO,
kIncomingPacket);
streams_.emplace_back(config.local_ssrc, MediaType::AUDIO,
@@ -230,8 +229,7 @@ bool ParsedRtcEventLog::ParseStream(std::istream& stream) {
break;
}
case AUDIO_SENDER_CONFIG_EVENT: {
- rtclog::StreamConfig config;
- GetAudioSendConfig(event, &config);
+ rtclog::StreamConfig config = GetAudioSendConfig(event);
streams_.emplace_back(config.local_ssrc, MediaType::AUDIO,
kOutgoingPacket);
break;
@@ -330,17 +328,15 @@ void ParsedRtcEventLog::GetRtcpPacket(size_t index,
}
}
-void ParsedRtcEventLog::GetVideoReceiveConfig(
- size_t index,
- rtclog::StreamConfig* config) const {
+rtclog::StreamConfig ParsedRtcEventLog::GetVideoReceiveConfig(
+ size_t index) const {
RTC_CHECK_LT(index, GetNumberOfEvents());
- GetVideoReceiveConfig(events_[index], config);
+ return GetVideoReceiveConfig(events_[index]);
}
-void ParsedRtcEventLog::GetVideoReceiveConfig(
- const rtclog::Event& event,
- rtclog::StreamConfig* config) const {
- RTC_CHECK(config != nullptr);
+rtclog::StreamConfig ParsedRtcEventLog::GetVideoReceiveConfig(
+ const rtclog::Event& event) const {
+ rtclog::StreamConfig config;
RTC_CHECK(event.has_type());
RTC_CHECK_EQ(event.type(), rtclog::Event::VIDEO_RECEIVER_CONFIG_EVENT);
RTC_CHECK(event.has_video_receiver_config());
@@ -348,15 +344,15 @@ void ParsedRtcEventLog::GetVideoReceiveConfig(
event.video_receiver_config();
// Get SSRCs.
RTC_CHECK(receiver_config.has_remote_ssrc());
- config->remote_ssrc = receiver_config.remote_ssrc();
+ config.remote_ssrc = receiver_config.remote_ssrc();
RTC_CHECK(receiver_config.has_local_ssrc());
- config->local_ssrc = receiver_config.local_ssrc();
- config->rtx_ssrc = 0;
+ config.local_ssrc = receiver_config.local_ssrc();
+ config.rtx_ssrc = 0;
// Get RTCP settings.
RTC_CHECK(receiver_config.has_rtcp_mode());
- config->rtcp_mode = GetRuntimeRtcpMode(receiver_config.rtcp_mode());
+ config.rtcp_mode = GetRuntimeRtcpMode(receiver_config.rtcp_mode());
RTC_CHECK(receiver_config.has_remb());
- config->remb = receiver_config.remb();
+ config.remb = receiver_config.remb();
// Get RTX map.
std::map<uint32_t, const rtclog::RtxConfig> rtx_map;
@@ -370,10 +366,10 @@ void ParsedRtcEventLog::GetVideoReceiveConfig(
}
// Get header extensions.
- GetHeaderExtensions(&config->rtp_extensions,
+ GetHeaderExtensions(&config.rtp_extensions,
receiver_config.header_extensions());
// Get decoders.
- config->codecs.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());
@@ -381,74 +377,76 @@ void ParsedRtcEventLog::GetVideoReceiveConfig(
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()) {
+ 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 << ".";
+ << config.rtx_ssrc << ".";
} else {
- config->rtx_ssrc = rtx_it->second.rtx_ssrc();
+ 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);
+ config.codecs.emplace_back(receiver_config.decoders(i).name(),
+ receiver_config.decoders(i).payload_type(),
+ rtx_payload_type);
}
+ return config;
}
-void ParsedRtcEventLog::GetVideoSendConfig(size_t index,
- rtclog::StreamConfig* config) const {
+std::vector<rtclog::StreamConfig> ParsedRtcEventLog::GetVideoSendConfig(
+ size_t index) const {
RTC_CHECK_LT(index, GetNumberOfEvents());
- GetVideoSendConfig(events_[index], config);
+ return GetVideoSendConfig(events_[index]);
}
-void ParsedRtcEventLog::GetVideoSendConfig(const rtclog::Event& event,
- rtclog::StreamConfig* config) const {
- RTC_CHECK(config != nullptr);
+
+std::vector<rtclog::StreamConfig> ParsedRtcEventLog::GetVideoSendConfig(
+ const rtclog::Event& event) const {
+ std::vector<rtclog::StreamConfig> configs;
RTC_CHECK(event.has_type());
RTC_CHECK_EQ(event.type(), rtclog::Event::VIDEO_SENDER_CONFIG_EVENT);
RTC_CHECK(event.has_video_sender_config());
const rtclog::VideoSendConfig& sender_config = event.video_sender_config();
- // Get SSRCs.
- if (sender_config.ssrcs_size() > 0) {
- config->local_ssrc = sender_config.ssrcs(0);
- if (sender_config.ssrcs().size() > 1) {
- LOG(WARNING) << "VideoSendConfig contains multiple ssrcs.";
- }
+ if (sender_config.rtx_ssrcs_size() > 0 &&
+ sender_config.ssrcs_size() != sender_config.rtx_ssrcs_size()) {
+ LOG(WARNING) << "VideoSendConfig is configured for RTX but the number of "
+ "SSRCs doesn't match the number of RTX SSRCs.";
}
- if (sender_config.rtx_ssrcs_size() > 0) {
- RTC_CHECK(sender_config.has_rtx_payload_type());
- config->rtx_ssrc = sender_config.rtx_ssrcs(0);
- if (sender_config.rtx_ssrcs_size() > 1) {
- LOG(WARNING) << "VideoSendConfig contains multiple rtx ssrcs.";
+ configs.resize(sender_config.ssrcs_size());
+ for (int i = 0; i < sender_config.ssrcs_size(); i++) {
+ // Get SSRCs.
+ configs[i].local_ssrc = sender_config.ssrcs(i);
+ if (sender_config.rtx_ssrcs_size() > 0 &&
+ i < sender_config.rtx_ssrcs_size()) {
+ RTC_CHECK(sender_config.has_rtx_payload_type());
+ configs[i].rtx_ssrc = sender_config.rtx_ssrcs(i);
}
+ // Get header extensions.
+ GetHeaderExtensions(&configs[i].rtp_extensions,
+ sender_config.header_extensions());
+
+ // Get the codec.
+ RTC_CHECK(sender_config.has_encoder());
+ RTC_CHECK(sender_config.encoder().has_name());
+ RTC_CHECK(sender_config.encoder().has_payload_type());
+ configs[i].codecs.emplace_back(
+ sender_config.encoder().name(), sender_config.encoder().payload_type(),
+ sender_config.has_rtx_payload_type() ? sender_config.rtx_payload_type()
+ : 0);
}
- // Get header extensions.
- GetHeaderExtensions(&config->rtp_extensions,
- sender_config.header_extensions());
-
- // Get the codec.
- RTC_CHECK(sender_config.has_encoder());
- RTC_CHECK(sender_config.encoder().has_name());
- RTC_CHECK(sender_config.encoder().has_payload_type());
- config->codecs.emplace_back(
- sender_config.encoder().name(), sender_config.encoder().payload_type(),
- sender_config.has_rtx_payload_type() ? sender_config.rtx_payload_type()
- : 0);
+ return configs;
}
-void ParsedRtcEventLog::GetAudioReceiveConfig(
- size_t index,
- rtclog::StreamConfig* config) const {
+rtclog::StreamConfig ParsedRtcEventLog::GetAudioReceiveConfig(
+ size_t index) const {
RTC_CHECK_LT(index, GetNumberOfEvents());
- GetAudioReceiveConfig(events_[index], config);
+ return GetAudioReceiveConfig(events_[index]);
}
-void ParsedRtcEventLog::GetAudioReceiveConfig(
- const rtclog::Event& event,
- rtclog::StreamConfig* config) const {
- RTC_CHECK(config != nullptr);
+rtclog::StreamConfig ParsedRtcEventLog::GetAudioReceiveConfig(
+ const rtclog::Event& event) const {
+ rtclog::StreamConfig config;
RTC_CHECK(event.has_type());
RTC_CHECK_EQ(event.type(), rtclog::Event::AUDIO_RECEIVER_CONFIG_EVENT);
RTC_CHECK(event.has_audio_receiver_config());
@@ -456,33 +454,34 @@ void ParsedRtcEventLog::GetAudioReceiveConfig(
event.audio_receiver_config();
// Get SSRCs.
RTC_CHECK(receiver_config.has_remote_ssrc());
- config->remote_ssrc = receiver_config.remote_ssrc();
+ config.remote_ssrc = receiver_config.remote_ssrc();
RTC_CHECK(receiver_config.has_local_ssrc());
- config->local_ssrc = receiver_config.local_ssrc();
+ config.local_ssrc = receiver_config.local_ssrc();
// Get header extensions.
- GetHeaderExtensions(&config->rtp_extensions,
+ GetHeaderExtensions(&config.rtp_extensions,
receiver_config.header_extensions());
+ return config;
}
-void ParsedRtcEventLog::GetAudioSendConfig(size_t index,
- rtclog::StreamConfig* config) const {
+rtclog::StreamConfig ParsedRtcEventLog::GetAudioSendConfig(size_t index) const {
RTC_CHECK_LT(index, GetNumberOfEvents());
- GetAudioSendConfig(events_[index], config);
+ return GetAudioSendConfig(events_[index]);
}
-void ParsedRtcEventLog::GetAudioSendConfig(const rtclog::Event& event,
- rtclog::StreamConfig* config) const {
- RTC_CHECK(config != nullptr);
+rtclog::StreamConfig ParsedRtcEventLog::GetAudioSendConfig(
+ const rtclog::Event& event) const {
+ rtclog::StreamConfig config;
RTC_CHECK(event.has_type());
RTC_CHECK_EQ(event.type(), rtclog::Event::AUDIO_SENDER_CONFIG_EVENT);
RTC_CHECK(event.has_audio_sender_config());
const rtclog::AudioSendConfig& sender_config = event.audio_sender_config();
// Get SSRCs.
RTC_CHECK(sender_config.has_ssrc());
- config->local_ssrc = sender_config.ssrc();
+ config.local_ssrc = sender_config.ssrc();
// Get header extensions.
- GetHeaderExtensions(&config->rtp_extensions,
+ GetHeaderExtensions(&config.rtp_extensions,
sender_config.header_extensions());
+ return config;
}
void ParsedRtcEventLog::GetAudioPlayout(size_t index, uint32_t* ssrc) const {
« no previous file with comments | « webrtc/logging/rtc_event_log/rtc_event_log_parser.h ('k') | webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698