Commit 220e93a5 authored by Michael Froman's avatar Michael Froman
Browse files

Bug 1828517 - Vendor libwebrtc from 6afa92ab20

Upstream commit: https://webrtc.googlesource.com/src/+/6afa92ab2054cf4fd9b42d15073b742d1a315c24
    Tooling to process RtcEventNetEqSetMinimumDelay

    This introduce some tooling to display and plot the NetEq SetMinimum
    delay event.

    Bug: webrtc:14763
    Change-Id: I69b73a51322734ec62e9b99abcdd0ac4e735879f
    Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/287860


    Reviewed-by: default avatarBjörn Terelius <terelius@webrtc.org>
    Commit-Queue: Lionel Koenig <lionelk@webrtc.org>
    Reviewed-by: default avatarLionel Koenig <lionelk@webrtc.org>
    Reviewed-by: default avatarPer Kjellander <perkj@webrtc.org>
    Cr-Commit-Position: refs/heads/main@{#39112}
parent 03b2fb02
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -20952,3 +20952,6 @@ c01410ea1e
# MOZ_LIBWEBRTC_SRC=/home/mfroman/mozilla/moz-central/.moz-fast-forward/moz-libwebrtc MOZ_LIBWEBRTC_BRANCH=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
# base of lastest vendoring
55ac75f177
# MOZ_LIBWEBRTC_SRC=/home/mfroman/mozilla/moz-central/.moz-fast-forward/moz-libwebrtc MOZ_LIBWEBRTC_BRANCH=mozpatches bash dom/media/webrtc/third_party_build/fast-forward-libwebrtc.sh
# base of lastest vendoring
6afa92ab20
+2 −0
Original line number Diff line number Diff line
@@ -13990,3 +13990,5 @@ libwebrtc updated from /home/mfroman/mozilla/moz-central/.moz-fast-forward/moz-l
libwebrtc updated from /home/mfroman/mozilla/moz-central/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2023-04-21T16:02:07.802013.
# ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /home/mfroman/mozilla/moz-central/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc
libwebrtc updated from /home/mfroman/mozilla/moz-central/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2023-04-21T16:03:03.714495.
# ./mach python dom/media/webrtc/third_party_build/vendor-libwebrtc.py --from-local /home/mfroman/mozilla/moz-central/.moz-fast-forward/moz-libwebrtc --commit mozpatches libwebrtc
libwebrtc updated from /home/mfroman/mozilla/moz-central/.moz-fast-forward/moz-libwebrtc commit mozpatches on 2023-04-21T16:04:02.469043.
+14 −0
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@
#include "logging/rtc_event_log/events/rtc_event_generic_packet_sent.h"
#include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair.h"
#include "logging/rtc_event_log/events/rtc_event_ice_candidate_pair_config.h"
#include "logging/rtc_event_log/events/rtc_event_neteq_set_minimum_delay.h"
#include "logging/rtc_event_log/events/rtc_event_probe_cluster_created.h"
#include "logging/rtc_event_log/events/rtc_event_probe_result_failure.h"
#include "logging/rtc_event_log/events/rtc_event_probe_result_success.h"
@@ -125,6 +126,14 @@ bool Convert(std::string inputfile,
            event.ssrc);
  };

  auto neteq_set_minimum_delay_handler =
      [&](const LoggedNetEqSetMinimumDelayEvent& event) {
        fprintf(output,
                "NETEQ_SET_MINIMUM_DELAY %" PRId64
                " remote_ssrc=%u minimum_delay=%d\n",
                event.log_time_ms(), event.remote_ssrc, event.minimum_delay_ms);
      };

  auto audio_network_adaptation_handler =
      [&](const LoggedAudioNetworkAdaptationEvent& event) {
        fprintf(output, "AUDIO_NETWORK_ADAPTATION %" PRId64,
@@ -449,6 +458,11 @@ bool Convert(std::string inputfile,
  for (const auto& kv : parsed_log.audio_playout_events()) {
    processor.AddEvents(kv.second, audio_playout_handler);
  }

  for (const auto& kv : parsed_log.neteq_set_minimum_delay_events()) {
    processor.AddEvents(kv.second, neteq_set_minimum_delay_handler);
  }

  processor.AddEvents(parsed_log.audio_network_adaptation_events(),
                      audio_network_adaptation_handler);

+24 −1
Original line number Diff line number Diff line
@@ -205,7 +205,6 @@ absl::optional<double> NetworkDelayDiff_CaptureTime(
  return delay_change;
}


template <typename T>
TimeSeries CreateRtcpTypeTimeSeries(const std::vector<T>& rtcp_list,
                                    AnalyzerConfig config,
@@ -617,6 +616,30 @@ void EventLogAnalyzer::CreatePlayoutGraph(Plot* plot) {
  plot->SetTitle("Audio playout");
}

void EventLogAnalyzer::CreateNetEqSetMinimumDelay(Plot* plot) {
  for (const auto& playout_stream :
       parsed_log_.neteq_set_minimum_delay_events()) {
    uint32_t ssrc = playout_stream.first;
    if (!MatchingSsrc(ssrc, desired_ssrc_))
      continue;

    TimeSeries time_series(SsrcToString(ssrc), LineStyle::kStep,
                           PointStyle::kHighlight);
    for (const auto& event : playout_stream.second) {
      float x = config_.GetCallTimeSec(event.log_time());
      float y = event.minimum_delay_ms;
      time_series.points.push_back(TimeSeriesPoint(x, y));
    }
    plot->AppendTimeSeries(std::move(time_series));
  }

  plot->SetXAxis(config_.CallBeginTimeSec(), config_.CallEndTimeSec(),
                 "Time (s)", kLeftMargin, kRightMargin);
  plot->SetSuggestedYAxis(0, 1000, "Minimum Delay (ms)", kBottomMargin,
                          kTopMargin);
  plot->SetTitle("Set Minimum Delay");
}

// For audio SSRCs, plot the audio level.
void EventLogAnalyzer::CreateAudioLevelGraph(PacketDirection direction,
                                             Plot* plot) {
+2 −0
Original line number Diff line number Diff line
@@ -46,6 +46,8 @@ class EventLogAnalyzer {

  void CreatePlayoutGraph(Plot* plot);

  void CreateNetEqSetMinimumDelay(Plot* plot);

  void CreateAudioLevelGraph(PacketDirection direction, Plot* plot);

  void CreateSequenceNumberGraph(Plot* plot);
Loading