LCOV - code coverage report
Current view: top level - media/webrtc/trunk/webrtc/common_audio/vad - vad.cc (source / functions) Hit Total Coverage
Test: output.info Lines: 0 22 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 6 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  *  Copyright (c) 2014 The WebRTC project authors. All Rights Reserved.
       3             :  *
       4             :  *  Use of this source code is governed by a BSD-style license
       5             :  *  that can be found in the LICENSE file in the root of the source
       6             :  *  tree. An additional intellectual property rights grant can be found
       7             :  *  in the file PATENTS.  All contributing project authors may
       8             :  *  be found in the AUTHORS file in the root of the source tree.
       9             :  */
      10             : 
      11             : #include "webrtc/common_audio/vad/include/vad.h"
      12             : 
      13             : #include <memory>
      14             : 
      15             : #include "webrtc/base/checks.h"
      16             : 
      17             : namespace webrtc {
      18             : 
      19             : namespace {
      20             : 
      21             : class VadImpl final : public Vad {
      22             :  public:
      23           0 :   explicit VadImpl(Aggressiveness aggressiveness)
      24           0 :       : handle_(nullptr), aggressiveness_(aggressiveness) {
      25           0 :     Reset();
      26           0 :   }
      27             : 
      28           0 :   ~VadImpl() override { WebRtcVad_Free(handle_); }
      29             : 
      30           0 :   Activity VoiceActivity(const int16_t* audio,
      31             :                          size_t num_samples,
      32             :                          int sample_rate_hz) override {
      33           0 :     int ret = WebRtcVad_Process(handle_, sample_rate_hz, audio, num_samples);
      34           0 :     switch (ret) {
      35             :       case 0:
      36           0 :         return kPassive;
      37             :       case 1:
      38           0 :         return kActive;
      39             :       default:
      40           0 :         RTC_NOTREACHED() << "WebRtcVad_Process returned an error.";
      41           0 :         return kError;
      42             :     }
      43             :   }
      44             : 
      45           0 :   void Reset() override {
      46           0 :     if (handle_)
      47           0 :       WebRtcVad_Free(handle_);
      48           0 :     handle_ = WebRtcVad_Create();
      49           0 :     RTC_CHECK(handle_);
      50           0 :     RTC_CHECK_EQ(WebRtcVad_Init(handle_), 0);
      51           0 :     RTC_CHECK_EQ(WebRtcVad_set_mode(handle_, aggressiveness_), 0);
      52           0 :   }
      53             : 
      54             :  private:
      55             :   VadInst* handle_;
      56             :   Aggressiveness aggressiveness_;
      57             : };
      58             : 
      59             : }  // namespace
      60             : 
      61           0 : std::unique_ptr<Vad> CreateVad(Vad::Aggressiveness aggressiveness) {
      62           0 :   return std::unique_ptr<Vad>(new VadImpl(aggressiveness));
      63             : }
      64             : 
      65             : }  // namespace webrtc

Generated by: LCOV version 1.13