| Index: webrtc/modules/audio_coding/neteq/expand.cc
|
| diff --git a/webrtc/modules/audio_coding/neteq/expand.cc b/webrtc/modules/audio_coding/neteq/expand.cc
|
| index ae12e504616844cc62515bd2a72ce62b6c75723b..d01465ab603447394f98333b735ed9a848e5a99a 100644
|
| --- a/webrtc/modules/audio_coding/neteq/expand.cc
|
| +++ b/webrtc/modules/audio_coding/neteq/expand.cc
|
| @@ -16,10 +16,12 @@
|
| #include <algorithm> // min, max
|
| #include <limits> // numeric_limits<T>
|
|
|
| +#include "webrtc/base/safe_conversions.h"
|
| #include "webrtc/common_audio/signal_processing/include/signal_processing_library.h"
|
| #include "webrtc/modules/audio_coding/neteq/background_noise.h"
|
| #include "webrtc/modules/audio_coding/neteq/dsp_helper.h"
|
| #include "webrtc/modules/audio_coding/neteq/random_vector.h"
|
| +#include "webrtc/modules/audio_coding/neteq/statistics_calculator.h"
|
| #include "webrtc/modules/audio_coding/neteq/sync_buffer.h"
|
|
|
| namespace webrtc {
|
| @@ -27,6 +29,7 @@ namespace webrtc {
|
| Expand::Expand(BackgroundNoise* background_noise,
|
| SyncBuffer* sync_buffer,
|
| RandomVector* random_vector,
|
| + StatisticsCalculator* statistics,
|
| int fs,
|
| size_t num_channels)
|
| : random_vector_(random_vector),
|
| @@ -36,10 +39,12 @@ Expand::Expand(BackgroundNoise* background_noise,
|
| num_channels_(num_channels),
|
| consecutive_expands_(0),
|
| background_noise_(background_noise),
|
| + statistics_(statistics),
|
| overlap_length_(5 * fs / 8000),
|
| lag_index_direction_(0),
|
| current_lag_index_(0),
|
| stop_muting_(false),
|
| + expand_duration_samples_(0),
|
| channel_parameters_(new ChannelParameters[num_channels_]) {
|
| assert(fs == 8000 || fs == 16000 || fs == 32000 || fs == 48000);
|
| assert(fs <= kMaxSampleRate); // Should not be possible.
|
| @@ -78,6 +83,7 @@ int Expand::Process(AudioMultiVector* output) {
|
| // Perform initial setup if this is the first expansion since last reset.
|
| AnalyzeSignal(random_vector);
|
| first_expand_ = false;
|
| + expand_duration_samples_ = 0;
|
| } else {
|
| // This is not the first expansion, parameters are already estimated.
|
| // Extract a noise segment.
|
| @@ -298,6 +304,10 @@ int Expand::Process(AudioMultiVector* output) {
|
| // Increase call number and cap it.
|
| consecutive_expands_ = consecutive_expands_ >= kMaxConsecutiveExpands ?
|
| kMaxConsecutiveExpands : consecutive_expands_ + 1;
|
| + expand_duration_samples_ += output->Size();
|
| + // Clamp the duration counter at 2 seconds.
|
| + expand_duration_samples_ =
|
| + std::min(expand_duration_samples_, rtc::checked_cast<size_t>(fs_hz_ * 2));
|
| return 0;
|
| }
|
|
|
| @@ -305,6 +315,8 @@ void Expand::SetParametersForNormalAfterExpand() {
|
| current_lag_index_ = 0;
|
| lag_index_direction_ = 0;
|
| stop_muting_ = true; // Do not mute signal any more.
|
| + statistics_->LogDelayedPacketOutageEvent(
|
| + rtc::checked_cast<int>(expand_duration_samples_) / (fs_hz_ / 1000));
|
| }
|
|
|
| void Expand::SetParametersForMergeAfterExpand() {
|
| @@ -833,10 +845,11 @@ void Expand::UpdateLagIndex() {
|
| Expand* ExpandFactory::Create(BackgroundNoise* background_noise,
|
| SyncBuffer* sync_buffer,
|
| RandomVector* random_vector,
|
| + StatisticsCalculator* statistics,
|
| int fs,
|
| size_t num_channels) const {
|
| - return new Expand(background_noise, sync_buffer, random_vector, fs,
|
| - num_channels);
|
| + return new Expand(background_noise, sync_buffer, random_vector, statistics,
|
| + fs, num_channels);
|
| }
|
|
|
| // TODO(turajs): This can be moved to BackgroundNoise class.
|
|
|