Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(216)

Unified Diff: webrtc/common_audio/vad/vad.cc

Issue 1317243005: Turn webrtc::Vad into a pure virtual interface (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@ifc-merge-2
Patch Set: Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: webrtc/common_audio/vad/vad.cc
diff --git a/webrtc/common_audio/vad/vad.cc b/webrtc/common_audio/vad/vad.cc
index dc4eb6db3246d488d85e23e155ff305ab0099170..8973a68b733bec2d28b94869b6bab83066062eee 100644
--- a/webrtc/common_audio/vad/vad.cc
+++ b/webrtc/common_audio/vad/vad.cc
@@ -14,36 +14,50 @@
namespace webrtc {
-Vad::Vad(enum Aggressiveness mode) : handle_(nullptr), aggressiveness_(mode) {
- Reset();
-}
+namespace {
-Vad::~Vad() {
- WebRtcVad_Free(handle_);
-}
+class VadImpl final : public Vad {
+ public:
+ explicit VadImpl(Aggressiveness aggressiveness)
+ : handle_(nullptr), aggressiveness_(aggressiveness) {
+ Reset();
+ }
-enum Vad::Activity Vad::VoiceActivity(const int16_t* audio,
- size_t num_samples,
- int sample_rate_hz) {
- int ret = WebRtcVad_Process(handle_, sample_rate_hz, audio, num_samples);
- switch (ret) {
- case 0:
- return kPassive;
- case 1:
- return kActive;
- default:
- DCHECK(false) << "WebRtcVad_Process returned an error.";
- return kError;
+ ~VadImpl() override { WebRtcVad_Free(handle_); }
+
+ Activity VoiceActivity(const int16_t* audio,
+ size_t num_samples,
+ int sample_rate_hz) override {
+ int ret = WebRtcVad_Process(handle_, sample_rate_hz, audio, num_samples);
+ switch (ret) {
+ case 0:
+ return kPassive;
+ case 1:
+ return kActive;
+ default:
+ DCHECK(false) << "WebRtcVad_Process returned an error.";
+ return kError;
+ }
}
-}
-void Vad::Reset() {
- if (handle_)
- WebRtcVad_Free(handle_);
- handle_ = WebRtcVad_Create();
- CHECK(handle_);
- CHECK_EQ(WebRtcVad_Init(handle_), 0);
- CHECK_EQ(WebRtcVad_set_mode(handle_, aggressiveness_), 0);
+ void Reset() override {
+ if (handle_)
+ WebRtcVad_Free(handle_);
+ handle_ = WebRtcVad_Create();
+ CHECK(handle_);
+ CHECK_EQ(WebRtcVad_Init(handle_), 0);
+ CHECK_EQ(WebRtcVad_set_mode(handle_, aggressiveness_), 0);
+ }
+
+ private:
+ VadInst* handle_;
+ Aggressiveness aggressiveness_;
+};
+
+} // namespace
+
+rtc::scoped_ptr<Vad> CreateVad(Vad::Aggressiveness aggressiveness) {
+ return rtc::scoped_ptr<Vad>(new VadImpl(aggressiveness));
}
} // namespace webrtc
« no previous file with comments | « webrtc/common_audio/vad/mock/mock_vad.h ('k') | webrtc/modules/audio_coding/codecs/cng/audio_encoder_cng.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698