Remove support for having multiple SSRCs in an RtcEventVideoSendStreamConfig.
This has been deprecated for a long time. Simulcast streams are now logged as
one RtcEventVideoSendStreamConfig per SSRC instead of one RtcEventVideoSendStreamConfig
containing a group of SSRCs
Bug: webrtc:8111
Change-Id: I4da62a4b2151a841413cde222a5154638dbb2e47
Reviewed-on: https://webrtc-review.googlesource.com/c/113811
Commit-Queue: Björn Terelius <terelius@webrtc.org>
Reviewed-by: Elad Alon <eladalon@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25957}
diff --git a/logging/rtc_event_log/rtc_event_log_parser_new.cc b/logging/rtc_event_log/rtc_event_log_parser_new.cc
index b0d9504..6dab853 100644
--- a/logging/rtc_event_log/rtc_event_log_parser_new.cc
+++ b/logging/rtc_event_log/rtc_event_log_parser_new.cc
@@ -788,15 +788,6 @@
LoggedRtcpPacket::LoggedRtcpPacket(const LoggedRtcpPacket& rhs) = default;
LoggedRtcpPacket::~LoggedRtcpPacket() = default;
-LoggedVideoSendConfig::LoggedVideoSendConfig() = default;
-LoggedVideoSendConfig::LoggedVideoSendConfig(
- int64_t timestamp_us,
- const std::vector<rtclog::StreamConfig>& configs)
- : timestamp_us(timestamp_us), configs(configs) {}
-LoggedVideoSendConfig::LoggedVideoSendConfig(const LoggedVideoSendConfig& rhs) =
- default;
-LoggedVideoSendConfig::~LoggedVideoSendConfig() = default;
-
ParsedRtcEventLogNew::~ParsedRtcEventLogNew() = default;
ParsedRtcEventLogNew::LoggedRtpStreamIncoming::LoggedRtpStreamIncoming() =
@@ -1146,19 +1137,17 @@
break;
}
case rtclog::Event::VIDEO_SENDER_CONFIG_EVENT: {
- std::vector<rtclog::StreamConfig> configs = GetVideoSendConfig(event);
- video_send_configs_.emplace_back(GetTimestamp(event), configs);
- for (const auto& config : configs) {
- if (!config.rtp_extensions.empty()) {
- outgoing_rtp_extensions_maps_[config.local_ssrc] =
- RtpHeaderExtensionMap(config.rtp_extensions);
- outgoing_rtp_extensions_maps_[config.rtx_ssrc] =
- RtpHeaderExtensionMap(config.rtp_extensions);
- }
- outgoing_video_ssrcs_.insert(config.local_ssrc);
- outgoing_video_ssrcs_.insert(config.rtx_ssrc);
- outgoing_rtx_ssrcs_.insert(config.rtx_ssrc);
+ rtclog::StreamConfig config = GetVideoSendConfig(event);
+ video_send_configs_.emplace_back(GetTimestamp(event), config);
+ if (!config.rtp_extensions.empty()) {
+ outgoing_rtp_extensions_maps_[config.local_ssrc] =
+ RtpHeaderExtensionMap(config.rtp_extensions);
+ outgoing_rtp_extensions_maps_[config.rtx_ssrc] =
+ RtpHeaderExtensionMap(config.rtp_extensions);
}
+ outgoing_video_ssrcs_.insert(config.local_ssrc);
+ outgoing_video_ssrcs_.insert(config.rtx_ssrc);
+ outgoing_rtx_ssrcs_.insert(config.rtx_ssrc);
break;
}
case rtclog::Event::AUDIO_RECEIVER_CONFIG_EVENT: {
@@ -1467,42 +1456,40 @@
return config;
}
-std::vector<rtclog::StreamConfig> ParsedRtcEventLogNew::GetVideoSendConfig(
+rtclog::StreamConfig ParsedRtcEventLogNew::GetVideoSendConfig(
const rtclog::Event& event) const {
- std::vector<rtclog::StreamConfig> configs;
+ rtclog::StreamConfig config;
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();
- if (sender_config.rtx_ssrcs_size() > 0 &&
- sender_config.ssrcs_size() != sender_config.rtx_ssrcs_size()) {
- RTC_LOG(WARNING)
- << "VideoSendConfig is configured for RTX but the number of "
- "SSRCs doesn't match the number of 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());
+ RTC_CHECK_EQ(sender_config.ssrcs_size(), 1)
+ << "VideoSendStreamConfig no longer stores multiple SSRCs. If you are "
+ "analyzing a very old log, try building the parser from the same "
+ "WebRTC version.";
- // 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 SSRCs.
+ config.local_ssrc = sender_config.ssrcs(0);
+
+ if (sender_config.has_rtx_payload_type()) {
+ RTC_CHECK_EQ(sender_config.rtx_ssrcs_size(), 1);
+ config.rtx_ssrc = sender_config.rtx_ssrcs(0);
+ } else {
+ RTC_CHECK_EQ(sender_config.rtx_ssrcs_size(), 0);
}
- return configs;
+ // 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 config;
}
rtclog::StreamConfig ParsedRtcEventLogNew::GetAudioReceiveConfig(
@@ -2457,17 +2444,15 @@
LoggedVideoSendConfig stream;
RTC_CHECK(proto.has_timestamp_ms());
stream.timestamp_us = proto.timestamp_ms() * 1000;
- rtclog::StreamConfig config;
RTC_CHECK(proto.has_ssrc());
- config.local_ssrc = proto.ssrc();
+ stream.config.local_ssrc = proto.ssrc();
if (proto.has_rtx_ssrc()) {
- config.rtx_ssrc = proto.rtx_ssrc();
+ stream.config.rtx_ssrc = proto.rtx_ssrc();
}
if (proto.has_header_extensions()) {
- config.rtp_extensions =
+ stream.config.rtp_extensions =
GetRuntimeRtpHeaderExtensionConfig(proto.header_extensions());
}
- stream.configs.push_back(config);
video_send_configs_.push_back(stream);
}
diff --git a/logging/rtc_event_log/rtc_event_log_parser_new.h b/logging/rtc_event_log/rtc_event_log_parser_new.h
index ae97f95..b215601 100644
--- a/logging/rtc_event_log/rtc_event_log_parser_new.h
+++ b/logging/rtc_event_log/rtc_event_log_parser_new.h
@@ -450,17 +450,15 @@
};
struct LoggedVideoSendConfig {
- LoggedVideoSendConfig();
- LoggedVideoSendConfig(int64_t timestamp_us,
- const std::vector<rtclog::StreamConfig>& configs);
- LoggedVideoSendConfig(const LoggedVideoSendConfig&);
- ~LoggedVideoSendConfig();
+ LoggedVideoSendConfig() = default;
+ LoggedVideoSendConfig(int64_t timestamp_us, const rtclog::StreamConfig config)
+ : timestamp_us(timestamp_us), config(config) {}
int64_t log_time_us() const { return timestamp_us; }
int64_t log_time_ms() const { return timestamp_us / 1000; }
int64_t timestamp_us;
- std::vector<rtclog::StreamConfig> configs;
+ rtclog::StreamConfig config;
};
template <typename T>
@@ -922,8 +920,7 @@
size_t* length) const;
rtclog::StreamConfig GetVideoReceiveConfig(const rtclog::Event& event) const;
- std::vector<rtclog::StreamConfig> GetVideoSendConfig(
- const rtclog::Event& event) const;
+ rtclog::StreamConfig GetVideoSendConfig(const rtclog::Event& event) const;
rtclog::StreamConfig GetAudioReceiveConfig(const rtclog::Event& event) const;
rtclog::StreamConfig GetAudioSendConfig(const rtclog::Event& event) const;
diff --git a/logging/rtc_event_log/rtc_event_log_unittest_helper.cc b/logging/rtc_event_log/rtc_event_log_unittest_helper.cc
index a92e666..e30d989 100644
--- a/logging/rtc_event_log/rtc_event_log_unittest_helper.cc
+++ b/logging/rtc_event_log/rtc_event_log_unittest_helper.cc
@@ -1023,11 +1023,7 @@
const RtcEventVideoSendStreamConfig& original_event,
const LoggedVideoSendConfig& logged_event) const {
EXPECT_EQ(original_event.timestamp_ms(), logged_event.log_time_ms());
- // TODO(terelius): In the past, we allowed storing multiple RtcStreamConfigs
- // in the same RtcEventVideoSendStreamConfig. Look into whether we should drop
- // backwards compatibility in the parser.
- ASSERT_EQ(logged_event.configs.size(), 1u);
- VerifyLoggedStreamConfig(original_event.config(), logged_event.configs[0]);
+ VerifyLoggedStreamConfig(original_event.config(), logged_event.config);
}
} // namespace test