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

          Line data    Source code
       1             : /*
       2             :  *  Copyright (c) 2015 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             : #ifndef WEBRTC_COMMON_AUDIO_SPARSE_FIR_FILTER_H_
      12             : #define WEBRTC_COMMON_AUDIO_SPARSE_FIR_FILTER_H_
      13             : 
      14             : #include <cstring>
      15             : #include <vector>
      16             : 
      17             : #include "webrtc/base/constructormagic.h"
      18             : 
      19             : namespace webrtc {
      20             : 
      21             : // A Finite Impulse Response filter implementation which takes advantage of a
      22             : // sparse structure with uniformly distributed non-zero coefficients.
      23           0 : class SparseFIRFilter final {
      24             :  public:
      25             :   // |num_nonzero_coeffs| is the number of non-zero coefficients,
      26             :   // |nonzero_coeffs|. They are assumed to be uniformly distributed every
      27             :   // |sparsity| samples and with an initial |offset|. The rest of the filter
      28             :   // coefficients will be assumed zeros. For example, with sparsity = 3, and
      29             :   // offset = 1 the filter coefficients will be:
      30             :   // B = [0 coeffs[0] 0 0 coeffs[1] 0 0 coeffs[2] ... ]
      31             :   // All initial state values will be zeros.
      32             :   SparseFIRFilter(const float* nonzero_coeffs,
      33             :                   size_t num_nonzero_coeffs,
      34             :                   size_t sparsity,
      35             :                   size_t offset);
      36             :   ~SparseFIRFilter();
      37             : 
      38             :   // Filters the |in| data supplied.
      39             :   // |out| must be previously allocated and it must be at least of |length|.
      40             :   void Filter(const float* in, size_t length, float* out);
      41             : 
      42             :  private:
      43             :   const size_t sparsity_;
      44             :   const size_t offset_;
      45             :   const std::vector<float> nonzero_coeffs_;
      46             :   std::vector<float> state_;
      47             : 
      48             :   RTC_DISALLOW_COPY_AND_ASSIGN(SparseFIRFilter);
      49             : };
      50             : 
      51             : }  // namespace webrtc
      52             : 
      53             : #endif  // WEBRTC_COMMON_AUDIO_SPARSE_FIR_FILTER_H_

Generated by: LCOV version 1.13