Delete unused NetEq Rtcp stats.
Bug: webrtc:7135 Change-Id: Ib3ca9e02b051b8b41c2eac4e43a4f1f37999bf75 Reviewed-on: https://webrtc-review.googlesource.com/c/111640 Reviewed-by: Henrik Lundin <henrik.lundin@webrtc.org> Commit-Queue: Niels Moller <nisse@webrtc.org> Cr-Commit-Position: refs/heads/master@{#25743}
This commit is contained in:
@ -1025,8 +1025,6 @@ rtc_static_library("neteq") {
|
||||
"neteq/random_vector.h",
|
||||
"neteq/red_payload_splitter.cc",
|
||||
"neteq/red_payload_splitter.h",
|
||||
"neteq/rtcp.cc",
|
||||
"neteq/rtcp.h",
|
||||
"neteq/statistics_calculator.cc",
|
||||
"neteq/statistics_calculator.h",
|
||||
"neteq/sync_buffer.cc",
|
||||
|
@ -231,13 +231,6 @@ class NetEq {
|
||||
// statistics are never reset.
|
||||
virtual NetEqOperationsAndState GetOperationsAndState() const = 0;
|
||||
|
||||
// Writes the current RTCP statistics to |stats|. The statistics are reset
|
||||
// and a new report period is started with the call.
|
||||
virtual void GetRtcpStatistics(RtcpStatistics* stats) = 0;
|
||||
|
||||
// Same as RtcpStatistics(), but does not reset anything.
|
||||
virtual void GetRtcpStatisticsNoReset(RtcpStatistics* stats) = 0;
|
||||
|
||||
// Enables post-decode VAD. When enabled, GetAudio() will return
|
||||
// kOutputVADPassive when the signal contains no speech.
|
||||
virtual void EnableVad() = 0;
|
||||
|
@ -387,20 +387,6 @@ NetEqOperationsAndState NetEqImpl::GetOperationsAndState() const {
|
||||
return result;
|
||||
}
|
||||
|
||||
void NetEqImpl::GetRtcpStatistics(RtcpStatistics* stats) {
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
if (stats) {
|
||||
rtcp_.GetStatistics(false, stats);
|
||||
}
|
||||
}
|
||||
|
||||
void NetEqImpl::GetRtcpStatisticsNoReset(RtcpStatistics* stats) {
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
if (stats) {
|
||||
rtcp_.GetStatistics(true, stats);
|
||||
}
|
||||
}
|
||||
|
||||
void NetEqImpl::EnableVad() {
|
||||
rtc::CritScope lock(&crit_sect_);
|
||||
assert(vad_.get());
|
||||
@ -576,8 +562,6 @@ int NetEqImpl::InsertPacketInternal(const RTPHeader& rtp_header,
|
||||
// Note: |first_packet_| will be cleared further down in this method, once
|
||||
// the packet has been successfully inserted into the packet buffer.
|
||||
|
||||
rtcp_.Init(rtp_header.sequenceNumber);
|
||||
|
||||
// Flush the packet buffer and DTMF buffer.
|
||||
packet_buffer_->Flush();
|
||||
dtmf_buffer_->Flush();
|
||||
@ -592,9 +576,6 @@ int NetEqImpl::InsertPacketInternal(const RTPHeader& rtp_header,
|
||||
timestamp_ = main_timestamp;
|
||||
}
|
||||
|
||||
// Update RTCP statistics, only for regular packets.
|
||||
rtcp_.Update(rtp_header, receive_timestamp);
|
||||
|
||||
if (nack_enabled_) {
|
||||
RTC_DCHECK(nack_);
|
||||
if (update_sample_rate_and_channels) {
|
||||
|
@ -22,7 +22,6 @@
|
||||
#include "modules/audio_coding/neteq/include/neteq.h"
|
||||
#include "modules/audio_coding/neteq/packet.h"
|
||||
#include "modules/audio_coding/neteq/random_vector.h"
|
||||
#include "modules/audio_coding/neteq/rtcp.h"
|
||||
#include "modules/audio_coding/neteq/statistics_calculator.h"
|
||||
#include "modules/audio_coding/neteq/tick_timer.h"
|
||||
#include "rtc_base/constructormagic.h"
|
||||
@ -170,17 +169,10 @@ class NetEqImpl : public webrtc::NetEq {
|
||||
// after the call.
|
||||
int NetworkStatistics(NetEqNetworkStatistics* stats) override;
|
||||
|
||||
// Writes the current RTCP statistics to |stats|. The statistics are reset
|
||||
// and a new report period is started with the call.
|
||||
void GetRtcpStatistics(RtcpStatistics* stats) override;
|
||||
|
||||
NetEqLifetimeStatistics GetLifetimeStatistics() const override;
|
||||
|
||||
NetEqOperationsAndState GetOperationsAndState() const override;
|
||||
|
||||
// Same as RtcpStatistics(), but does not reset anything.
|
||||
void GetRtcpStatisticsNoReset(RtcpStatistics* stats) override;
|
||||
|
||||
// Enables post-decode VAD. When enabled, GetAudio() will return
|
||||
// kOutputVADPassive when the signal contains no speech.
|
||||
void EnableVad() override;
|
||||
@ -395,7 +387,6 @@ class NetEqImpl : public webrtc::NetEq {
|
||||
RTC_GUARDED_BY(crit_sect_);
|
||||
RandomVector random_vector_ RTC_GUARDED_BY(crit_sect_);
|
||||
std::unique_ptr<ComfortNoise> comfort_noise_ RTC_GUARDED_BY(crit_sect_);
|
||||
Rtcp rtcp_ RTC_GUARDED_BY(crit_sect_);
|
||||
StatisticsCalculator stats_ RTC_GUARDED_BY(crit_sect_);
|
||||
int fs_hz_ RTC_GUARDED_BY(crit_sect_);
|
||||
int fs_mult_ RTC_GUARDED_BY(crit_sect_);
|
||||
|
@ -265,7 +265,6 @@ class NetEqDecodingTest : public ::testing::Test {
|
||||
void DecodeAndCompare(const std::string& rtp_file,
|
||||
const std::string& output_checksum,
|
||||
const std::string& network_stats_checksum,
|
||||
const std::string& rtcp_stats_checksum,
|
||||
bool gen_ref);
|
||||
|
||||
static void PopulateRtpInfo(int frame_index,
|
||||
@ -373,7 +372,6 @@ void NetEqDecodingTest::DecodeAndCompare(
|
||||
const std::string& rtp_file,
|
||||
const std::string& output_checksum,
|
||||
const std::string& network_stats_checksum,
|
||||
const std::string& rtcp_stats_checksum,
|
||||
bool gen_ref) {
|
||||
OpenInputFile(rtp_file);
|
||||
|
||||
@ -385,10 +383,6 @@ void NetEqDecodingTest::DecodeAndCompare(
|
||||
gen_ref ? webrtc::test::OutputPath() + "neteq_network_stats.dat" : "";
|
||||
ResultSink network_stats(stat_out_file);
|
||||
|
||||
std::string rtcp_out_file =
|
||||
gen_ref ? webrtc::test::OutputPath() + "neteq_rtcp_stats.dat" : "";
|
||||
ResultSink rtcp_stats(rtcp_out_file);
|
||||
|
||||
packet_ = rtp_source_->NextPacket();
|
||||
int i = 0;
|
||||
uint64_t last_concealed_samples = 0;
|
||||
@ -425,11 +419,6 @@ void NetEqDecodingTest::DecodeAndCompare(
|
||||
EXPECT_NEAR(
|
||||
(delta_concealed_samples << 14) / delta_total_samples_received,
|
||||
current_network_stats.expand_rate, (2 << 14) / 100.0);
|
||||
|
||||
// Process RTCPstat.
|
||||
RtcpStatistics current_rtcp_stats;
|
||||
neteq_->GetRtcpStatistics(¤t_rtcp_stats);
|
||||
ASSERT_NO_FATAL_FAILURE(rtcp_stats.AddResult(current_rtcp_stats));
|
||||
}
|
||||
}
|
||||
|
||||
@ -437,8 +426,6 @@ void NetEqDecodingTest::DecodeAndCompare(
|
||||
output.VerifyChecksum(output_checksum);
|
||||
SCOPED_TRACE("Check network stats.");
|
||||
network_stats.VerifyChecksum(network_stats_checksum);
|
||||
SCOPED_TRACE("Check rtcp stats.");
|
||||
rtcp_stats.VerifyChecksum(rtcp_stats_checksum);
|
||||
}
|
||||
|
||||
void NetEqDecodingTest::PopulateRtpInfo(int frame_index,
|
||||
@ -488,14 +475,8 @@ TEST_F(NetEqDecodingTest, MAYBE_TestBitExactness) {
|
||||
"4b2370f5c794741d2a46be5c7935c66ef3fb53e9",
|
||||
"4b2370f5c794741d2a46be5c7935c66ef3fb53e9");
|
||||
|
||||
const std::string rtcp_stats_checksum =
|
||||
PlatformChecksum("b8880bf9fed2487efbddcb8d94b9937a29ae521d",
|
||||
"f3f7b3d3e71d7e635240b5373b57df6a7e4ce9d4", "not used",
|
||||
"b8880bf9fed2487efbddcb8d94b9937a29ae521d",
|
||||
"b8880bf9fed2487efbddcb8d94b9937a29ae521d");
|
||||
|
||||
DecodeAndCompare(input_rtp_file, output_checksum, network_stats_checksum,
|
||||
rtcp_stats_checksum, FLAG_gen_ref);
|
||||
FLAG_gen_ref);
|
||||
}
|
||||
|
||||
#if !defined(WEBRTC_IOS) && defined(WEBRTC_NETEQ_UNITTEST_BITEXACT) && \
|
||||
@ -523,15 +504,8 @@ TEST_F(NetEqDecodingTest, MAYBE_TestOpusBitExactness) {
|
||||
"adb3272498e436d1c019cbfd71610e9510c54497",
|
||||
"adb3272498e436d1c019cbfd71610e9510c54497");
|
||||
|
||||
const std::string rtcp_stats_checksum =
|
||||
PlatformChecksum("e37c797e3de6a64dda88c9ade7a013d022a2e1e0",
|
||||
"e37c797e3de6a64dda88c9ade7a013d022a2e1e0",
|
||||
"e37c797e3de6a64dda88c9ade7a013d022a2e1e0",
|
||||
"e37c797e3de6a64dda88c9ade7a013d022a2e1e0",
|
||||
"e37c797e3de6a64dda88c9ade7a013d022a2e1e0");
|
||||
|
||||
DecodeAndCompare(input_rtp_file, output_checksum, network_stats_checksum,
|
||||
rtcp_stats_checksum, FLAG_gen_ref);
|
||||
FLAG_gen_ref);
|
||||
}
|
||||
|
||||
#if !defined(WEBRTC_IOS) && defined(WEBRTC_NETEQ_UNITTEST_BITEXACT) && \
|
||||
@ -554,11 +528,8 @@ TEST_F(NetEqDecodingTest, MAYBE_TestOpusDtxBitExactness) {
|
||||
const std::string network_stats_checksum =
|
||||
"bab58dc587d956f326056d7340c96eb9d2d3cc21";
|
||||
|
||||
const std::string rtcp_stats_checksum =
|
||||
"ac27a7f305efb58b39bf123dccee25dee5758e63";
|
||||
|
||||
DecodeAndCompare(input_rtp_file, output_checksum, network_stats_checksum,
|
||||
rtcp_stats_checksum, FLAG_gen_ref);
|
||||
FLAG_gen_ref);
|
||||
}
|
||||
|
||||
// Use fax mode to avoid time-scaling. This is to simplify the testing of
|
||||
|
@ -1,96 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#include "modules/audio_coding/neteq/rtcp.h"
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstdlib>
|
||||
|
||||
#include "api/rtp_headers.h"
|
||||
#include "common_types.h"
|
||||
#include "rtc_base/checks.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
void Rtcp::Init(uint16_t start_sequence_number) {
|
||||
cycles_ = 0;
|
||||
max_seq_no_ = start_sequence_number;
|
||||
base_seq_no_ = start_sequence_number;
|
||||
received_packets_ = 0;
|
||||
received_packets_prior_ = 0;
|
||||
expected_prior_ = 0;
|
||||
jitter_ = 0;
|
||||
transit_ = 0;
|
||||
}
|
||||
|
||||
void Rtcp::Update(const RTPHeader& rtp_header, uint32_t receive_timestamp) {
|
||||
// Update number of received packets, and largest packet number received.
|
||||
received_packets_++;
|
||||
int16_t sn_diff = rtp_header.sequenceNumber - max_seq_no_;
|
||||
if (sn_diff >= 0) {
|
||||
if (rtp_header.sequenceNumber < max_seq_no_) {
|
||||
// Wrap-around detected.
|
||||
cycles_++;
|
||||
}
|
||||
max_seq_no_ = rtp_header.sequenceNumber;
|
||||
}
|
||||
|
||||
// Calculate jitter according to RFC 3550, and update previous timestamps.
|
||||
// Note that the value in |jitter_| is in Q4.
|
||||
if (received_packets_ > 1) {
|
||||
int32_t ts_diff = receive_timestamp - (rtp_header.timestamp - transit_);
|
||||
int64_t jitter_diff = (std::abs(int64_t{ts_diff}) << 4) - jitter_;
|
||||
// Calculate 15 * jitter_ / 16 + jitter_diff / 16 (with proper rounding).
|
||||
jitter_ = jitter_ + ((jitter_diff + 8) >> 4);
|
||||
RTC_DCHECK_GE(jitter_, 0);
|
||||
}
|
||||
transit_ = rtp_header.timestamp - receive_timestamp;
|
||||
}
|
||||
|
||||
void Rtcp::GetStatistics(bool no_reset, RtcpStatistics* stats) {
|
||||
// Extended highest sequence number received.
|
||||
stats->extended_highest_sequence_number =
|
||||
(static_cast<int>(cycles_) << 16) + max_seq_no_;
|
||||
|
||||
// Calculate expected number of packets and compare it with the number of
|
||||
// packets that were actually received. The cumulative number of lost packets
|
||||
// can be extracted.
|
||||
uint32_t expected_packets =
|
||||
stats->extended_highest_sequence_number - base_seq_no_ + 1;
|
||||
if (received_packets_ == 0) {
|
||||
// No packets received, assume none lost.
|
||||
stats->packets_lost = 0;
|
||||
} else if (expected_packets > received_packets_) {
|
||||
stats->packets_lost = expected_packets - received_packets_;
|
||||
if (stats->packets_lost > 0xFFFFFF) {
|
||||
stats->packets_lost = 0xFFFFFF;
|
||||
}
|
||||
} else {
|
||||
stats->packets_lost = 0;
|
||||
}
|
||||
|
||||
// Fraction lost since last report.
|
||||
uint32_t expected_since_last = expected_packets - expected_prior_;
|
||||
uint32_t received_since_last = received_packets_ - received_packets_prior_;
|
||||
if (!no_reset) {
|
||||
expected_prior_ = expected_packets;
|
||||
received_packets_prior_ = received_packets_;
|
||||
}
|
||||
int32_t lost = expected_since_last - received_since_last;
|
||||
if (expected_since_last == 0 || lost <= 0 || received_packets_ == 0) {
|
||||
stats->fraction_lost = 0;
|
||||
} else {
|
||||
stats->fraction_lost = std::min(0xFFU, (lost << 8) / expected_since_last);
|
||||
}
|
||||
|
||||
stats->jitter = jitter_ >> 4; // Scaling from Q4.
|
||||
}
|
||||
|
||||
} // namespace webrtc
|
@ -1,56 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
|
||||
*
|
||||
* Use of this source code is governed by a BSD-style license
|
||||
* that can be found in the LICENSE file in the root of the source
|
||||
* tree. An additional intellectual property rights grant can be found
|
||||
* in the file PATENTS. All contributing project authors may
|
||||
* be found in the AUTHORS file in the root of the source tree.
|
||||
*/
|
||||
|
||||
#ifndef MODULES_AUDIO_CODING_NETEQ_RTCP_H_
|
||||
#define MODULES_AUDIO_CODING_NETEQ_RTCP_H_
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
#include "rtc_base/constructormagic.h"
|
||||
|
||||
namespace webrtc {
|
||||
|
||||
struct RtcpStatistics;
|
||||
struct RTPHeader;
|
||||
|
||||
class Rtcp {
|
||||
public:
|
||||
Rtcp() { Init(0); }
|
||||
|
||||
~Rtcp() {}
|
||||
|
||||
// Resets the RTCP statistics, and sets the first received sequence number.
|
||||
void Init(uint16_t start_sequence_number);
|
||||
|
||||
// Updates the RTCP statistics with a new received packet.
|
||||
void Update(const RTPHeader& rtp_header, uint32_t receive_timestamp);
|
||||
|
||||
// Returns the current RTCP statistics. If |no_reset| is true, the statistics
|
||||
// are not reset, otherwise they are.
|
||||
void GetStatistics(bool no_reset, RtcpStatistics* stats);
|
||||
|
||||
private:
|
||||
uint16_t cycles_; // The number of wrap-arounds for the sequence number.
|
||||
uint16_t max_seq_no_; // The maximum sequence number received. Starts over
|
||||
// from 0 after wrap-around.
|
||||
uint16_t base_seq_no_; // The sequence number of the first received packet.
|
||||
uint32_t received_packets_; // The number of packets that have been received.
|
||||
uint32_t received_packets_prior_; // Number of packets received when last
|
||||
// report was generated.
|
||||
uint32_t expected_prior_; // Expected number of packets, at the time of the
|
||||
// last report.
|
||||
int64_t jitter_; // Current jitter value in Q4.
|
||||
int32_t transit_; // Clock difference for previous packet.
|
||||
|
||||
RTC_DISALLOW_COPY_AND_ASSIGN(Rtcp);
|
||||
};
|
||||
|
||||
} // namespace webrtc
|
||||
#endif // MODULES_AUDIO_CODING_NETEQ_RTCP_H_
|
Reference in New Issue
Block a user