mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 22:00:47 +01:00

This CL adds the missing support for multi-channel in the code that provides an optional and configurable delay to be added to the microphone signal. The CL also makes the creation of the delay object conditional on the need for that support (this is important since this adds a significant heap memory footprint) Bug: webrtc:11314,chromium:1045910 Change-Id: I92d577e31af830945fe9d5ca2032000aad4266be Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/167525 Commit-Queue: Per Åhgren <peah@webrtc.org> Reviewed-by: Sam Zackrisson <saza@webrtc.org> Cr-Commit-Position: refs/heads/master@{#30392}
43 lines
1.3 KiB
C++
43 lines
1.3 KiB
C++
/*
|
|
* Copyright (c) 2018 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.
|
|
*/
|
|
|
|
#ifndef MODULES_AUDIO_PROCESSING_AEC3_BLOCK_DELAY_BUFFER_H_
|
|
#define MODULES_AUDIO_PROCESSING_AEC3_BLOCK_DELAY_BUFFER_H_
|
|
|
|
#include <stddef.h>
|
|
|
|
#include <vector>
|
|
|
|
#include "modules/audio_processing/audio_buffer.h"
|
|
|
|
namespace webrtc {
|
|
|
|
// Class for applying a fixed delay to the samples in a signal partitioned using
|
|
// the audiobuffer band-splitting scheme.
|
|
class BlockDelayBuffer {
|
|
public:
|
|
BlockDelayBuffer(size_t num_channels,
|
|
size_t num_bands,
|
|
size_t frame_length,
|
|
size_t delay_samples);
|
|
~BlockDelayBuffer();
|
|
|
|
// Delays the samples by the specified delay.
|
|
void DelaySignal(AudioBuffer* frame);
|
|
|
|
private:
|
|
const size_t frame_length_;
|
|
const size_t delay_;
|
|
std::vector<std::vector<std::vector<float>>> buf_;
|
|
size_t last_insert_ = 0;
|
|
};
|
|
} // namespace webrtc
|
|
|
|
#endif // MODULES_AUDIO_PROCESSING_AEC3_BLOCK_DELAY_BUFFER_H_
|