Replace VideoReceiveStream::Config with new rtclog::StreamConfig in RtcEventLog.
BUG=webrtc:7538
Review-Url: https://codereview.webrtc.org/2850793002
Cr-Original-Commit-Position: refs/heads/master@{#18220}
Cr-Mirrored-From: https://chromium.googlesource.com/external/webrtc
Cr-Mirrored-Commit: 09e71daec503f9983938fd7e621657fc4cff2440
diff --git a/call/call.cc b/call/call.cc
index 802778e..f9f1fb5 100644
--- a/call/call.cc
+++ b/call/call.cc
@@ -88,6 +88,25 @@
return UseSendSideBwe(config.rtp_header_extensions, config.transport_cc);
}
+rtclog::StreamConfig CreateRtcLogStreamConfig(
+ const VideoReceiveStream::Config& config) {
+ rtclog::StreamConfig rtclog_config;
+ rtclog_config.remote_ssrc = config.rtp.remote_ssrc;
+ rtclog_config.local_ssrc = config.rtp.local_ssrc;
+ rtclog_config.rtx_ssrc = config.rtp.rtx_ssrc;
+ rtclog_config.rtcp_mode = config.rtp.rtcp_mode;
+ rtclog_config.remb = config.rtp.remb;
+ rtclog_config.rtp_extensions = config.rtp.extensions;
+
+ for (const auto& d : config.decoders) {
+ auto search = config.rtp.rtx_payload_types.find(d.payload_type);
+ rtclog_config.codecs.emplace_back(
+ d.payload_name, d.payload_type,
+ search != config.rtp.rtx_payload_types.end() ? search->second : 0);
+ }
+ return rtclog_config;
+}
+
} // namespace
namespace internal {
@@ -710,7 +729,7 @@
}
receive_stream->SignalNetworkState(video_network_state_);
UpdateAggregateNetworkState();
- event_log_->LogVideoReceiveStreamConfig(config);
+ event_log_->LogVideoReceiveStreamConfig(CreateRtcLogStreamConfig(config));
return receive_stream;
}
diff --git a/logging/rtc_event_log/mock/mock_rtc_event_log.h b/logging/rtc_event_log/mock/mock_rtc_event_log.h
index 154882f..e6dd9d6 100644
--- a/logging/rtc_event_log/mock/mock_rtc_event_log.h
+++ b/logging/rtc_event_log/mock/mock_rtc_event_log.h
@@ -30,7 +30,7 @@
MOCK_METHOD0(StopLogging, void());
MOCK_METHOD1(LogVideoReceiveStreamConfig,
- void(const webrtc::VideoReceiveStream::Config& config));
+ void(const rtclog::StreamConfig& config));
MOCK_METHOD1(LogVideoSendStreamConfig,
void(const webrtc::VideoSendStream::Config& config));
diff --git a/logging/rtc_event_log/rtc_event_log.cc b/logging/rtc_event_log/rtc_event_log.cc
index 7d5b606..d7e6067 100644
--- a/logging/rtc_event_log/rtc_event_log.cc
+++ b/logging/rtc_event_log/rtc_event_log.cc
@@ -62,8 +62,7 @@
bool StartLogging(rtc::PlatformFile platform_file,
int64_t max_size_bytes) override;
void StopLogging() override;
- void LogVideoReceiveStreamConfig(
- const VideoReceiveStream::Config& config) override;
+ void LogVideoReceiveStreamConfig(const rtclog::StreamConfig& config) override;
void LogVideoSendStreamConfig(const VideoSendStream::Config& config) override;
void LogAudioReceiveStreamConfig(
const AudioReceiveStream::Config& config) override;
@@ -277,37 +276,37 @@
}
void RtcEventLogImpl::LogVideoReceiveStreamConfig(
- const VideoReceiveStream::Config& config) {
+ const rtclog::StreamConfig& config) {
std::unique_ptr<rtclog::Event> event(new rtclog::Event());
event->set_timestamp_us(rtc::TimeMicros());
event->set_type(rtclog::Event::VIDEO_RECEIVER_CONFIG_EVENT);
rtclog::VideoReceiveConfig* receiver_config =
event->mutable_video_receiver_config();
- receiver_config->set_remote_ssrc(config.rtp.remote_ssrc);
- receiver_config->set_local_ssrc(config.rtp.local_ssrc);
+ receiver_config->set_remote_ssrc(config.remote_ssrc);
+ receiver_config->set_local_ssrc(config.local_ssrc);
- receiver_config->set_rtcp_mode(ConvertRtcpMode(config.rtp.rtcp_mode));
- receiver_config->set_remb(config.rtp.remb);
+ // TODO(perkj): Add field for rsid.
+ receiver_config->set_rtcp_mode(ConvertRtcpMode(config.rtcp_mode));
+ receiver_config->set_remb(config.remb);
- for (const auto& kv : config.rtp.rtx_payload_types) {
- rtclog::RtxMap* rtx = receiver_config->add_rtx_map();
- rtx->set_payload_type(kv.first);
- rtx->mutable_config()->set_rtx_ssrc(config.rtp.rtx_ssrc);
- rtx->mutable_config()->set_rtx_payload_type(kv.second);
- }
-
- for (const auto& e : config.rtp.extensions) {
+ for (const auto& e : config.rtp_extensions) {
rtclog::RtpHeaderExtension* extension =
receiver_config->add_header_extensions();
extension->set_name(e.uri);
extension->set_id(e.id);
}
- for (const auto& d : config.decoders) {
+ for (const auto& d : config.codecs) {
rtclog::DecoderConfig* decoder = receiver_config->add_decoders();
decoder->set_name(d.payload_name);
decoder->set_payload_type(d.payload_type);
+ if (d.rtx_payload_type != 0) {
+ rtclog::RtxMap* rtx = receiver_config->add_rtx_map();
+ rtx->set_payload_type(d.payload_type);
+ rtx->mutable_config()->set_rtx_ssrc(config.rtx_ssrc);
+ rtx->mutable_config()->set_rtx_payload_type(d.rtx_payload_type);
+ }
}
StoreEvent(&event);
}
diff --git a/logging/rtc_event_log/rtc_event_log.h b/logging/rtc_event_log/rtc_event_log.h
index a98c71b..d3e6213 100644
--- a/logging/rtc_event_log/rtc_event_log.h
+++ b/logging/rtc_event_log/rtc_event_log.h
@@ -13,6 +13,7 @@
#include <memory>
#include <string>
+#include <vector>
#include "webrtc/base/platform_file.h"
#include "webrtc/call/audio_receive_stream.h"
@@ -26,6 +27,33 @@
// the protobuf file.
namespace rtclog {
class EventStream;
+
+struct StreamConfig {
+ uint32_t local_ssrc = 0;
+ uint32_t remote_ssrc = 0;
+ uint32_t rtx_ssrc = 0;
+ std::string rsid;
+
+ bool remb = false;
+ std::vector<RtpExtension> rtp_extensions;
+
+ RtcpMode rtcp_mode = RtcpMode::kReducedSize;
+
+ struct Codec {
+ Codec(const std::string& payload_name,
+ int payload_type,
+ int rtx_payload_type)
+ : payload_name(payload_name),
+ payload_type(payload_type),
+ rtx_payload_type(rtx_payload_type) {}
+
+ std::string payload_name;
+ int payload_type;
+ int rtx_payload_type;
+ };
+ std::vector<Codec> codecs;
+};
+
} // namespace rtclog
class Clock;
@@ -84,9 +112,9 @@
// Stops logging to file and waits until the thread has finished.
virtual void StopLogging() = 0;
- // Logs configuration information for webrtc::VideoReceiveStream.
+ // Logs configuration information for video receive stream.
virtual void LogVideoReceiveStreamConfig(
- const webrtc::VideoReceiveStream::Config& config) = 0;
+ const rtclog::StreamConfig& config) = 0;
// Logs configuration information for webrtc::VideoSendStream.
virtual void LogVideoSendStreamConfig(
@@ -172,7 +200,7 @@
int64_t max_size_bytes) override;
void StopLogging() override {}
void LogVideoReceiveStreamConfig(
- const VideoReceiveStream::Config& config) override {}
+ const rtclog::StreamConfig& config) override {}
void LogVideoSendStreamConfig(
const VideoSendStream::Config& config) override {}
void LogAudioReceiveStreamConfig(
diff --git a/logging/rtc_event_log/rtc_event_log2text.cc b/logging/rtc_event_log/rtc_event_log2text.cc
index 1fa694d..76fc95e 100644
--- a/logging/rtc_event_log/rtc_event_log2text.cc
+++ b/logging/rtc_event_log/rtc_event_log2text.cc
@@ -364,20 +364,20 @@
for (size_t i = 0; i < parsed_stream.GetNumberOfEvents(); i++) {
if (parsed_stream.GetEventType(i) ==
webrtc::ParsedRtcEventLog::VIDEO_RECEIVER_CONFIG_EVENT) {
- webrtc::VideoReceiveStream::Config config(nullptr);
+ webrtc::rtclog::StreamConfig config;
parsed_stream.GetVideoReceiveConfig(i, &config);
- global_streams.emplace_back(config.rtp.remote_ssrc,
+ global_streams.emplace_back(config.remote_ssrc,
webrtc::MediaType::VIDEO,
webrtc::kIncomingPacket);
- global_streams.emplace_back(config.rtp.local_ssrc,
+ global_streams.emplace_back(config.local_ssrc,
webrtc::MediaType::VIDEO,
webrtc::kOutgoingPacket);
if (!FLAGS_noconfig && !FLAGS_novideo && !FLAGS_noincoming) {
std::cout << parsed_stream.GetTimestamp(i) << "\tVIDEO_RECV_CONFIG"
- << "\tssrc=" << config.rtp.remote_ssrc
- << "\tfeedback_ssrc=" << config.rtp.local_ssrc << std::endl;
+ << "\tssrc=" << config.remote_ssrc
+ << "\tfeedback_ssrc=" << config.local_ssrc << std::endl;
}
}
if (parsed_stream.GetEventType(i) ==
diff --git a/logging/rtc_event_log/rtc_event_log_parser.cc b/logging/rtc_event_log/rtc_event_log_parser.cc
index 79f077d..2816158 100644
--- a/logging/rtc_event_log/rtc_event_log_parser.cc
+++ b/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::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 @@
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()));
+ rtx_map.insert(std::make_pair(map.payload_type(), map.config()));
}
- 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,
+ 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);
}
}
diff --git a/logging/rtc_event_log/rtc_event_log_parser.h b/logging/rtc_event_log/rtc_event_log_parser.h
index c682c63..147ff1b 100644
--- a/logging/rtc_event_log/rtc_event_log_parser.h
+++ b/logging/rtc_event_log/rtc_event_log_parser.h
@@ -114,10 +114,9 @@
uint8_t* packet,
size_t* length) const;
- // Reads a config event to a (non-NULL) VideoReceiveStream::Config struct.
+ // Reads a config event to a (non-NULL) StreamConfig struct.
// Only the fields that are stored in the protobuf will be written.
- void GetVideoReceiveConfig(size_t index,
- VideoReceiveStream::Config* config) const;
+ void GetVideoReceiveConfig(size_t index, rtclog::StreamConfig* config) const;
// Reads a config event to a (non-NULL) VideoSendStream::Config struct.
// Only the fields that are stored in the protobuf will be written.
diff --git a/logging/rtc_event_log/rtc_event_log_unittest.cc b/logging/rtc_event_log/rtc_event_log_unittest.cc
index 8be739e..cb3bf0d 100644
--- a/logging/rtc_event_log/rtc_event_log_unittest.cc
+++ b/logging/rtc_event_log/rtc_event_log_unittest.cc
@@ -153,29 +153,23 @@
}
void GenerateVideoReceiveConfig(uint32_t extensions_bitvector,
- VideoReceiveStream::Config* config,
+ rtclog::StreamConfig* config,
Random* prng) {
- // Create a map from a payload type to an encoder name.
- VideoReceiveStream::Decoder decoder;
- decoder.payload_type = prng->Rand(0, 127);
- decoder.payload_name = (prng->Rand<bool>() ? "VP8" : "H264");
- config->decoders.push_back(decoder);
// Add SSRCs for the stream.
- config->rtp.remote_ssrc = prng->Rand<uint32_t>();
- config->rtp.local_ssrc = prng->Rand<uint32_t>();
+ config->remote_ssrc = prng->Rand<uint32_t>();
+ config->local_ssrc = prng->Rand<uint32_t>();
// Add extensions and settings for RTCP.
- config->rtp.rtcp_mode =
+ config->rtcp_mode =
prng->Rand<bool>() ? RtcpMode::kCompound : RtcpMode::kReducedSize;
- config->rtp.remb = prng->Rand<bool>();
- config->rtp.rtx_ssrc = prng->Rand<uint32_t>();
- // Add a map from a payload type to a new payload type for RTX.
- config->rtp.rtx_payload_types.insert(
- std::make_pair(prng->Rand(0, 127), prng->Rand(0, 127)));
+ config->remb = prng->Rand<bool>();
+ config->rtx_ssrc = prng->Rand<uint32_t>();
+ config->codecs.emplace_back(prng->Rand<bool>() ? "VP8" : "H264",
+ prng->Rand(1, 127), prng->Rand(1, 127));
// Add header extensions.
for (unsigned i = 0; i < kNumExtensions; i++) {
if (extensions_bitvector & (1u << i)) {
- config->rtp.extensions.push_back(
- RtpExtension(kExtensionNames[i], prng->Rand<int>()));
+ config->rtp_extensions.emplace_back(kExtensionNames[i],
+ prng->Rand<int>());
}
}
}
@@ -258,7 +252,7 @@
std::vector<uint32_t> playout_ssrcs;
std::vector<std::pair<int32_t, uint8_t> > bwe_loss_updates;
- VideoReceiveStream::Config receiver_config(nullptr);
+ rtclog::StreamConfig receiver_config;
VideoSendStream::Config sender_config(nullptr);
Random prng(random_seed);
@@ -815,7 +809,7 @@
class VideoReceiveConfigReadWriteTest : public ConfigReadWriteTest {
public:
- VideoReceiveConfigReadWriteTest() : config(nullptr) {}
+ VideoReceiveConfigReadWriteTest() {}
void GenerateConfig(uint32_t extensions_bitvector) override {
GenerateVideoReceiveConfig(extensions_bitvector, &config, &prng);
}
@@ -827,7 +821,7 @@
RtcEventLogTestHelper::VerifyVideoReceiveStreamConfig(parsed_log, index,
config);
}
- VideoReceiveStream::Config config;
+ rtclog::StreamConfig config;
};
class VideoSendConfigReadWriteTest : public ConfigReadWriteTest {
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 e2fa4b1..b5d739e 100644
--- a/logging/rtc_event_log/rtc_event_log_unittest_helper.cc
+++ b/logging/rtc_event_log/rtc_event_log_unittest_helper.cc
@@ -163,10 +163,32 @@
return ::testing::AssertionSuccess();
}
+void VerifyStreamConfigsAreEqual(const rtclog::StreamConfig& config_1,
+ const rtclog::StreamConfig& config_2) {
+ EXPECT_EQ(config_1.remote_ssrc, config_2.remote_ssrc);
+ EXPECT_EQ(config_1.local_ssrc, config_2.local_ssrc);
+ EXPECT_EQ(config_1.rtx_ssrc, config_2.rtx_ssrc);
+ EXPECT_EQ(config_1.rtcp_mode, config_2.rtcp_mode);
+ EXPECT_EQ(config_1.remb, config_2.remb);
+
+ ASSERT_EQ(config_1.rtp_extensions.size(), config_2.rtp_extensions.size());
+ for (size_t i = 0; i < config_2.rtp_extensions.size(); i++) {
+ EXPECT_EQ(config_1.rtp_extensions[i].uri, config_2.rtp_extensions[i].uri);
+ EXPECT_EQ(config_1.rtp_extensions[i].id, config_2.rtp_extensions[i].id);
+ }
+ ASSERT_EQ(config_1.codecs.size(), config_2.codecs.size());
+ for (size_t i = 0; i < config_2.codecs.size(); i++) {
+ EXPECT_EQ(config_1.codecs[i].payload_name, config_2.codecs[i].payload_name);
+ EXPECT_EQ(config_1.codecs[i].payload_type, config_2.codecs[i].payload_type);
+ EXPECT_EQ(config_1.codecs[i].rtx_payload_type,
+ config_2.codecs[i].rtx_payload_type);
+ }
+}
+
void RtcEventLogTestHelper::VerifyVideoReceiveStreamConfig(
const ParsedRtcEventLog& parsed_log,
size_t index,
- const VideoReceiveStream::Config& config) {
+ const rtclog::StreamConfig& config) {
const rtclog::Event& event = parsed_log.events_[index];
ASSERT_TRUE(IsValidBasicEvent(event));
ASSERT_EQ(rtclog::Event::VIDEO_RECEIVER_CONFIG_EVENT, event.type());
@@ -174,12 +196,12 @@
event.video_receiver_config();
// Check SSRCs.
ASSERT_TRUE(receiver_config.has_remote_ssrc());
- EXPECT_EQ(config.rtp.remote_ssrc, receiver_config.remote_ssrc());
+ EXPECT_EQ(config.remote_ssrc, receiver_config.remote_ssrc());
ASSERT_TRUE(receiver_config.has_local_ssrc());
- EXPECT_EQ(config.rtp.local_ssrc, receiver_config.local_ssrc());
+ EXPECT_EQ(config.local_ssrc, receiver_config.local_ssrc());
// Check RTCP settings.
ASSERT_TRUE(receiver_config.has_rtcp_mode());
- if (config.rtp.rtcp_mode == RtcpMode::kCompound) {
+ if (config.rtcp_mode == RtcpMode::kCompound) {
EXPECT_EQ(rtclog::VideoReceiveConfig::RTCP_COMPOUND,
receiver_config.rtcp_mode());
} else {
@@ -187,76 +209,51 @@
receiver_config.rtcp_mode());
}
ASSERT_TRUE(receiver_config.has_remb());
- EXPECT_EQ(config.rtp.remb, receiver_config.remb());
+ EXPECT_EQ(config.remb, receiver_config.remb());
// Check RTX map.
- ASSERT_EQ(static_cast<int>(config.rtp.rtx_payload_types.size()),
- receiver_config.rtx_map_size());
for (const rtclog::RtxMap& rtx_map : receiver_config.rtx_map()) {
ASSERT_TRUE(rtx_map.has_payload_type());
ASSERT_TRUE(rtx_map.has_config());
- EXPECT_EQ(1u, config.rtp.rtx_payload_types.count(rtx_map.payload_type()));
const rtclog::RtxConfig& rtx_config = rtx_map.config();
ASSERT_TRUE(rtx_config.has_rtx_ssrc());
ASSERT_TRUE(rtx_config.has_rtx_payload_type());
- EXPECT_EQ(config.rtp.rtx_ssrc, rtx_config.rtx_ssrc());
- EXPECT_EQ(config.rtp.rtx_payload_types.at(rtx_map.payload_type()),
- rtx_config.rtx_payload_type());
+
+ EXPECT_EQ(config.rtx_ssrc, rtx_config.rtx_ssrc());
+ auto codec_found =
+ std::find_if(config.codecs.begin(), config.codecs.end(),
+ [&rtx_map](const rtclog::StreamConfig::Codec& codec) {
+ return rtx_map.payload_type() == codec.payload_type;
+ });
+ ASSERT_TRUE(codec_found != config.codecs.end());
+ EXPECT_EQ(rtx_config.rtx_payload_type(), codec_found->rtx_payload_type);
}
// Check header extensions.
- ASSERT_EQ(static_cast<int>(config.rtp.extensions.size()),
+ ASSERT_EQ(static_cast<int>(config.rtp_extensions.size()),
receiver_config.header_extensions_size());
for (int i = 0; i < receiver_config.header_extensions_size(); i++) {
ASSERT_TRUE(receiver_config.header_extensions(i).has_name());
ASSERT_TRUE(receiver_config.header_extensions(i).has_id());
const std::string& name = receiver_config.header_extensions(i).name();
int id = receiver_config.header_extensions(i).id();
- EXPECT_EQ(config.rtp.extensions[i].id, id);
- EXPECT_EQ(config.rtp.extensions[i].uri, name);
+ EXPECT_EQ(config.rtp_extensions[i].id, id);
+ EXPECT_EQ(config.rtp_extensions[i].uri, name);
}
// Check decoders.
- ASSERT_EQ(static_cast<int>(config.decoders.size()),
+ ASSERT_EQ(static_cast<int>(config.codecs.size()),
receiver_config.decoders_size());
for (int i = 0; i < receiver_config.decoders_size(); i++) {
ASSERT_TRUE(receiver_config.decoders(i).has_name());
ASSERT_TRUE(receiver_config.decoders(i).has_payload_type());
const std::string& decoder_name = receiver_config.decoders(i).name();
int decoder_type = receiver_config.decoders(i).payload_type();
- EXPECT_EQ(config.decoders[i].payload_name, decoder_name);
- EXPECT_EQ(config.decoders[i].payload_type, decoder_type);
+ EXPECT_EQ(config.codecs[i].payload_name, decoder_name);
+ EXPECT_EQ(config.codecs[i].payload_type, decoder_type);
}
// Check consistency of the parser.
- VideoReceiveStream::Config parsed_config(nullptr);
+ rtclog::StreamConfig parsed_config;
parsed_log.GetVideoReceiveConfig(index, &parsed_config);
- EXPECT_EQ(config.rtp.remote_ssrc, parsed_config.rtp.remote_ssrc);
- EXPECT_EQ(config.rtp.local_ssrc, parsed_config.rtp.local_ssrc);
- // Check RTCP settings.
- EXPECT_EQ(config.rtp.rtcp_mode, parsed_config.rtp.rtcp_mode);
- EXPECT_EQ(config.rtp.remb, parsed_config.rtp.remb);
- // Check RTX map.
- EXPECT_EQ(config.rtp.rtx_ssrc, parsed_config.rtp.rtx_ssrc);
- EXPECT_EQ(config.rtp.rtx_payload_types.size(),
- parsed_config.rtp.rtx_payload_types.size());
- for (const auto& kv : config.rtp.rtx_payload_types) {
- auto parsed_kv = parsed_config.rtp.rtx_payload_types.find(kv.first);
- EXPECT_EQ(kv.first, parsed_kv->first);
- EXPECT_EQ(kv.second, parsed_kv->second);
- }
- // Check header extensions.
- EXPECT_EQ(config.rtp.extensions.size(), parsed_config.rtp.extensions.size());
- for (size_t i = 0; i < parsed_config.rtp.extensions.size(); i++) {
- EXPECT_EQ(config.rtp.extensions[i].uri,
- parsed_config.rtp.extensions[i].uri);
- EXPECT_EQ(config.rtp.extensions[i].id, parsed_config.rtp.extensions[i].id);
- }
- // Check decoders.
- EXPECT_EQ(config.decoders.size(), parsed_config.decoders.size());
- for (size_t i = 0; i < parsed_config.decoders.size(); i++) {
- EXPECT_EQ(config.decoders[i].payload_name,
- parsed_config.decoders[i].payload_name);
- EXPECT_EQ(config.decoders[i].payload_type,
- parsed_config.decoders[i].payload_type);
- }
+ VerifyStreamConfigsAreEqual(config, parsed_config);
}
void RtcEventLogTestHelper::VerifyVideoSendStreamConfig(
diff --git a/logging/rtc_event_log/rtc_event_log_unittest_helper.h b/logging/rtc_event_log/rtc_event_log_unittest_helper.h
index 235d112..301d496 100644
--- a/logging/rtc_event_log/rtc_event_log_unittest_helper.h
+++ b/logging/rtc_event_log/rtc_event_log_unittest_helper.h
@@ -21,7 +21,7 @@
static void VerifyVideoReceiveStreamConfig(
const ParsedRtcEventLog& parsed_log,
size_t index,
- const VideoReceiveStream::Config& config);
+ const rtclog::StreamConfig& config);
static void VerifyVideoSendStreamConfig(
const ParsedRtcEventLog& parsed_log,
size_t index,
diff --git a/tools/event_log_visualizer/analyzer.cc b/tools/event_log_visualizer/analyzer.cc
index 5ff0e58..3bf9764 100644
--- a/tools/event_log_visualizer/analyzer.cc
+++ b/tools/event_log_visualizer/analyzer.cc
@@ -331,14 +331,14 @@
switch (parsed_log_.GetEventType(i)) {
case ParsedRtcEventLog::VIDEO_RECEIVER_CONFIG_EVENT: {
- VideoReceiveStream::Config config(nullptr);
+ rtclog::StreamConfig config;
parsed_log_.GetVideoReceiveConfig(i, &config);
- StreamId stream(config.rtp.remote_ssrc, kIncomingPacket);
- extension_maps[stream] = RtpHeaderExtensionMap(config.rtp.extensions);
+ StreamId stream(config.remote_ssrc, kIncomingPacket);
+ extension_maps[stream] = RtpHeaderExtensionMap(config.rtp_extensions);
video_ssrcs_.insert(stream);
- StreamId rtx_stream(config.rtp.rtx_ssrc, kIncomingPacket);
+ StreamId rtx_stream(config.rtx_ssrc, kIncomingPacket);
extension_maps[rtx_stream] =
- RtpHeaderExtensionMap(config.rtp.extensions);
+ RtpHeaderExtensionMap(config.rtp_extensions);
video_ssrcs_.insert(rtx_stream);
rtx_ssrcs_.insert(rtx_stream);
break;
diff --git a/voice_engine/channel.cc b/voice_engine/channel.cc
index 6f01725..3aeca5f 100644
--- a/voice_engine/channel.cc
+++ b/voice_engine/channel.cc
@@ -76,11 +76,8 @@
void StopLogging() override { RTC_NOTREACHED(); }
void LogVideoReceiveStreamConfig(
- const webrtc::VideoReceiveStream::Config& config) override {
- rtc::CritScope lock(&crit_);
- if (event_log_) {
- event_log_->LogVideoReceiveStreamConfig(config);
- }
+ const webrtc::rtclog::StreamConfig&) override {
+ RTC_NOTREACHED();
}
void LogVideoSendStreamConfig(