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

          Line data    Source code
       1             : /*
       2             :  *  Copyright (c) 2016 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/modules/audio_processing/aec3/frame_blocker.h"
      12             : 
      13             : #include <algorithm>
      14             : 
      15             : #include "webrtc/base/checks.h"
      16             : #include "webrtc/modules/audio_processing/aec3/aec3_constants.h"
      17             : 
      18             : namespace webrtc {
      19             : 
      20           0 : FrameBlocker::FrameBlocker(size_t num_bands)
      21           0 :     : num_bands_(num_bands), buffer_(num_bands_) {
      22           0 :   for (auto& b : buffer_) {
      23           0 :     b.reserve(kBlockSize);
      24           0 :     RTC_DCHECK(b.empty());
      25             :   }
      26           0 : }
      27             : 
      28             : FrameBlocker::~FrameBlocker() = default;
      29             : 
      30           0 : void FrameBlocker::InsertSubFrameAndExtractBlock(
      31             :     const std::vector<rtc::ArrayView<float>>& sub_frame,
      32             :     std::vector<std::vector<float>>* block) {
      33           0 :   RTC_DCHECK(block);
      34           0 :   RTC_DCHECK_EQ(num_bands_, block->size());
      35           0 :   RTC_DCHECK_EQ(num_bands_, sub_frame.size());
      36           0 :   for (size_t i = 0; i < num_bands_; ++i) {
      37           0 :     RTC_DCHECK_GE(kBlockSize - 16, buffer_[i].size());
      38           0 :     RTC_DCHECK_EQ(kBlockSize, (*block)[i].size());
      39           0 :     RTC_DCHECK_EQ(kSubFrameLength, sub_frame[i].size());
      40           0 :     const int samples_to_block = kBlockSize - buffer_[i].size();
      41           0 :     (*block)[i].clear();
      42           0 :     (*block)[i].insert((*block)[i].begin(), buffer_[i].begin(),
      43           0 :                        buffer_[i].end());
      44           0 :     (*block)[i].insert((*block)[i].begin() + buffer_[i].size(),
      45           0 :                        sub_frame[i].begin(),
      46           0 :                        sub_frame[i].begin() + samples_to_block);
      47           0 :     buffer_[i].clear();
      48           0 :     buffer_[i].insert(buffer_[i].begin(),
      49           0 :                       sub_frame[i].begin() + samples_to_block,
      50           0 :                       sub_frame[i].end());
      51             :   }
      52           0 : }
      53             : 
      54           0 : bool FrameBlocker::IsBlockAvailable() const {
      55           0 :   return kBlockSize == buffer_[0].size();
      56             : }
      57             : 
      58           0 : void FrameBlocker::ExtractBlock(std::vector<std::vector<float>>* block) {
      59           0 :   RTC_DCHECK(block);
      60           0 :   RTC_DCHECK_EQ(num_bands_, block->size());
      61           0 :   RTC_DCHECK(IsBlockAvailable());
      62           0 :   for (size_t i = 0; i < num_bands_; ++i) {
      63           0 :     RTC_DCHECK_EQ(kBlockSize, buffer_[i].size());
      64           0 :     RTC_DCHECK_EQ(kBlockSize, (*block)[i].size());
      65           0 :     (*block)[i].clear();
      66           0 :     (*block)[i].insert((*block)[i].begin(), buffer_[i].begin(),
      67           0 :                        buffer_[i].end());
      68           0 :     buffer_[i].clear();
      69             :   }
      70           0 : }
      71             : 
      72             : }  // namespace webrtc

Generated by: LCOV version 1.13