Files
platform-external-webrtc/webrtc/common_audio/vad/vad.cc
henrikg 91d6edef35 Add RTC_ prefix to (D)CHECKs and related macros.
We must remove dependency on Chromium, i.e. we can't use Chromium's base/logging.h. That means we need to define these macros in WebRTC also when doing Chromium builds. And this causes redefinition.

Alternative solutions:
* Check if we already have defined e.g. CHECK, and don't define them in that case. This makes us depend on include order in Chromium, which is not acceptable.
* Don't allow using the macros in WebRTC headers. Error prone since if someone adds it there by mistake it may compile fine, but later break if a header in added or order is changed in Chromium. That will be confusing and hard to enforce.
* Ensure that headers that are included by an embedder don't include our macros. This would require some heavy refactoring to be maintainable and enforcable.
* Changes in Chromium for this is obviously not an option.

BUG=chromium:468375
NOTRY=true

Review URL: https://codereview.webrtc.org/1335923002

Cr-Commit-Position: refs/heads/master@{#9964}
2015-09-17 07:24:51 +00:00

64 lines
1.6 KiB
C++

/*
* Copyright (c) 2014 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 "webrtc/common_audio/vad/include/vad.h"
#include "webrtc/base/checks.h"
namespace webrtc {
namespace {
class VadImpl final : public Vad {
public:
explicit VadImpl(Aggressiveness aggressiveness)
: handle_(nullptr), aggressiveness_(aggressiveness) {
Reset();
}
~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:
RTC_DCHECK(false) << "WebRtcVad_Process returned an error.";
return kError;
}
}
void Reset() override {
if (handle_)
WebRtcVad_Free(handle_);
handle_ = WebRtcVad_Create();
RTC_CHECK(handle_);
RTC_CHECK_EQ(WebRtcVad_Init(handle_), 0);
RTC_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