mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-14 06:10:40 +01:00

This change makes the transparent mode classifier consider filter convergence also for microphone signals with very low volume. This is in order to prevent entering transparent mode when there is low, but audible, echo. Furthermore, the suppression gain during transparent mode is restored to avoid leaks when the echo is too low to be reliably detected by filter convergence. Bug: webrtc:10232, chromium:1140452 Change-Id: Idd4f40c4aee7c20baa444afaa5ec604eb65bcfd0 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/189786 Reviewed-by: Per Åhgren <peah@webrtc.org> Commit-Queue: Gustaf Ullberg <gustaf@webrtc.org> Cr-Commit-Position: refs/heads/master@{#32461}
47 lines
1.6 KiB
C++
47 lines
1.6 KiB
C++
/*
|
|
* Copyright (c) 2020 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_TRANSPARENT_MODE_H_
|
|
#define MODULES_AUDIO_PROCESSING_AEC3_TRANSPARENT_MODE_H_
|
|
|
|
#include <memory>
|
|
|
|
#include "api/audio/echo_canceller3_config.h"
|
|
#include "modules/audio_processing/aec3/aec3_common.h"
|
|
|
|
namespace webrtc {
|
|
|
|
// Class for detecting and toggling the transparent mode which causes the
|
|
// suppressor to apply less suppression.
|
|
class TransparentMode {
|
|
public:
|
|
static std::unique_ptr<TransparentMode> Create(
|
|
const EchoCanceller3Config& config);
|
|
|
|
virtual ~TransparentMode() {}
|
|
|
|
// Returns whether the transparent mode should be active.
|
|
virtual bool Active() const = 0;
|
|
|
|
// Resets the state of the detector.
|
|
virtual void Reset() = 0;
|
|
|
|
// Updates the detection decision based on new data.
|
|
virtual void Update(int filter_delay_blocks,
|
|
bool any_filter_consistent,
|
|
bool any_filter_converged,
|
|
bool any_coarse_filter_converged,
|
|
bool all_filters_diverged,
|
|
bool active_render,
|
|
bool saturated_capture) = 0;
|
|
};
|
|
|
|
} // namespace webrtc
|
|
#endif // MODULES_AUDIO_PROCESSING_AEC3_TRANSPARENT_MODE_H_
|