| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2016 The WebRTC project authors. All Rights Reserved. |
| 3 * | 3 * |
| 4 * Use of this source code is governed by a BSD-style license | 4 * Use of this source code is governed by a BSD-style license |
| 5 * that can be found in the LICENSE file in the root of the source | 5 * that can be found in the LICENSE file in the root of the source |
| 6 * tree. An additional intellectual property rights grant can be found | 6 * tree. An additional intellectual property rights grant can be found |
| 7 * in the file PATENTS. All contributing project authors may | 7 * in the file PATENTS. All contributing project authors may |
| 8 * be found in the AUTHORS file in the root of the source tree. | 8 * be found in the AUTHORS file in the root of the source tree. |
| 9 */ | 9 */ |
| 10 | 10 |
| (...skipping 795 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 806 } | 806 } |
| 807 plot->AppendTimeSeries(std::move(time_series)); | 807 plot->AppendTimeSeries(std::move(time_series)); |
| 808 } | 808 } |
| 809 | 809 |
| 810 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); | 810 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); |
| 811 plot->SetSuggestedYAxis(0, 1, "Estimated loss rate (%)", kBottomMargin, | 811 plot->SetSuggestedYAxis(0, 1, "Estimated loss rate (%)", kBottomMargin, |
| 812 kTopMargin); | 812 kTopMargin); |
| 813 plot->SetTitle("Estimated incoming loss rate"); | 813 plot->SetTitle("Estimated incoming loss rate"); |
| 814 } | 814 } |
| 815 | 815 |
| 816 void EventLogAnalyzer::CreateDelayChangeGraph(Plot* plot) { | 816 void EventLogAnalyzer::CreateIncomingDelayDeltaGraph(Plot* plot) { |
| 817 for (auto& kv : rtp_packets_) { | 817 for (auto& kv : rtp_packets_) { |
| 818 StreamId stream_id = kv.first; | 818 StreamId stream_id = kv.first; |
| 819 const std::vector<LoggedRtpPacket>& packet_stream = kv.second; | 819 const std::vector<LoggedRtpPacket>& packet_stream = kv.second; |
| 820 // Filter on direction and SSRC. | 820 // Filter on direction and SSRC. |
| 821 if (stream_id.GetDirection() != kIncomingPacket || | 821 if (stream_id.GetDirection() != kIncomingPacket || |
| 822 !MatchingSsrc(stream_id.GetSsrc(), desired_ssrc_) || | 822 !MatchingSsrc(stream_id.GetSsrc(), desired_ssrc_) || |
| 823 IsAudioSsrc(stream_id) || !IsVideoSsrc(stream_id) || | 823 IsAudioSsrc(stream_id) || !IsVideoSsrc(stream_id) || |
| 824 IsRtxSsrc(stream_id)) { | 824 IsRtxSsrc(stream_id)) { |
| 825 continue; | 825 continue; |
| 826 } | 826 } |
| 827 | 827 |
| 828 TimeSeries capture_time_data(GetStreamName(stream_id) + " capture-time", | 828 TimeSeries capture_time_data(GetStreamName(stream_id) + " capture-time", |
| 829 BAR_GRAPH); | 829 BAR_GRAPH); |
| 830 ProcessPairs<LoggedRtpPacket, double>(NetworkDelayDiff_CaptureTime, | 830 ProcessPairs<LoggedRtpPacket, double>(NetworkDelayDiff_CaptureTime, |
| 831 packet_stream, begin_time_, | 831 packet_stream, begin_time_, |
| 832 &capture_time_data); | 832 &capture_time_data); |
| 833 plot->AppendTimeSeries(std::move(capture_time_data)); | 833 plot->AppendTimeSeries(std::move(capture_time_data)); |
| 834 | 834 |
| 835 TimeSeries send_time_data(GetStreamName(stream_id) + " abs-send-time", | 835 TimeSeries send_time_data(GetStreamName(stream_id) + " abs-send-time", |
| 836 BAR_GRAPH); | 836 BAR_GRAPH); |
| 837 ProcessPairs<LoggedRtpPacket, double>(NetworkDelayDiff_AbsSendTime, | 837 ProcessPairs<LoggedRtpPacket, double>(NetworkDelayDiff_AbsSendTime, |
| 838 packet_stream, begin_time_, | 838 packet_stream, begin_time_, |
| 839 &send_time_data); | 839 &send_time_data); |
| 840 plot->AppendTimeSeries(std::move(send_time_data)); | 840 plot->AppendTimeSeries(std::move(send_time_data)); |
| 841 } | 841 } |
| 842 | 842 |
| 843 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); | 843 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); |
| 844 plot->SetSuggestedYAxis(0, 1, "Latency change (ms)", kBottomMargin, | 844 plot->SetSuggestedYAxis(0, 1, "Latency change (ms)", kBottomMargin, |
| 845 kTopMargin); | 845 kTopMargin); |
| 846 plot->SetTitle("Network latency change between consecutive packets"); | 846 plot->SetTitle("Network latency difference between consecutive packets"); |
| 847 } | 847 } |
| 848 | 848 |
| 849 void EventLogAnalyzer::CreateAccumulatedDelayChangeGraph(Plot* plot) { | 849 void EventLogAnalyzer::CreateIncomingDelayGraph(Plot* plot) { |
| 850 for (auto& kv : rtp_packets_) { | 850 for (auto& kv : rtp_packets_) { |
| 851 StreamId stream_id = kv.first; | 851 StreamId stream_id = kv.first; |
| 852 const std::vector<LoggedRtpPacket>& packet_stream = kv.second; | 852 const std::vector<LoggedRtpPacket>& packet_stream = kv.second; |
| 853 // Filter on direction and SSRC. | 853 // Filter on direction and SSRC. |
| 854 if (stream_id.GetDirection() != kIncomingPacket || | 854 if (stream_id.GetDirection() != kIncomingPacket || |
| 855 !MatchingSsrc(stream_id.GetSsrc(), desired_ssrc_) || | 855 !MatchingSsrc(stream_id.GetSsrc(), desired_ssrc_) || |
| 856 IsAudioSsrc(stream_id) || !IsVideoSsrc(stream_id) || | 856 IsAudioSsrc(stream_id) || !IsVideoSsrc(stream_id) || |
| 857 IsRtxSsrc(stream_id)) { | 857 IsRtxSsrc(stream_id)) { |
| 858 continue; | 858 continue; |
| 859 } | 859 } |
| 860 | 860 |
| 861 TimeSeries capture_time_data(GetStreamName(stream_id) + " capture-time", | 861 TimeSeries capture_time_data(GetStreamName(stream_id) + " capture-time", |
| 862 LINE_GRAPH); | 862 LINE_GRAPH); |
| 863 AccumulatePairs<LoggedRtpPacket, double>(NetworkDelayDiff_CaptureTime, | 863 AccumulatePairs<LoggedRtpPacket, double>(NetworkDelayDiff_CaptureTime, |
| 864 packet_stream, begin_time_, | 864 packet_stream, begin_time_, |
| 865 &capture_time_data); | 865 &capture_time_data); |
| 866 plot->AppendTimeSeries(std::move(capture_time_data)); | 866 plot->AppendTimeSeries(std::move(capture_time_data)); |
| 867 | 867 |
| 868 TimeSeries send_time_data(GetStreamName(stream_id) + " abs-send-time", | 868 TimeSeries send_time_data(GetStreamName(stream_id) + " abs-send-time", |
| 869 LINE_GRAPH); | 869 LINE_GRAPH); |
| 870 AccumulatePairs<LoggedRtpPacket, double>(NetworkDelayDiff_AbsSendTime, | 870 AccumulatePairs<LoggedRtpPacket, double>(NetworkDelayDiff_AbsSendTime, |
| 871 packet_stream, begin_time_, | 871 packet_stream, begin_time_, |
| 872 &send_time_data); | 872 &send_time_data); |
| 873 plot->AppendTimeSeries(std::move(send_time_data)); | 873 plot->AppendTimeSeries(std::move(send_time_data)); |
| 874 } | 874 } |
| 875 | 875 |
| 876 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); | 876 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); |
| 877 plot->SetSuggestedYAxis(0, 1, "Latency change (ms)", kBottomMargin, | 877 plot->SetSuggestedYAxis(0, 1, "Latency change (ms)", kBottomMargin, |
| 878 kTopMargin); | 878 kTopMargin); |
| 879 plot->SetTitle("Accumulated network latency change"); | 879 plot->SetTitle("Network latency (relative to first packet)"); |
| 880 } | 880 } |
| 881 | 881 |
| 882 // Plot the fraction of packets lost (as perceived by the loss-based BWE). | 882 // Plot the fraction of packets lost (as perceived by the loss-based BWE). |
| 883 void EventLogAnalyzer::CreateFractionLossGraph(Plot* plot) { | 883 void EventLogAnalyzer::CreateFractionLossGraph(Plot* plot) { |
| 884 TimeSeries time_series("Fraction lost", LINE_DOT_GRAPH); | 884 TimeSeries time_series("Fraction lost", LINE_DOT_GRAPH); |
| 885 for (auto& bwe_update : bwe_loss_updates_) { | 885 for (auto& bwe_update : bwe_loss_updates_) { |
| 886 float x = static_cast<float>(bwe_update.timestamp - begin_time_) / 1000000; | 886 float x = static_cast<float>(bwe_update.timestamp - begin_time_) / 1000000; |
| 887 float y = static_cast<float>(bwe_update.fraction_loss) / 255 * 100; | 887 float y = static_cast<float>(bwe_update.fraction_loss) / 255 * 100; |
| 888 time_series.points.emplace_back(x, y); | 888 time_series.points.emplace_back(x, y); |
| 889 } | 889 } |
| (...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1401 static_cast<float>(*ana_event.config.frame_length_ms)); | 1401 static_cast<float>(*ana_event.config.frame_length_ms)); |
| 1402 return rtc::Optional<float>(); | 1402 return rtc::Optional<float>(); |
| 1403 }, | 1403 }, |
| 1404 audio_network_adaptation_events_, begin_time_, &time_series); | 1404 audio_network_adaptation_events_, begin_time_, &time_series); |
| 1405 plot->AppendTimeSeries(std::move(time_series)); | 1405 plot->AppendTimeSeries(std::move(time_series)); |
| 1406 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); | 1406 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); |
| 1407 plot->SetSuggestedYAxis(0, 1, "Frame length (ms)", kBottomMargin, kTopMargin); | 1407 plot->SetSuggestedYAxis(0, 1, "Frame length (ms)", kBottomMargin, kTopMargin); |
| 1408 plot->SetTitle("Reported audio encoder frame length"); | 1408 plot->SetTitle("Reported audio encoder frame length"); |
| 1409 } | 1409 } |
| 1410 | 1410 |
| 1411 void EventLogAnalyzer::CreateAudioEncoderUplinkPacketLossFractionGraph( | 1411 void EventLogAnalyzer::CreateAudioEncoderPacketLossGraph(Plot* plot) { |
| 1412 Plot* plot) { | |
| 1413 TimeSeries time_series("Audio encoder uplink packet loss fraction", | 1412 TimeSeries time_series("Audio encoder uplink packet loss fraction", |
| 1414 LINE_DOT_GRAPH); | 1413 LINE_DOT_GRAPH); |
| 1415 ProcessPoints<AudioNetworkAdaptationEvent>( | 1414 ProcessPoints<AudioNetworkAdaptationEvent>( |
| 1416 [](const AudioNetworkAdaptationEvent& ana_event) { | 1415 [](const AudioNetworkAdaptationEvent& ana_event) { |
| 1417 if (ana_event.config.uplink_packet_loss_fraction) | 1416 if (ana_event.config.uplink_packet_loss_fraction) |
| 1418 return rtc::Optional<float>(static_cast<float>( | 1417 return rtc::Optional<float>(static_cast<float>( |
| 1419 *ana_event.config.uplink_packet_loss_fraction)); | 1418 *ana_event.config.uplink_packet_loss_fraction)); |
| 1420 return rtc::Optional<float>(); | 1419 return rtc::Optional<float>(); |
| 1421 }, | 1420 }, |
| 1422 audio_network_adaptation_events_, begin_time_, &time_series); | 1421 audio_network_adaptation_events_, begin_time_, &time_series); |
| (...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1711 plot->AppendTimeSeries(std::move(series.second)); | 1710 plot->AppendTimeSeries(std::move(series.second)); |
| 1712 } | 1711 } |
| 1713 | 1712 |
| 1714 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); | 1713 plot->SetXAxis(0, call_duration_s_, "Time (s)", kLeftMargin, kRightMargin); |
| 1715 plot->SetYAxis(min_y_axis, max_y_axis, "Relative delay (ms)", kBottomMargin, | 1714 plot->SetYAxis(min_y_axis, max_y_axis, "Relative delay (ms)", kBottomMargin, |
| 1716 kTopMargin); | 1715 kTopMargin); |
| 1717 plot->SetTitle("NetEq timing"); | 1716 plot->SetTitle("NetEq timing"); |
| 1718 } | 1717 } |
| 1719 } // namespace plotting | 1718 } // namespace plotting |
| 1720 } // namespace webrtc | 1719 } // namespace webrtc |
| OLD | NEW |