Index: webrtc/logging/rtc_event_log/rtc_event_log.cc |
diff --git a/webrtc/logging/rtc_event_log/rtc_event_log.cc b/webrtc/logging/rtc_event_log/rtc_event_log.cc |
index b545d6453d7197f34341a61b1c5ca3a6a1dd8600..96f1ea1d807ded71ffb29a6f305bb6d9ee215202 100644 |
--- a/webrtc/logging/rtc_event_log/rtc_event_log.cc |
+++ b/webrtc/logging/rtc_event_log/rtc_event_log.cc |
@@ -77,6 +77,8 @@ class RtcEventLogImpl final : public RtcEventLog { |
void LogBwePacketLossEvent(int32_t bitrate, |
uint8_t fraction_loss, |
int32_t total_packets) override; |
+ void LogBwePacketDelayEvent(int32_t bitrate, |
+ BandwidthUsage detector_state) override; |
void LogAudioNetworkAdaptation( |
const AudioNetworkAdaptor::EncoderRuntimeConfig& config) override; |
@@ -129,6 +131,20 @@ rtclog::MediaType ConvertMediaType(MediaType media_type) { |
return rtclog::ANY; |
} |
+rtclog::BwePacketDelayEvent::DetectorState ConvertDetectorState( |
+ BandwidthUsage state) { |
+ switch (state) { |
+ case BandwidthUsage::kBwNormal: |
+ return rtclog::BwePacketDelayEvent::BWE_NORMAL; |
+ case BandwidthUsage::kBwUnderusing: |
+ return rtclog::BwePacketDelayEvent::BWE_UNDERUSING; |
+ case BandwidthUsage::kBwOverusing: |
+ return rtclog::BwePacketDelayEvent::BWE_OVERUSING; |
+ } |
+ RTC_NOTREACHED(); |
+ return rtclog::BwePacketDelayEvent::BWE_NORMAL; |
+} |
+ |
// The RTP and RTCP buffers reserve space for twice the expected number of |
// sent packets because they also contain received packets. |
static const int kEventsPerSecond = 1000; |
@@ -436,6 +452,17 @@ void RtcEventLogImpl::LogBwePacketLossEvent(int32_t bitrate, |
StoreEvent(&event); |
} |
+void RtcEventLogImpl::LogBwePacketDelayEvent(int32_t bitrate, |
+ BandwidthUsage detector_state) { |
+ std::unique_ptr<rtclog::Event> event(new rtclog::Event()); |
+ event->set_timestamp_us(rtc::TimeMicros()); |
+ event->set_type(rtclog::Event::BWE_PACKET_DELAY_EVENT); |
+ auto bwe_event = event->mutable_bwe_packet_delay_event(); |
+ bwe_event->set_bitrate(bitrate); |
+ bwe_event->set_detector_state(ConvertDetectorState(detector_state)); |
+ StoreEvent(&event); |
+} |
+ |
void RtcEventLogImpl::LogAudioNetworkAdaptation( |
const AudioNetworkAdaptor::EncoderRuntimeConfig& config) { |
std::unique_ptr<rtclog::Event> event(new rtclog::Event()); |