| 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 362d79e4dea11a1c108c4c9cda4a6b4930a9bf70..8f1b89df6ba31c95e3ce4270a6f6e3f949c47876 100644
|
| --- a/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc
|
| +++ b/webrtc/logging/rtc_event_log/rtc_event_log_parser.cc
|
| @@ -104,6 +104,20 @@ std::pair<uint64_t, bool> ParseVarInt(std::istream& stream) {
|
| return std::make_pair(varint, false);
|
| }
|
|
|
| +void GetHeaderExtensions(
|
| + std::vector<RtpExtension>* header_extensions,
|
| + const google::protobuf::RepeatedPtrField<rtclog::RtpHeaderExtension>&
|
| + proto_header_extensions) {
|
| + header_extensions->clear();
|
| + for (auto& p : proto_header_extensions) {
|
| + RTC_CHECK(p.has_name());
|
| + RTC_CHECK(p.has_id());
|
| + const std::string& name = p.name();
|
| + int id = p.id();
|
| + header_extensions->push_back(RtpExtension(name, id));
|
| + }
|
| +}
|
| +
|
| } // namespace
|
|
|
| bool ParsedRtcEventLog::ParseFile(const std::string& filename) {
|
| @@ -311,14 +325,8 @@ void ParsedRtcEventLog::GetVideoReceiveConfig(
|
| config->rtp.rtx.insert(std::make_pair(map.payload_type(), rtx_pair));
|
| }
|
| // Get header extensions.
|
| - config->rtp.extensions.clear();
|
| - for (int i = 0; i < receiver_config.header_extensions_size(); i++) {
|
| - RTC_CHECK(receiver_config.header_extensions(i).has_name());
|
| - RTC_CHECK(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();
|
| - config->rtp.extensions.push_back(RtpExtension(name, id));
|
| - }
|
| + GetHeaderExtensions(&config->rtp.extensions,
|
| + receiver_config.header_extensions());
|
| // Get decoders.
|
| config->decoders.clear();
|
| for (int i = 0; i < receiver_config.decoders_size(); i++) {
|
| @@ -347,14 +355,8 @@ void ParsedRtcEventLog::GetVideoSendConfig(
|
| config->rtp.ssrcs.push_back(sender_config.ssrcs(i));
|
| }
|
| // Get header extensions.
|
| - config->rtp.extensions.clear();
|
| - for (int i = 0; i < sender_config.header_extensions_size(); i++) {
|
| - RTC_CHECK(sender_config.header_extensions(i).has_name());
|
| - RTC_CHECK(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();
|
| - config->rtp.extensions.push_back(RtpExtension(name, id));
|
| - }
|
| + 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++) {
|
| @@ -376,6 +378,45 @@ void ParsedRtcEventLog::GetVideoSendConfig(
|
| sender_config.encoder().payload_type();
|
| }
|
|
|
| +void ParsedRtcEventLog::GetAudioReceiveConfig(
|
| + size_t index,
|
| + AudioReceiveStream::Config* config) const {
|
| + RTC_CHECK_LT(index, GetNumberOfEvents());
|
| + const rtclog::Event& event = events_[index];
|
| + RTC_CHECK(config != nullptr);
|
| + RTC_CHECK(event.has_type());
|
| + RTC_CHECK_EQ(event.type(), rtclog::Event::AUDIO_RECEIVER_CONFIG_EVENT);
|
| + RTC_CHECK(event.has_audio_receiver_config());
|
| + const rtclog::AudioReceiveConfig& receiver_config =
|
| + event.audio_receiver_config();
|
| + // Get SSRCs.
|
| + RTC_CHECK(receiver_config.has_remote_ssrc());
|
| + config->rtp.remote_ssrc = receiver_config.remote_ssrc();
|
| + RTC_CHECK(receiver_config.has_local_ssrc());
|
| + config->rtp.local_ssrc = receiver_config.local_ssrc();
|
| + // Get header extensions.
|
| + GetHeaderExtensions(&config->rtp.extensions,
|
| + receiver_config.header_extensions());
|
| +}
|
| +
|
| +void ParsedRtcEventLog::GetAudioSendConfig(
|
| + size_t index,
|
| + AudioSendStream::Config* config) const {
|
| + RTC_CHECK_LT(index, GetNumberOfEvents());
|
| + const rtclog::Event& event = events_[index];
|
| + RTC_CHECK(config != nullptr);
|
| + 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->rtp.ssrc = sender_config.ssrc();
|
| + // Get header extensions.
|
| + GetHeaderExtensions(&config->rtp.extensions,
|
| + sender_config.header_extensions());
|
| +}
|
| +
|
| void ParsedRtcEventLog::GetAudioPlayout(size_t index, uint32_t* ssrc) const {
|
| RTC_CHECK_LT(index, GetNumberOfEvents());
|
| const rtclog::Event& event = events_[index];
|
|
|