diff options
author | Artem Titov <titovartem@webrtc.org> | 2020-03-11 11:18:54 +0100 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-03-11 12:08:32 +0000 |
commit | e618cc9c1ed030f33dd54396d04141b66dd24f97 (patch) | |
tree | 712be5c4e5d62dd2360680316aa7ef1f7d4efed4 /modules/audio_coding | |
parent | c46385c346d5a98b83ecef16bd4b4aa219a61d71 (diff) | |
download | webrtc-e618cc9c1ed030f33dd54396d04141b66dd24f97.tar.gz |
Add jitterBufferTargetDelay as RTCNonStandardStatsMember to new GetStats API
Bug: webrtc:11381
Change-Id: I7df3450e50da49d178e1e3a5d9f4970672d91aac
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/169120
Reviewed-by: Karl Wiberg <kwiberg@webrtc.org>
Reviewed-by: Henrik Boström <hbos@webrtc.org>
Reviewed-by: Ivo Creusen <ivoc@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#30758}
Diffstat (limited to 'modules/audio_coding')
-rw-r--r-- | modules/audio_coding/acm2/acm_receiver.cc | 2 | ||||
-rw-r--r-- | modules/audio_coding/include/audio_coding_module_typedefs.h | 2 | ||||
-rw-r--r-- | modules/audio_coding/neteq/neteq_impl.cc | 4 | ||||
-rw-r--r-- | modules/audio_coding/neteq/neteq_unittest.cc | 11 | ||||
-rw-r--r-- | modules/audio_coding/neteq/statistics_calculator.cc | 5 | ||||
-rw-r--r-- | modules/audio_coding/neteq/statistics_calculator.h | 4 |
6 files changed, 24 insertions, 4 deletions
diff --git a/modules/audio_coding/acm2/acm_receiver.cc b/modules/audio_coding/acm2/acm_receiver.cc index 9cecb98cec..29eff19e9e 100644 --- a/modules/audio_coding/acm2/acm_receiver.cc +++ b/modules/audio_coding/acm2/acm_receiver.cc @@ -272,6 +272,8 @@ void AcmReceiver::GetNetworkStatistics(NetworkStatistics* acm_stat) const { neteq_lifetime_stat.silent_concealed_samples; acm_stat->concealmentEvents = neteq_lifetime_stat.concealment_events; acm_stat->jitterBufferDelayMs = neteq_lifetime_stat.jitter_buffer_delay_ms; + acm_stat->jitterBufferTargetDelayMs = + neteq_lifetime_stat.jitter_buffer_target_delay_ms; acm_stat->jitterBufferEmittedCount = neteq_lifetime_stat.jitter_buffer_emitted_count; acm_stat->delayedPacketOutageSamples = diff --git a/modules/audio_coding/include/audio_coding_module_typedefs.h b/modules/audio_coding/include/audio_coding_module_typedefs.h index 2f40acde07..a5d4b246c8 100644 --- a/modules/audio_coding/include/audio_coding_module_typedefs.h +++ b/modules/audio_coding/include/audio_coding_module_typedefs.h @@ -90,6 +90,8 @@ struct NetworkStatistics { uint64_t concealmentEvents; uint64_t jitterBufferDelayMs; uint64_t jitterBufferEmittedCount; + // Non standard stats propagated to spec complaint GetStats API. + uint64_t jitterBufferTargetDelayMs; uint64_t insertedSamplesForDeceleration; uint64_t removedSamplesForAcceleration; uint64_t fecPacketsReceived; diff --git a/modules/audio_coding/neteq/neteq_impl.cc b/modules/audio_coding/neteq/neteq_impl.cc index 265043acb4..0b7510d341 100644 --- a/modules/audio_coding/neteq/neteq_impl.cc +++ b/modules/audio_coding/neteq/neteq_impl.cc @@ -1987,7 +1987,9 @@ int NetEqImpl::ExtractPackets(size_t required_samples, } extracted_samples = packet->timestamp - first_timestamp + packet_duration; - stats_->JitterBufferDelay(packet_duration, waiting_time_ms); + RTC_DCHECK(controller_); + stats_->JitterBufferDelay(packet_duration, waiting_time_ms, + controller_->TargetLevelMs()); packet_list->push_back(std::move(*packet)); // Store packet in list. packet = absl::nullopt; // Ensure it's never used after the move. diff --git a/modules/audio_coding/neteq/neteq_unittest.cc b/modules/audio_coding/neteq/neteq_unittest.cc index 701a3c568a..d78e2c6488 100644 --- a/modules/audio_coding/neteq/neteq_unittest.cc +++ b/modules/audio_coding/neteq/neteq_unittest.cc @@ -986,6 +986,7 @@ void NetEqDecodingTestFaxMode::TestJitterBufferDelay(bool apply_packet_loss) { int packets_sent = 0; int packets_received = 0; int expected_delay = 0; + int expected_target_delay = 0; uint64_t expected_emitted_count = 0; while (packets_received < kNumPackets) { // Insert packet. @@ -1010,6 +1011,7 @@ void NetEqDecodingTestFaxMode::TestJitterBufferDelay(bool apply_packet_loss) { // number of samples that are sent for play out. int current_delay_ms = packets_delay * kPacketLenMs; expected_delay += current_delay_ms * kSamples; + expected_target_delay += neteq_->TargetDelayMs() * kSamples; expected_emitted_count += kSamples; } } @@ -1021,8 +1023,11 @@ void NetEqDecodingTestFaxMode::TestJitterBufferDelay(bool apply_packet_loss) { // Check jitter buffer delay. NetEqLifetimeStatistics stats = neteq_->GetLifetimeStatistics(); - EXPECT_EQ(expected_delay, static_cast<int>(stats.jitter_buffer_delay_ms)); + EXPECT_EQ(expected_delay, + rtc::checked_cast<int>(stats.jitter_buffer_delay_ms)); EXPECT_EQ(expected_emitted_count, stats.jitter_buffer_emitted_count); + EXPECT_EQ(expected_target_delay, + rtc::checked_cast<int>(stats.jitter_buffer_target_delay_ms)); } TEST_F(NetEqDecodingTestFaxMode, TestJitterBufferDelayWithoutLoss) { @@ -1043,6 +1048,7 @@ TEST_F(NetEqDecodingTestFaxMode, TestJitterBufferDelayWithAcceleration) { rtp_info.markerBit = 0; const uint8_t payload[kPayloadBytes] = {0}; + int expected_target_delay = neteq_->TargetDelayMs() * kSamples; neteq_->InsertPacket(rtp_info, payload); bool muted; @@ -1055,6 +1061,7 @@ TEST_F(NetEqDecodingTestFaxMode, TestJitterBufferDelayWithAcceleration) { rtp_info.timestamp += kSamples; neteq_->InsertPacket(rtp_info, payload); + expected_target_delay += neteq_->TargetDelayMs() * 2 * kSamples; // We have two packets in the buffer and kAccelerate operation will // extract 20 ms of data. neteq_->GetAudio(&out_frame_, &muted, NetEq::Operation::kAccelerate); @@ -1063,6 +1070,8 @@ TEST_F(NetEqDecodingTestFaxMode, TestJitterBufferDelayWithAcceleration) { NetEqLifetimeStatistics stats = neteq_->GetLifetimeStatistics(); EXPECT_EQ(10 * kSamples * 3, stats.jitter_buffer_delay_ms); EXPECT_EQ(kSamples * 3, stats.jitter_buffer_emitted_count); + EXPECT_EQ(expected_target_delay, + rtc::checked_cast<int>(stats.jitter_buffer_target_delay_ms)); } namespace test { diff --git a/modules/audio_coding/neteq/statistics_calculator.cc b/modules/audio_coding/neteq/statistics_calculator.cc index 081ec334f6..fa2925ce46 100644 --- a/modules/audio_coding/neteq/statistics_calculator.cc +++ b/modules/audio_coding/neteq/statistics_calculator.cc @@ -275,8 +275,11 @@ void StatisticsCalculator::IncreaseCounter(size_t num_samples, int fs_hz) { } void StatisticsCalculator::JitterBufferDelay(size_t num_samples, - uint64_t waiting_time_ms) { + uint64_t waiting_time_ms, + uint64_t target_delay_ms) { lifetime_stats_.jitter_buffer_delay_ms += waiting_time_ms * num_samples; + lifetime_stats_.jitter_buffer_target_delay_ms += + target_delay_ms * num_samples; lifetime_stats_.jitter_buffer_emitted_count += num_samples; } diff --git a/modules/audio_coding/neteq/statistics_calculator.h b/modules/audio_coding/neteq/statistics_calculator.h index 38e463c782..333f4a76a9 100644 --- a/modules/audio_coding/neteq/statistics_calculator.h +++ b/modules/audio_coding/neteq/statistics_calculator.h @@ -83,7 +83,9 @@ class StatisticsCalculator { void IncreaseCounter(size_t num_samples, int fs_hz); // Update jitter buffer delay counter. - void JitterBufferDelay(size_t num_samples, uint64_t waiting_time_ms); + void JitterBufferDelay(size_t num_samples, + uint64_t waiting_time_ms, + uint64_t target_delay_ms); // Stores new packet waiting time in waiting time statistics. void StoreWaitingTime(int waiting_time_ms); |