diff --git a/modules/audio_coding/neteq/tools/rtc_event_log_source.cc b/modules/audio_coding/neteq/tools/rtc_event_log_source.cc index 582c2f2f13..0110b8cbd9 100644 --- a/modules/audio_coding/neteq/tools/rtc_event_log_source.cc +++ b/modules/audio_coding/neteq/tools/rtc_event_log_source.cc @@ -13,6 +13,7 @@ #include #include #include +#include #include #include "logging/rtc_event_log/rtc_event_processor.h" @@ -73,23 +74,30 @@ bool RtcEventLogSource::OpenFile(const std::string& file_name, ? std::numeric_limits::max() : parsed_log.stop_log_events().front().log_time_us(); + std::set packet_ssrcs; auto handle_rtp_packet = - [this, - first_log_end_time_us](const webrtc::LoggedRtpPacketIncoming& incoming) { + [this, first_log_end_time_us, + &packet_ssrcs](const webrtc::LoggedRtpPacketIncoming& incoming) { if (!filter_.test(incoming.rtp.header.payloadType) && incoming.log_time_us() < first_log_end_time_us) { rtp_packets_.emplace_back(absl::make_unique( incoming.rtp.header, incoming.rtp.total_length, incoming.rtp.total_length - incoming.rtp.header_length, static_cast(incoming.log_time_ms()))); + packet_ssrcs.insert(rtp_packets_.back()->header().ssrc); } }; + std::set ignored_ssrcs; auto handle_audio_playout = - [this, first_log_end_time_us]( - const webrtc::LoggedAudioPlayoutEvent& audio_playout) { + [this, first_log_end_time_us, &packet_ssrcs, + &ignored_ssrcs](const webrtc::LoggedAudioPlayoutEvent& audio_playout) { if (audio_playout.log_time_us() < first_log_end_time_us) { - audio_outputs_.emplace_back(audio_playout.log_time_ms()); + if (packet_ssrcs.count(audio_playout.ssrc) > 0) { + audio_outputs_.emplace_back(audio_playout.log_time_ms()); + } else { + ignored_ssrcs.insert(audio_playout.ssrc); + } } }; @@ -121,6 +129,12 @@ bool RtcEventLogSource::OpenFile(const std::string& file_name, // Fills in rtp_packets_ and audio_outputs_. event_processor.ProcessEventsInOrder(); + for (const auto& ssrc : ignored_ssrcs) { + std::cout << "Ignoring GetAudio events from SSRC 0x" << std::hex << ssrc + << " because no packets were found with a matching SSRC." + << std::endl; + } + return true; }