From c0876aab46356cb4a6ead71b2605301dfce31619 Mon Sep 17 00:00:00 2001 From: perkj Date: Mon, 22 May 2017 04:08:28 -0700 Subject: [PATCH] Replace VideoSendStream::Config with new rtclog::StreamConfig in RtcEventLog. BUG=webrtc:7538 Review-Url: https://codereview.webrtc.org/2857933002 Cr-Commit-Position: refs/heads/master@{#18221} --- webrtc/call/call.cc | 23 ++++++- .../rtc_event_log/mock/mock_rtc_event_log.h | 2 +- webrtc/logging/rtc_event_log/rtc_event_log.cc | 33 ++++++---- webrtc/logging/rtc_event_log/rtc_event_log.h | 10 ++- .../rtc_event_log/rtc_event_log2text.cc | 22 +++---- .../rtc_event_log/rtc_event_log_parser.cc | 42 ++++++------- .../rtc_event_log/rtc_event_log_parser.h | 4 +- .../rtc_event_log/rtc_event_log_unittest.cc | 22 +++---- .../rtc_event_log_unittest_helper.cc | 62 +++++-------------- .../rtc_event_log_unittest_helper.h | 7 +-- webrtc/tools/event_log_visualizer/analyzer.cc | 22 +++---- webrtc/voice_engine/channel.cc | 8 +-- 12 files changed, 115 insertions(+), 142 deletions(-) diff --git a/webrtc/call/call.cc b/webrtc/call/call.cc index f9f1fb5eab..0297867a6f 100644 --- a/webrtc/call/call.cc +++ b/webrtc/call/call.cc @@ -107,6 +107,23 @@ rtclog::StreamConfig CreateRtcLogStreamConfig( return rtclog_config; } +rtclog::StreamConfig CreateRtcLogStreamConfig( + const VideoSendStream::Config& config, + size_t ssrc_index) { + rtclog::StreamConfig rtclog_config; + rtclog_config.local_ssrc = config.rtp.ssrcs[ssrc_index]; + if (ssrc_index < config.rtp.rtx.ssrcs.size()) { + rtclog_config.rtx_ssrc = config.rtp.rtx.ssrcs[ssrc_index]; + } + rtclog_config.rtcp_mode = config.rtp.rtcp_mode; + rtclog_config.rtp_extensions = config.rtp.extensions; + + rtclog_config.codecs.emplace_back(config.encoder_settings.payload_name, + config.encoder_settings.payload_type, + config.rtp.rtx.payload_type); + return rtclog_config; +} + } // namespace namespace internal { @@ -638,7 +655,11 @@ webrtc::VideoSendStream* Call::CreateVideoSendStream( RTC_DCHECK(configuration_thread_checker_.CalledOnValidThread()); video_send_delay_stats_->AddSsrcs(config); - event_log_->LogVideoSendStreamConfig(config); + for (size_t ssrc_index = 0; ssrc_index < config.rtp.ssrcs.size(); + ++ssrc_index) { + event_log_->LogVideoSendStreamConfig( + CreateRtcLogStreamConfig(config, ssrc_index)); + } // TODO(mflodman): Base the start bitrate on a current bandwidth estimate, if // the call has already started. diff --git a/webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h b/webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h index e6dd9d6a8e..2bafe5bacd 100644 --- a/webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h +++ b/webrtc/logging/rtc_event_log/mock/mock_rtc_event_log.h @@ -33,7 +33,7 @@ class MockRtcEventLog : public RtcEventLog { void(const rtclog::StreamConfig& config)); MOCK_METHOD1(LogVideoSendStreamConfig, - void(const webrtc::VideoSendStream::Config& config)); + void(const rtclog::StreamConfig& config)); MOCK_METHOD1(LogAudioReceiveStreamConfig, void(const webrtc::AudioReceiveStream::Config& config)); diff --git a/webrtc/logging/rtc_event_log/rtc_event_log.cc b/webrtc/logging/rtc_event_log/rtc_event_log.cc index d7e6067c75..9bdf55c345 100644 --- a/webrtc/logging/rtc_event_log/rtc_event_log.cc +++ b/webrtc/logging/rtc_event_log/rtc_event_log.cc @@ -63,7 +63,7 @@ class RtcEventLogImpl final : public RtcEventLog { int64_t max_size_bytes) override; void StopLogging() override; void LogVideoReceiveStreamConfig(const rtclog::StreamConfig& config) override; - void LogVideoSendStreamConfig(const VideoSendStream::Config& config) override; + void LogVideoSendStreamConfig(const rtclog::StreamConfig& config) override; void LogAudioReceiveStreamConfig( const AudioReceiveStream::Config& config) override; void LogAudioSendStreamConfig(const AudioSendStream::Config& config) override; @@ -312,32 +312,41 @@ void RtcEventLogImpl::LogVideoReceiveStreamConfig( } void RtcEventLogImpl::LogVideoSendStreamConfig( - const VideoSendStream::Config& config) { + const rtclog::StreamConfig& config) { std::unique_ptr event(new rtclog::Event()); event->set_timestamp_us(rtc::TimeMicros()); event->set_type(rtclog::Event::VIDEO_SENDER_CONFIG_EVENT); rtclog::VideoSendConfig* sender_config = event->mutable_video_sender_config(); - for (const auto& ssrc : config.rtp.ssrcs) { - sender_config->add_ssrcs(ssrc); + // TODO(perkj): rtclog::VideoSendConfig should only contain one SSRC. + sender_config->add_ssrcs(config.local_ssrc); + if (config.rtx_ssrc != 0) { + sender_config->add_rtx_ssrcs(config.rtx_ssrc); } - for (const auto& e : config.rtp.extensions) { + for (const auto& e : config.rtp_extensions) { rtclog::RtpHeaderExtension* extension = sender_config->add_header_extensions(); extension->set_name(e.uri); extension->set_id(e.id); } - for (const auto& rtx_ssrc : config.rtp.rtx.ssrcs) { - sender_config->add_rtx_ssrcs(rtx_ssrc); - } - sender_config->set_rtx_payload_type(config.rtp.rtx.payload_type); + // TODO(perkj): rtclog::VideoSendConfig should contain many possible codec + // configurations. + for (const auto& codec : config.codecs) { + sender_config->set_rtx_payload_type(codec.rtx_payload_type); + rtclog::EncoderConfig* encoder = sender_config->mutable_encoder(); + encoder->set_name(codec.payload_name); + encoder->set_payload_type(codec.payload_type); + + if (config.codecs.size() > 1) { + LOG(WARNING) << "LogVideoSendStreamConfig currently only supports one " + << "codec. Logging codec :" << codec.payload_name; + break; + } + } - rtclog::EncoderConfig* encoder = sender_config->mutable_encoder(); - encoder->set_name(config.encoder_settings.payload_name); - encoder->set_payload_type(config.encoder_settings.payload_type); StoreEvent(&event); } diff --git a/webrtc/logging/rtc_event_log/rtc_event_log.h b/webrtc/logging/rtc_event_log/rtc_event_log.h index d3e62130fa..fb64e94005 100644 --- a/webrtc/logging/rtc_event_log/rtc_event_log.h +++ b/webrtc/logging/rtc_event_log/rtc_event_log.h @@ -112,13 +112,12 @@ class RtcEventLog { // Stops logging to file and waits until the thread has finished. virtual void StopLogging() = 0; - // Logs configuration information for video receive stream. + // Logs configuration information for a video receive stream. virtual void LogVideoReceiveStreamConfig( const rtclog::StreamConfig& config) = 0; - // Logs configuration information for webrtc::VideoSendStream. - virtual void LogVideoSendStreamConfig( - const webrtc::VideoSendStream::Config& config) = 0; + // Logs configuration information for a video send stream. + virtual void LogVideoSendStreamConfig(const rtclog::StreamConfig& config) = 0; // Logs configuration information for webrtc::AudioReceiveStream. virtual void LogAudioReceiveStreamConfig( @@ -201,8 +200,7 @@ class RtcEventLogNullImpl final : public RtcEventLog { void StopLogging() override {} void LogVideoReceiveStreamConfig( const rtclog::StreamConfig& config) override {} - void LogVideoSendStreamConfig( - const VideoSendStream::Config& config) override {} + void LogVideoSendStreamConfig(const rtclog::StreamConfig& config) override {} void LogAudioReceiveStreamConfig( const AudioReceiveStream::Config& config) override {} void LogAudioSendStreamConfig( diff --git a/webrtc/logging/rtc_event_log/rtc_event_log2text.cc b/webrtc/logging/rtc_event_log/rtc_event_log2text.cc index 76fc95e1de..d2ee790944 100644 --- a/webrtc/logging/rtc_event_log/rtc_event_log2text.cc +++ b/webrtc/logging/rtc_event_log/rtc_event_log2text.cc @@ -382,26 +382,18 @@ int main(int argc, char* argv[]) { } if (parsed_stream.GetEventType(i) == webrtc::ParsedRtcEventLog::VIDEO_SENDER_CONFIG_EVENT) { - webrtc::VideoSendStream::Config config(nullptr); + webrtc::rtclog::StreamConfig config; parsed_stream.GetVideoSendConfig(i, &config); + global_streams.emplace_back(config.local_ssrc, webrtc::MediaType::VIDEO, + webrtc::kOutgoingPacket); - for (uint32_t ssrc : config.rtp.ssrcs) { - global_streams.emplace_back(ssrc, webrtc::MediaType::VIDEO, - webrtc::kOutgoingPacket); - } - for (uint32_t ssrc : config.rtp.rtx.ssrcs) { - global_streams.emplace_back(ssrc, webrtc::MediaType::VIDEO, - webrtc::kOutgoingPacket); - } + global_streams.emplace_back(config.rtx_ssrc, webrtc::MediaType::VIDEO, + webrtc::kOutgoingPacket); if (!FLAGS_noconfig && !FLAGS_novideo && !FLAGS_nooutgoing) { std::cout << parsed_stream.GetTimestamp(i) << "\tVIDEO_SEND_CONFIG"; - std::cout << "\tssrcs="; - for (const auto& ssrc : config.rtp.ssrcs) - std::cout << ssrc << ','; - std::cout << "\trtx_ssrcs="; - for (const auto& ssrc : config.rtp.rtx.ssrcs) - std::cout << ssrc << ','; + std::cout << "\tssrcs=" << config.local_ssrc; + std::cout << "\trtx_ssrcs=" << config.rtx_ssrc; std::cout << std::endl; } } 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 2816158501..db7690c463 100644 --- a/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc +++ b/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc @@ -378,9 +378,8 @@ void ParsedRtcEventLog::GetVideoReceiveConfig( } } -void ParsedRtcEventLog::GetVideoSendConfig( - size_t index, - VideoSendStream::Config* config) const { +void ParsedRtcEventLog::GetVideoSendConfig(size_t index, + rtclog::StreamConfig* config) const { RTC_CHECK_LT(index, GetNumberOfEvents()); const rtclog::Event& event = events_[index]; RTC_CHECK(config != nullptr); @@ -389,32 +388,31 @@ void ParsedRtcEventLog::GetVideoSendConfig( RTC_CHECK(event.has_video_sender_config()); const rtclog::VideoSendConfig& sender_config = event.video_sender_config(); // Get SSRCs. - config->rtp.ssrcs.clear(); - for (int i = 0; i < sender_config.ssrcs_size(); i++) { - config->rtp.ssrcs.push_back(sender_config.ssrcs(i)); - } - // Get header extensions. - GetHeaderExtensions(&config->rtp.extensions, - sender_config.header_extensions()); - // Get RTX settings. - config->rtp.rtx.ssrcs.clear(); - for (int i = 0; i < sender_config.rtx_ssrcs_size(); i++) { - config->rtp.rtx.ssrcs.push_back(sender_config.rtx_ssrcs(i)); + 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) { RTC_CHECK(sender_config.has_rtx_payload_type()); - config->rtp.rtx.payload_type = sender_config.rtx_payload_type(); - } else { - // Reset RTX payload type default value if no RTX SSRCs are used. - config->rtp.rtx.payload_type = -1; + config->rtx_ssrc = sender_config.rtx_ssrcs(0); + if (sender_config.rtx_ssrcs_size() > 1) { + LOG(WARNING) << "VideoSendConfig contains multiple rtx ssrcs."; + } } - // Get encoder. + // 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->encoder_settings.payload_name = sender_config.encoder().name(); - config->encoder_settings.payload_type = - sender_config.encoder().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); } void ParsedRtcEventLog::GetAudioReceiveConfig( diff --git a/webrtc/logging/rtc_event_log/rtc_event_log_parser.h b/webrtc/logging/rtc_event_log/rtc_event_log_parser.h index 147ff1b36b..befc619cb1 100644 --- a/webrtc/logging/rtc_event_log/rtc_event_log_parser.h +++ b/webrtc/logging/rtc_event_log/rtc_event_log_parser.h @@ -118,9 +118,9 @@ class ParsedRtcEventLog { // Only the fields that are stored in the protobuf will be written. void GetVideoReceiveConfig(size_t index, rtclog::StreamConfig* config) const; - // Reads a config event to a (non-NULL) VideoSendStream::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 GetVideoSendConfig(size_t index, VideoSendStream::Config* config) const; + void GetVideoSendConfig(size_t index, rtclog::StreamConfig* config) const; // Reads a config event to a (non-NULL) AudioReceiveStream::Config struct. // Only the fields that are stored in the protobuf will be written. diff --git a/webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc b/webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc index cb3bf0dadb..4196854fd8 100644 --- a/webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc +++ b/webrtc/logging/rtc_event_log/rtc_event_log_unittest.cc @@ -175,20 +175,16 @@ void GenerateVideoReceiveConfig(uint32_t extensions_bitvector, } void GenerateVideoSendConfig(uint32_t extensions_bitvector, - VideoSendStream::Config* config, + rtclog::StreamConfig* config, Random* prng) { - // Create a map from a payload type to an encoder name. - config->encoder_settings.payload_type = prng->Rand(0, 127); - config->encoder_settings.payload_name = (prng->Rand() ? "VP8" : "H264"); - // Add SSRCs for the stream. - config->rtp.ssrcs.push_back(prng->Rand()); - // Add a map from a payload type to new ssrcs and a new payload type for RTX. - config->rtp.rtx.ssrcs.push_back(prng->Rand()); - config->rtp.rtx.payload_type = prng->Rand(0, 127); + config->codecs.emplace_back(prng->Rand() ? "VP8" : "H264", + prng->Rand(1, 127), prng->Rand(1, 127)); + config->local_ssrc = prng->Rand(); + config->rtx_ssrc = prng->Rand(); // Add header extensions. for (unsigned i = 0; i < kNumExtensions; i++) { if (extensions_bitvector & (1u << i)) { - config->rtp.extensions.push_back( + config->rtp_extensions.push_back( RtpExtension(kExtensionNames[i], prng->Rand())); } } @@ -253,7 +249,7 @@ void LogSessionAndReadBack(size_t rtp_count, std::vector > bwe_loss_updates; rtclog::StreamConfig receiver_config; - VideoSendStream::Config sender_config(nullptr); + rtclog::StreamConfig sender_config; Random prng(random_seed); @@ -826,7 +822,7 @@ class VideoReceiveConfigReadWriteTest : public ConfigReadWriteTest { class VideoSendConfigReadWriteTest : public ConfigReadWriteTest { public: - VideoSendConfigReadWriteTest() : config(nullptr) {} + VideoSendConfigReadWriteTest() {} void GenerateConfig(uint32_t extensions_bitvector) override { GenerateVideoSendConfig(extensions_bitvector, &config, &prng); } @@ -838,7 +834,7 @@ class VideoSendConfigReadWriteTest : public ConfigReadWriteTest { RtcEventLogTestHelper::VerifyVideoSendStreamConfig(parsed_log, index, config); } - VideoSendStream::Config config; + rtclog::StreamConfig config; }; class AudioNetworkAdaptationReadWriteTest : public ConfigReadWriteTest { diff --git a/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.cc b/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.cc index b5d739e13f..395836106c 100644 --- a/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.cc +++ b/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.cc @@ -259,73 +259,41 @@ void RtcEventLogTestHelper::VerifyVideoReceiveStreamConfig( void RtcEventLogTestHelper::VerifyVideoSendStreamConfig( const ParsedRtcEventLog& parsed_log, size_t index, - const VideoSendStream::Config& config) { + const rtclog::StreamConfig& config) { const rtclog::Event& event = parsed_log.events_[index]; ASSERT_TRUE(IsValidBasicEvent(event)); ASSERT_EQ(rtclog::Event::VIDEO_SENDER_CONFIG_EVENT, event.type()); const rtclog::VideoSendConfig& sender_config = event.video_sender_config(); - // Check SSRCs. - ASSERT_EQ(static_cast(config.rtp.ssrcs.size()), - sender_config.ssrcs_size()); - for (int i = 0; i < sender_config.ssrcs_size(); i++) { - EXPECT_EQ(config.rtp.ssrcs[i], sender_config.ssrcs(i)); - } + + EXPECT_EQ(config.local_ssrc, sender_config.ssrcs(0)); + EXPECT_EQ(config.rtx_ssrc, sender_config.rtx_ssrcs(0)); + // Check header extensions. - ASSERT_EQ(static_cast(config.rtp.extensions.size()), + ASSERT_EQ(static_cast(config.rtp_extensions.size()), sender_config.header_extensions_size()); for (int i = 0; i < sender_config.header_extensions_size(); i++) { ASSERT_TRUE(sender_config.header_extensions(i).has_name()); ASSERT_TRUE(sender_config.header_extensions(i).has_id()); const std::string& name = sender_config.header_extensions(i).name(); int id = sender_config.header_extensions(i).id(); - EXPECT_EQ(config.rtp.extensions[i].id, id); - EXPECT_EQ(config.rtp.extensions[i].uri, name); - } - // Check RTX settings. - ASSERT_EQ(static_cast(config.rtp.rtx.ssrcs.size()), - sender_config.rtx_ssrcs_size()); - for (int i = 0; i < sender_config.rtx_ssrcs_size(); i++) { - EXPECT_EQ(config.rtp.rtx.ssrcs[i], sender_config.rtx_ssrcs(i)); - } - if (sender_config.rtx_ssrcs_size() > 0) { - ASSERT_TRUE(sender_config.has_rtx_payload_type()); - EXPECT_EQ(config.rtp.rtx.payload_type, sender_config.rtx_payload_type()); + EXPECT_EQ(config.rtp_extensions[i].id, id); + EXPECT_EQ(config.rtp_extensions[i].uri, name); } // Check encoder. ASSERT_TRUE(sender_config.has_encoder()); ASSERT_TRUE(sender_config.encoder().has_name()); ASSERT_TRUE(sender_config.encoder().has_payload_type()); - EXPECT_EQ(config.encoder_settings.payload_name, - sender_config.encoder().name()); - EXPECT_EQ(config.encoder_settings.payload_type, + EXPECT_EQ(config.codecs[0].payload_name, sender_config.encoder().name()); + EXPECT_EQ(config.codecs[0].payload_type, sender_config.encoder().payload_type()); + EXPECT_EQ(config.codecs[0].rtx_payload_type, + sender_config.rtx_payload_type()); + // Check consistency of the parser. - VideoSendStream::Config parsed_config(nullptr); + rtclog::StreamConfig parsed_config; parsed_log.GetVideoSendConfig(index, &parsed_config); - // Check SSRCs - EXPECT_EQ(config.rtp.ssrcs.size(), parsed_config.rtp.ssrcs.size()); - for (size_t i = 0; i < config.rtp.ssrcs.size(); i++) { - EXPECT_EQ(config.rtp.ssrcs[i], parsed_config.rtp.ssrcs[i]); - } - // 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 RTX settings. - EXPECT_EQ(config.rtp.rtx.ssrcs.size(), parsed_config.rtp.rtx.ssrcs.size()); - for (size_t i = 0; i < config.rtp.rtx.ssrcs.size(); i++) { - EXPECT_EQ(config.rtp.rtx.ssrcs[i], parsed_config.rtp.rtx.ssrcs[i]); - } - EXPECT_EQ(config.rtp.rtx.payload_type, parsed_config.rtp.rtx.payload_type); - // Check encoder. - EXPECT_EQ(config.encoder_settings.payload_name, - parsed_config.encoder_settings.payload_name); - EXPECT_EQ(config.encoder_settings.payload_type, - parsed_config.encoder_settings.payload_type); + VerifyStreamConfigsAreEqual(config, parsed_config); } void RtcEventLogTestHelper::VerifyAudioReceiveStreamConfig( diff --git a/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.h b/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.h index 301d496908..2408ff2e6d 100644 --- a/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.h +++ b/webrtc/logging/rtc_event_log/rtc_event_log_unittest_helper.h @@ -22,10 +22,9 @@ class RtcEventLogTestHelper { const ParsedRtcEventLog& parsed_log, size_t index, const rtclog::StreamConfig& config); - static void VerifyVideoSendStreamConfig( - const ParsedRtcEventLog& parsed_log, - size_t index, - const VideoSendStream::Config& config); + static void VerifyVideoSendStreamConfig(const ParsedRtcEventLog& parsed_log, + size_t index, + const rtclog::StreamConfig& config); static void VerifyAudioReceiveStreamConfig( const ParsedRtcEventLog& parsed_log, size_t index, diff --git a/webrtc/tools/event_log_visualizer/analyzer.cc b/webrtc/tools/event_log_visualizer/analyzer.cc index 3bf97642b5..513e3c1188 100644 --- a/webrtc/tools/event_log_visualizer/analyzer.cc +++ b/webrtc/tools/event_log_visualizer/analyzer.cc @@ -344,20 +344,16 @@ EventLogAnalyzer::EventLogAnalyzer(const ParsedRtcEventLog& log) break; } case ParsedRtcEventLog::VIDEO_SENDER_CONFIG_EVENT: { - VideoSendStream::Config config(nullptr); + rtclog::StreamConfig config; parsed_log_.GetVideoSendConfig(i, &config); - for (auto ssrc : config.rtp.ssrcs) { - StreamId stream(ssrc, kOutgoingPacket); - extension_maps[stream] = RtpHeaderExtensionMap(config.rtp.extensions); - video_ssrcs_.insert(stream); - } - for (auto ssrc : config.rtp.rtx.ssrcs) { - StreamId rtx_stream(ssrc, kOutgoingPacket); - extension_maps[rtx_stream] = - RtpHeaderExtensionMap(config.rtp.extensions); - video_ssrcs_.insert(rtx_stream); - rtx_ssrcs_.insert(rtx_stream); - } + StreamId stream(config.local_ssrc, kOutgoingPacket); + extension_maps[stream] = RtpHeaderExtensionMap(config.rtp_extensions); + video_ssrcs_.insert(stream); + StreamId rtx_stream(config.rtx_ssrc, kOutgoingPacket); + extension_maps[rtx_stream] = + RtpHeaderExtensionMap(config.rtp_extensions); + video_ssrcs_.insert(rtx_stream); + rtx_ssrcs_.insert(rtx_stream); break; } case ParsedRtcEventLog::AUDIO_RECEIVER_CONFIG_EVENT: { diff --git a/webrtc/voice_engine/channel.cc b/webrtc/voice_engine/channel.cc index 3aeca5fb49..10314eeabd 100644 --- a/webrtc/voice_engine/channel.cc +++ b/webrtc/voice_engine/channel.cc @@ -80,12 +80,8 @@ class RtcEventLogProxy final : public webrtc::RtcEventLog { RTC_NOTREACHED(); } - void LogVideoSendStreamConfig( - const webrtc::VideoSendStream::Config& config) override { - rtc::CritScope lock(&crit_); - if (event_log_) { - event_log_->LogVideoSendStreamConfig(config); - } + void LogVideoSendStreamConfig(const webrtc::rtclog::StreamConfig&) override { + RTC_NOTREACHED(); } void LogAudioReceiveStreamConfig(