Change AudioProcessing interface to allow not to require rtc::TaskQueue

rtc::TaskQueue is a wrapper of TaskQueueBase providing no extra functionality in this case

Bug: webrtc:14169
Change-Id: I5eb27a5dbb16f6097a9c71c2633c807808e50c05
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/333800
Reviewed-by: Sam Zackrisson <saza@webrtc.org>
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#41501}
This commit is contained in:
Danil Chapovalov 2024-01-09 11:52:10 +01:00 committed by WebRTC LUCI CQ
parent 21b3c5a5ad
commit 1ecf29c1ce
6 changed files with 85 additions and 22 deletions

View File

@ -34,8 +34,10 @@ rtc_library("api") {
"../../api/audio:aec3_config", "../../api/audio:aec3_config",
"../../api/audio:audio_frame_api", "../../api/audio:audio_frame_api",
"../../api/audio:echo_control", "../../api/audio:echo_control",
"../../api/task_queue",
"../../rtc_base:macromagic", "../../rtc_base:macromagic",
"../../rtc_base:refcount", "../../rtc_base:refcount",
"../../rtc_base:rtc_task_queue",
"../../rtc_base:stringutils", "../../rtc_base:stringutils",
"../../rtc_base/system:arch", "../../rtc_base/system:arch",
"../../rtc_base/system:file_wrapper", "../../rtc_base/system:file_wrapper",
@ -43,6 +45,7 @@ rtc_library("api") {
"agc:gain_control_interface", "agc:gain_control_interface",
] ]
absl_deps = [ absl_deps = [
"//third_party/abseil-cpp/absl/base:nullability",
"//third_party/abseil-cpp/absl/strings", "//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional", "//third_party/abseil-cpp/absl/types:optional",
] ]
@ -185,6 +188,7 @@ rtc_library("audio_processing") {
"../../api/audio:aec3_config", "../../api/audio:aec3_config",
"../../api/audio:audio_frame_api", "../../api/audio:audio_frame_api",
"../../api/audio:echo_control", "../../api/audio:echo_control",
"../../api/task_queue",
"../../audio/utility:audio_frame_operations", "../../audio/utility:audio_frame_operations",
"../../common_audio:common_audio_c", "../../common_audio:common_audio_c",
"../../common_audio/third_party/ooura:fft_size_256", "../../common_audio/third_party/ooura:fft_size_256",
@ -193,7 +197,6 @@ rtc_library("audio_processing") {
"../../rtc_base:gtest_prod", "../../rtc_base:gtest_prod",
"../../rtc_base:logging", "../../rtc_base:logging",
"../../rtc_base:macromagic", "../../rtc_base:macromagic",
"../../rtc_base:rtc_task_queue",
"../../rtc_base:safe_minmax", "../../rtc_base:safe_minmax",
"../../rtc_base:sanitizer", "../../rtc_base:sanitizer",
"../../rtc_base:swap_queue", "../../rtc_base:swap_queue",
@ -218,6 +221,7 @@ rtc_library("audio_processing") {
"vad", "vad",
] ]
absl_deps = [ absl_deps = [
"//third_party/abseil-cpp/absl/base:nullability",
"//third_party/abseil-cpp/absl/strings", "//third_party/abseil-cpp/absl/strings",
"//third_party/abseil-cpp/absl/types:optional", "//third_party/abseil-cpp/absl/types:optional",
] ]
@ -338,9 +342,13 @@ if (rtc_include_tests) {
":audio_buffer", ":audio_buffer",
":audio_processing", ":audio_processing",
":audio_processing_statistics", ":audio_processing_statistics",
"../../api/task_queue",
"../../test:test_support", "../../test:test_support",
] ]
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ] absl_deps = [
"//third_party/abseil-cpp/absl/base:nullability",
"//third_party/abseil-cpp/absl/strings",
]
} }
if (!build_with_chromium) { if (!build_with_chromium) {

View File

@ -18,11 +18,13 @@
#include <type_traits> #include <type_traits>
#include <utility> #include <utility>
#include "absl/base/nullability.h"
#include "absl/strings/match.h" #include "absl/strings/match.h"
#include "absl/strings/string_view.h" #include "absl/strings/string_view.h"
#include "absl/types/optional.h" #include "absl/types/optional.h"
#include "api/array_view.h" #include "api/array_view.h"
#include "api/audio/audio_frame.h" #include "api/audio/audio_frame.h"
#include "api/task_queue/task_queue_base.h"
#include "common_audio/audio_converter.h" #include "common_audio/audio_converter.h"
#include "common_audio/include/audio_util.h" #include "common_audio/include/audio_util.h"
#include "modules/audio_processing/aec_dump/aec_dump_factory.h" #include "modules/audio_processing/aec_dump/aec_dump_factory.h"
@ -33,7 +35,6 @@
#include "rtc_base/checks.h" #include "rtc_base/checks.h"
#include "rtc_base/experiments/field_trial_parser.h" #include "rtc_base/experiments/field_trial_parser.h"
#include "rtc_base/logging.h" #include "rtc_base/logging.h"
#include "rtc_base/task_queue.h"
#include "rtc_base/time_utils.h" #include "rtc_base/time_utils.h"
#include "rtc_base/trace_event.h" #include "rtc_base/trace_event.h"
#include "system_wrappers/include/denormal_disabler.h" #include "system_wrappers/include/denormal_disabler.h"
@ -2083,11 +2084,12 @@ void AudioProcessingImpl::UpdateRecommendedInputVolumeLocked() {
capture_.recommended_input_volume = capture_.applied_input_volume; capture_.recommended_input_volume = capture_.applied_input_volume;
} }
bool AudioProcessingImpl::CreateAndAttachAecDump(absl::string_view file_name, bool AudioProcessingImpl::CreateAndAttachAecDump(
int64_t max_log_size_bytes, absl::string_view file_name,
rtc::TaskQueue* worker_queue) { int64_t max_log_size_bytes,
std::unique_ptr<AecDump> aec_dump = AecDumpFactory::Create( absl::Nonnull<TaskQueueBase*> worker_queue) {
file_name, max_log_size_bytes, worker_queue->Get()); std::unique_ptr<AecDump> aec_dump =
AecDumpFactory::Create(file_name, max_log_size_bytes, worker_queue);
if (!aec_dump) { if (!aec_dump) {
return false; return false;
} }
@ -2096,11 +2098,12 @@ bool AudioProcessingImpl::CreateAndAttachAecDump(absl::string_view file_name,
return true; return true;
} }
bool AudioProcessingImpl::CreateAndAttachAecDump(FILE* handle, bool AudioProcessingImpl::CreateAndAttachAecDump(
int64_t max_log_size_bytes, FILE* handle,
rtc::TaskQueue* worker_queue) { int64_t max_log_size_bytes,
absl::Nonnull<TaskQueueBase*> worker_queue) {
std::unique_ptr<AecDump> aec_dump = std::unique_ptr<AecDump> aec_dump =
AecDumpFactory::Create(handle, max_log_size_bytes, worker_queue->Get()); AecDumpFactory::Create(handle, max_log_size_bytes, worker_queue);
if (!aec_dump) { if (!aec_dump) {
return false; return false;
} }

View File

@ -19,10 +19,12 @@
#include <string> #include <string>
#include <vector> #include <vector>
#include "absl/base/nullability.h"
#include "absl/strings/string_view.h" #include "absl/strings/string_view.h"
#include "absl/types/optional.h" #include "absl/types/optional.h"
#include "api/array_view.h" #include "api/array_view.h"
#include "api/function_view.h" #include "api/function_view.h"
#include "api/task_queue/task_queue_base.h"
#include "modules/audio_processing/aec3/echo_canceller3.h" #include "modules/audio_processing/aec3/echo_canceller3.h"
#include "modules/audio_processing/agc/agc_manager_direct.h" #include "modules/audio_processing/agc/agc_manager_direct.h"
#include "modules/audio_processing/agc/gain_control.h" #include "modules/audio_processing/agc/gain_control.h"
@ -71,12 +73,14 @@ class AudioProcessingImpl : public AudioProcessing {
int Initialize() override; int Initialize() override;
int Initialize(const ProcessingConfig& processing_config) override; int Initialize(const ProcessingConfig& processing_config) override;
void ApplyConfig(const AudioProcessing::Config& config) override; void ApplyConfig(const AudioProcessing::Config& config) override;
bool CreateAndAttachAecDump(absl::string_view file_name, bool CreateAndAttachAecDump(
int64_t max_log_size_bytes, absl::string_view file_name,
rtc::TaskQueue* worker_queue) override; int64_t max_log_size_bytes,
bool CreateAndAttachAecDump(FILE* handle, absl::Nonnull<TaskQueueBase*> worker_queue) override;
int64_t max_log_size_bytes, bool CreateAndAttachAecDump(
rtc::TaskQueue* worker_queue) override; FILE* handle,
int64_t max_log_size_bytes,
absl::Nonnull<TaskQueueBase*> worker_queue) override;
// TODO(webrtc:5298) Deprecated variant. // TODO(webrtc:5298) Deprecated variant.
void AttachAecDump(std::unique_ptr<AecDump> aec_dump) override; void AttachAecDump(std::unique_ptr<AecDump> aec_dump) override;
void DetachAecDump() override; void DetachAecDump() override;

View File

@ -12,6 +12,7 @@
#include "rtc_base/strings/string_builder.h" #include "rtc_base/strings/string_builder.h"
#include "rtc_base/system/arch.h" #include "rtc_base/system/arch.h"
#include "rtc_base/task_queue.h"
namespace webrtc { namespace webrtc {
namespace { namespace {
@ -207,4 +208,36 @@ std::string AudioProcessing::Config::ToString() const {
return builder.str(); return builder.str();
} }
bool AudioProcessing::CreateAndAttachAecDump(absl::string_view file_name,
int64_t max_log_size_bytes,
rtc::TaskQueue* worker_queue) {
return CreateAndAttachAecDump(file_name, max_log_size_bytes,
worker_queue->Get());
}
bool AudioProcessing::CreateAndAttachAecDump(FILE* handle,
int64_t max_log_size_bytes,
rtc::TaskQueue* worker_queue) {
return CreateAndAttachAecDump(handle, max_log_size_bytes,
worker_queue->Get());
}
bool AudioProcessing::CreateAndAttachAecDump(
absl::string_view file_name,
int64_t max_log_size_bytes,
absl::Nonnull<TaskQueueBase*> worker_queue) {
// Newer code should implement this variant,
// Older code shouldn't call this variant.
RTC_CHECK_NOTREACHED();
}
bool AudioProcessing::CreateAndAttachAecDump(
FILE* handle,
int64_t max_log_size_bytes,
absl::Nonnull<TaskQueueBase*> worker_queue) {
// New ercode should implement this variant,
// Older code shouldn't call this variant.
RTC_CHECK_NOTREACHED();
}
} // namespace webrtc } // namespace webrtc

View File

@ -23,6 +23,7 @@
#include <vector> #include <vector>
#include "absl/base/nullability.h"
#include "absl/strings/string_view.h" #include "absl/strings/string_view.h"
#include "absl/types/optional.h" #include "absl/types/optional.h"
#include "api/array_view.h" #include "api/array_view.h"
@ -30,6 +31,7 @@
#include "api/audio/echo_control.h" #include "api/audio/echo_control.h"
#include "api/ref_count.h" #include "api/ref_count.h"
#include "api/scoped_refptr.h" #include "api/scoped_refptr.h"
#include "api/task_queue/task_queue_base.h"
#include "modules/audio_processing/include/audio_processing_statistics.h" #include "modules/audio_processing/include/audio_processing_statistics.h"
#include "rtc_base/arraysize.h" #include "rtc_base/arraysize.h"
#include "rtc_base/system/file_wrapper.h" #include "rtc_base/system/file_wrapper.h"
@ -632,12 +634,23 @@ class RTC_EXPORT AudioProcessing : public RefCountInterface {
// return value of true indicates that the file has been // return value of true indicates that the file has been
// sucessfully opened, while a value of false indicates that // sucessfully opened, while a value of false indicates that
// opening the file failed. // opening the file failed.
// TODO: bugs.webrtc.org/14169 - Delete rtc::TaskQueue variants
virtual bool CreateAndAttachAecDump(absl::string_view file_name, virtual bool CreateAndAttachAecDump(absl::string_view file_name,
int64_t max_log_size_bytes, int64_t max_log_size_bytes,
rtc::TaskQueue* worker_queue) = 0; rtc::TaskQueue* worker_queue);
virtual bool CreateAndAttachAecDump(FILE* handle, virtual bool CreateAndAttachAecDump(FILE* handle,
int64_t max_log_size_bytes, int64_t max_log_size_bytes,
rtc::TaskQueue* worker_queue) = 0; rtc::TaskQueue* worker_queue);
// TODO: bugs.webrtc.org/14169 - Make TaskQueueBase variants pure virtual when
// implemented by derived classes.
virtual bool CreateAndAttachAecDump(
absl::string_view file_name,
int64_t max_log_size_bytes,
absl::Nonnull<TaskQueueBase*> worker_queue);
virtual bool CreateAndAttachAecDump(
absl::Nonnull<FILE*> handle,
int64_t max_log_size_bytes,
absl::Nonnull<TaskQueueBase*> worker_queue);
// TODO(webrtc:5298) Deprecated variant. // TODO(webrtc:5298) Deprecated variant.
// Attaches provided webrtc::AecDump for recording debugging // Attaches provided webrtc::AecDump for recording debugging

View File

@ -13,7 +13,9 @@
#include <memory> #include <memory>
#include "absl/base/nullability.h"
#include "absl/strings/string_view.h" #include "absl/strings/string_view.h"
#include "api/task_queue/task_queue_base.h"
#include "modules/audio_processing/include/aec_dump.h" #include "modules/audio_processing/include/aec_dump.h"
#include "modules/audio_processing/include/audio_processing.h" #include "modules/audio_processing/include/audio_processing.h"
#include "modules/audio_processing/include/audio_processing_statistics.h" #include "modules/audio_processing/include/audio_processing_statistics.h"
@ -155,13 +157,13 @@ class MockAudioProcessing : public AudioProcessing {
CreateAndAttachAecDump, CreateAndAttachAecDump,
(absl::string_view file_name, (absl::string_view file_name,
int64_t max_log_size_bytes, int64_t max_log_size_bytes,
rtc::TaskQueue* worker_queue), absl::Nonnull<TaskQueueBase*> worker_queue),
(override)); (override));
MOCK_METHOD(bool, MOCK_METHOD(bool,
CreateAndAttachAecDump, CreateAndAttachAecDump,
(FILE * handle, (FILE * handle,
int64_t max_log_size_bytes, int64_t max_log_size_bytes,
rtc::TaskQueue* worker_queue), absl::Nonnull<TaskQueueBase*> worker_queue),
(override)); (override));
MOCK_METHOD(void, AttachAecDump, (std::unique_ptr<AecDump>), (override)); MOCK_METHOD(void, AttachAecDump, (std::unique_ptr<AecDump>), (override));
MOCK_METHOD(void, DetachAecDump, (), (override)); MOCK_METHOD(void, DetachAecDump, (), (override));