This source file includes following definitions.
- silence_length_
- Reset
- IsSilence
#include "remoting/host/audio_silence_detector.h"
#include <stdlib.h>
namespace remoting {
namespace {
int kSilencePeriodThresholdSeconds = 1;
}
AudioSilenceDetector::AudioSilenceDetector(int threshold)
: threshold_(threshold),
silence_length_max_(0),
silence_length_(0) {
DCHECK_GE(threshold_, 0);
}
AudioSilenceDetector::~AudioSilenceDetector() {
}
void AudioSilenceDetector::Reset(int sampling_rate, int channels) {
DCHECK_GT(sampling_rate, 0);
silence_length_ = 0;
silence_length_max_ =
sampling_rate * channels * kSilencePeriodThresholdSeconds;
}
bool AudioSilenceDetector::IsSilence(const int16* samples,
size_t samples_count) {
bool silent_packet = true;
for (size_t i = 0; i < samples_count; ++i) {
if (abs(samples[i]) > threshold_) {
silent_packet = false;
break;
}
}
if (!silent_packet) {
silence_length_ = 0;
return false;
}
silence_length_ += samples_count;
return silence_length_ > silence_length_max_;
}
}