mirror of
https://github.com/mollyim/webrtc.git
synced 2025-05-13 13:50:40 +01:00
In AecDump take raw pointer to TaskQueueBase instead of legacy rtc::TaskQueue
Bug: webrtc:14169 Change-Id: I1e50a945a7637da07bec00ccd7b6b1847a7481cd Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/333480 Reviewed-by: Sam Zackrisson <saza@webrtc.org> Commit-Queue: Danil Chapovalov <danilchap@webrtc.org> Cr-Commit-Position: refs/heads/main@{#41477}
This commit is contained in:
parent
dc64596510
commit
b64eef1234
13 changed files with 104 additions and 66 deletions
|
@ -193,6 +193,7 @@ 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",
|
||||||
|
|
|
@ -14,10 +14,15 @@ rtc_source_set("aec_dump") {
|
||||||
|
|
||||||
deps = [
|
deps = [
|
||||||
"..:aec_dump_interface",
|
"..:aec_dump_interface",
|
||||||
|
"../../../api/task_queue",
|
||||||
|
"../../../rtc_base:rtc_task_queue",
|
||||||
"../../../rtc_base/system:file_wrapper",
|
"../../../rtc_base/system:file_wrapper",
|
||||||
"../../../rtc_base/system:rtc_export",
|
"../../../rtc_base/system:rtc_export",
|
||||||
]
|
]
|
||||||
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
|
absl_deps = [
|
||||||
|
"//third_party/abseil-cpp/absl/base:nullability",
|
||||||
|
"//third_party/abseil-cpp/absl/strings",
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rtc_include_tests) {
|
if (rtc_include_tests) {
|
||||||
|
@ -71,11 +76,13 @@ if (rtc_enable_protobuf) {
|
||||||
"../../../rtc_base:protobuf_utils",
|
"../../../rtc_base:protobuf_utils",
|
||||||
"../../../rtc_base:race_checker",
|
"../../../rtc_base:race_checker",
|
||||||
"../../../rtc_base:rtc_event",
|
"../../../rtc_base:rtc_event",
|
||||||
"../../../rtc_base:rtc_task_queue",
|
|
||||||
"../../../rtc_base/system:file_wrapper",
|
"../../../rtc_base/system:file_wrapper",
|
||||||
"../../../system_wrappers",
|
"../../../system_wrappers",
|
||||||
]
|
]
|
||||||
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
|
absl_deps = [
|
||||||
|
"//third_party/abseil-cpp/absl/base:nullability",
|
||||||
|
"//third_party/abseil-cpp/absl/strings",
|
||||||
|
]
|
||||||
|
|
||||||
deps += [ "../:audioproc_debug_proto" ]
|
deps += [ "../:audioproc_debug_proto" ]
|
||||||
}
|
}
|
||||||
|
@ -106,6 +113,10 @@ rtc_library("null_aec_dump_factory") {
|
||||||
deps = [
|
deps = [
|
||||||
":aec_dump",
|
":aec_dump",
|
||||||
"..:aec_dump_interface",
|
"..:aec_dump_interface",
|
||||||
|
"../../../api/task_queue",
|
||||||
|
]
|
||||||
|
absl_deps = [
|
||||||
|
"//third_party/abseil-cpp/absl/base:nullability",
|
||||||
|
"//third_party/abseil-cpp/absl/strings",
|
||||||
]
|
]
|
||||||
absl_deps = [ "//third_party/abseil-cpp/absl/strings" ]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,34 +13,44 @@
|
||||||
|
|
||||||
#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 "rtc_base/system/file_wrapper.h"
|
#include "rtc_base/system/file_wrapper.h"
|
||||||
#include "rtc_base/system/rtc_export.h"
|
#include "rtc_base/system/rtc_export.h"
|
||||||
|
#include "rtc_base/task_queue.h"
|
||||||
namespace rtc {
|
|
||||||
class TaskQueue;
|
|
||||||
} // namespace rtc
|
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
class RTC_EXPORT AecDumpFactory {
|
class RTC_EXPORT AecDumpFactory {
|
||||||
public:
|
public:
|
||||||
// The `worker_queue` may not be null and must outlive the created
|
// The `worker_queue` must outlive the created AecDump instance.
|
||||||
// AecDump instance. `max_log_size_bytes == -1` means the log size
|
// `max_log_size_bytes == -1` means the log size will be unlimited.
|
||||||
// will be unlimited. `handle` may not be null. The AecDump takes
|
// The AecDump takes responsibility for `handle` and closes it in the
|
||||||
// responsibility for `handle` and closes it in the destructor. A
|
// destructor. A non-null return value indicates that the file has been
|
||||||
// non-null return value indicates that the file has been
|
|
||||||
// sucessfully opened.
|
// sucessfully opened.
|
||||||
static std::unique_ptr<AecDump> Create(webrtc::FileWrapper file,
|
static absl::Nullable<std::unique_ptr<AecDump>> Create(
|
||||||
|
FileWrapper file,
|
||||||
int64_t max_log_size_bytes,
|
int64_t max_log_size_bytes,
|
||||||
rtc::TaskQueue* worker_queue);
|
absl::Nonnull<TaskQueueBase*> worker_queue);
|
||||||
static std::unique_ptr<AecDump> Create(absl::string_view file_name,
|
static absl::Nullable<std::unique_ptr<AecDump>> Create(
|
||||||
|
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);
|
||||||
static std::unique_ptr<AecDump> Create(FILE* handle,
|
static absl::Nullable<std::unique_ptr<AecDump>> Create(
|
||||||
|
absl::Nonnull<FILE*> handle,
|
||||||
int64_t max_log_size_bytes,
|
int64_t max_log_size_bytes,
|
||||||
rtc::TaskQueue* worker_queue);
|
absl::Nonnull<TaskQueueBase*> worker_queue);
|
||||||
|
|
||||||
|
// TODO: bugs.webrtc.org/14169 - Delete this variant when no longer used by
|
||||||
|
// chromium.
|
||||||
|
static absl::Nullable<std::unique_ptr<AecDump>> Create(
|
||||||
|
absl::Nonnull<FILE*> handle,
|
||||||
|
int64_t max_log_size_bytes,
|
||||||
|
absl::Nonnull<rtc::TaskQueue*> worker_queue) {
|
||||||
|
return Create(handle, max_log_size_bytes, worker_queue->Get());
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
|
|
@ -13,11 +13,12 @@
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <utility>
|
#include <utility>
|
||||||
|
|
||||||
|
#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/aec_dump/aec_dump_factory.h"
|
#include "modules/audio_processing/aec_dump/aec_dump_factory.h"
|
||||||
#include "rtc_base/checks.h"
|
#include "rtc_base/checks.h"
|
||||||
#include "rtc_base/event.h"
|
#include "rtc_base/event.h"
|
||||||
#include "rtc_base/task_queue.h"
|
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
|
@ -59,7 +60,7 @@ void CopyFromConfigToEvent(const webrtc::InternalAPMConfig& config,
|
||||||
|
|
||||||
AecDumpImpl::AecDumpImpl(FileWrapper debug_file,
|
AecDumpImpl::AecDumpImpl(FileWrapper debug_file,
|
||||||
int64_t max_log_size_bytes,
|
int64_t max_log_size_bytes,
|
||||||
rtc::TaskQueue* worker_queue)
|
absl::Nonnull<TaskQueueBase*> worker_queue)
|
||||||
: debug_file_(std::move(debug_file)),
|
: debug_file_(std::move(debug_file)),
|
||||||
num_bytes_left_for_log_(max_log_size_bytes),
|
num_bytes_left_for_log_(max_log_size_bytes),
|
||||||
worker_queue_(worker_queue) {}
|
worker_queue_(worker_queue) {}
|
||||||
|
@ -254,9 +255,10 @@ void AecDumpImpl::PostWriteToFileTask(std::unique_ptr<audioproc::Event> event) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<AecDump> AecDumpFactory::Create(webrtc::FileWrapper file,
|
absl::Nullable<std::unique_ptr<AecDump>> AecDumpFactory::Create(
|
||||||
|
FileWrapper file,
|
||||||
int64_t max_log_size_bytes,
|
int64_t max_log_size_bytes,
|
||||||
rtc::TaskQueue* worker_queue) {
|
absl::Nonnull<TaskQueueBase*> worker_queue) {
|
||||||
RTC_DCHECK(worker_queue);
|
RTC_DCHECK(worker_queue);
|
||||||
if (!file.is_open())
|
if (!file.is_open())
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
@ -265,16 +267,18 @@ std::unique_ptr<AecDump> AecDumpFactory::Create(webrtc::FileWrapper file,
|
||||||
worker_queue);
|
worker_queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<AecDump> AecDumpFactory::Create(absl::string_view file_name,
|
absl::Nullable<std::unique_ptr<AecDump>> AecDumpFactory::Create(
|
||||||
|
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) {
|
||||||
return Create(FileWrapper::OpenWriteOnly(file_name), max_log_size_bytes,
|
return Create(FileWrapper::OpenWriteOnly(file_name), max_log_size_bytes,
|
||||||
worker_queue);
|
worker_queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<AecDump> AecDumpFactory::Create(FILE* handle,
|
absl::Nullable<std::unique_ptr<AecDump>> AecDumpFactory::Create(
|
||||||
|
absl::Nonnull<FILE*> handle,
|
||||||
int64_t max_log_size_bytes,
|
int64_t max_log_size_bytes,
|
||||||
rtc::TaskQueue* worker_queue) {
|
absl::Nonnull<TaskQueueBase*> worker_queue) {
|
||||||
return Create(FileWrapper(handle), max_log_size_bytes, worker_queue);
|
return Create(FileWrapper(handle), max_log_size_bytes, worker_queue);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,11 +15,11 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include "api/task_queue/task_queue_base.h"
|
||||||
#include "modules/audio_processing/aec_dump/capture_stream_info.h"
|
#include "modules/audio_processing/aec_dump/capture_stream_info.h"
|
||||||
#include "modules/audio_processing/include/aec_dump.h"
|
#include "modules/audio_processing/include/aec_dump.h"
|
||||||
#include "rtc_base/race_checker.h"
|
#include "rtc_base/race_checker.h"
|
||||||
#include "rtc_base/system/file_wrapper.h"
|
#include "rtc_base/system/file_wrapper.h"
|
||||||
#include "rtc_base/task_queue.h"
|
|
||||||
#include "rtc_base/thread_annotations.h"
|
#include "rtc_base/thread_annotations.h"
|
||||||
|
|
||||||
// Files generated at build-time by the protobuf compiler.
|
// Files generated at build-time by the protobuf compiler.
|
||||||
|
@ -39,7 +39,7 @@ class AecDumpImpl : public AecDump {
|
||||||
// `max_log_size_bytes == -1` means the log size will be unlimited.
|
// `max_log_size_bytes == -1` means the log size will be unlimited.
|
||||||
AecDumpImpl(FileWrapper debug_file,
|
AecDumpImpl(FileWrapper debug_file,
|
||||||
int64_t max_log_size_bytes,
|
int64_t max_log_size_bytes,
|
||||||
rtc::TaskQueue* worker_queue);
|
absl::Nonnull<TaskQueueBase*> worker_queue);
|
||||||
AecDumpImpl(const AecDumpImpl&) = delete;
|
AecDumpImpl(const AecDumpImpl&) = delete;
|
||||||
AecDumpImpl& operator=(const AecDumpImpl&) = delete;
|
AecDumpImpl& operator=(const AecDumpImpl&) = delete;
|
||||||
~AecDumpImpl() override;
|
~AecDumpImpl() override;
|
||||||
|
@ -74,7 +74,7 @@ class AecDumpImpl : public AecDump {
|
||||||
FileWrapper debug_file_;
|
FileWrapper debug_file_;
|
||||||
int64_t num_bytes_left_for_log_ = 0;
|
int64_t num_bytes_left_for_log_ = 0;
|
||||||
rtc::RaceChecker race_checker_;
|
rtc::RaceChecker race_checker_;
|
||||||
rtc::TaskQueue* worker_queue_;
|
absl::Nonnull<TaskQueueBase*> worker_queue_;
|
||||||
CaptureStreamInfo capture_stream_info_;
|
CaptureStreamInfo capture_stream_info_;
|
||||||
};
|
};
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
|
|
@ -28,7 +28,7 @@ TEST(AecDumper, APICallsDoNotCrash) {
|
||||||
|
|
||||||
{
|
{
|
||||||
std::unique_ptr<webrtc::AecDump> aec_dump =
|
std::unique_ptr<webrtc::AecDump> aec_dump =
|
||||||
webrtc::AecDumpFactory::Create(filename, -1, &file_writer_queue);
|
webrtc::AecDumpFactory::Create(filename, -1, file_writer_queue.Get());
|
||||||
|
|
||||||
constexpr int kNumChannels = 1;
|
constexpr int kNumChannels = 1;
|
||||||
constexpr int kNumSamplesPerChannel = 160;
|
constexpr int kNumSamplesPerChannel = 160;
|
||||||
|
@ -63,7 +63,7 @@ TEST(AecDumper, WriteToFile) {
|
||||||
|
|
||||||
{
|
{
|
||||||
std::unique_ptr<webrtc::AecDump> aec_dump =
|
std::unique_ptr<webrtc::AecDump> aec_dump =
|
||||||
webrtc::AecDumpFactory::Create(filename, -1, &file_writer_queue);
|
webrtc::AecDumpFactory::Create(filename, -1, file_writer_queue.Get());
|
||||||
|
|
||||||
constexpr int kNumChannels = 1;
|
constexpr int kNumChannels = 1;
|
||||||
constexpr int kNumSamplesPerChannel = 160;
|
constexpr int kNumSamplesPerChannel = 160;
|
||||||
|
|
|
@ -8,27 +8,32 @@
|
||||||
* be found in the AUTHORS file in the root of the source tree.
|
* be found in the AUTHORS file in the root of the source tree.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#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/aec_dump/aec_dump_factory.h"
|
#include "modules/audio_processing/aec_dump/aec_dump_factory.h"
|
||||||
#include "modules/audio_processing/include/aec_dump.h"
|
#include "modules/audio_processing/include/aec_dump.h"
|
||||||
|
|
||||||
namespace webrtc {
|
namespace webrtc {
|
||||||
|
|
||||||
std::unique_ptr<AecDump> AecDumpFactory::Create(webrtc::FileWrapper file,
|
absl::Nullable<std::unique_ptr<AecDump>> AecDumpFactory::Create(
|
||||||
|
FileWrapper file,
|
||||||
int64_t max_log_size_bytes,
|
int64_t max_log_size_bytes,
|
||||||
rtc::TaskQueue* worker_queue) {
|
absl::Nonnull<TaskQueueBase*> worker_queue) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<AecDump> AecDumpFactory::Create(absl::string_view file_name,
|
absl::Nullable<std::unique_ptr<AecDump>> AecDumpFactory::Create(
|
||||||
|
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) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<AecDump> AecDumpFactory::Create(FILE* handle,
|
absl::Nullable<std::unique_ptr<AecDump>> AecDumpFactory::Create(
|
||||||
|
absl::Nonnull<FILE*> handle,
|
||||||
int64_t max_log_size_bytes,
|
int64_t max_log_size_bytes,
|
||||||
rtc::TaskQueue* worker_queue) {
|
absl::Nonnull<TaskQueueBase*> worker_queue) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
} // namespace webrtc
|
} // namespace webrtc
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#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"
|
||||||
|
@ -2085,8 +2086,8 @@ void AudioProcessingImpl::UpdateRecommendedInputVolumeLocked() {
|
||||||
bool AudioProcessingImpl::CreateAndAttachAecDump(absl::string_view file_name,
|
bool AudioProcessingImpl::CreateAndAttachAecDump(absl::string_view file_name,
|
||||||
int64_t max_log_size_bytes,
|
int64_t max_log_size_bytes,
|
||||||
rtc::TaskQueue* worker_queue) {
|
rtc::TaskQueue* worker_queue) {
|
||||||
std::unique_ptr<AecDump> aec_dump =
|
std::unique_ptr<AecDump> aec_dump = AecDumpFactory::Create(
|
||||||
AecDumpFactory::Create(file_name, max_log_size_bytes, worker_queue);
|
file_name, max_log_size_bytes, worker_queue->Get());
|
||||||
if (!aec_dump) {
|
if (!aec_dump) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -2099,7 +2100,7 @@ bool AudioProcessingImpl::CreateAndAttachAecDump(FILE* handle,
|
||||||
int64_t max_log_size_bytes,
|
int64_t max_log_size_bytes,
|
||||||
rtc::TaskQueue* worker_queue) {
|
rtc::TaskQueue* worker_queue) {
|
||||||
std::unique_ptr<AecDump> aec_dump =
|
std::unique_ptr<AecDump> aec_dump =
|
||||||
AecDumpFactory::Create(handle, max_log_size_bytes, worker_queue);
|
AecDumpFactory::Create(handle, max_log_size_bytes, worker_queue->Get());
|
||||||
if (!aec_dump) {
|
if (!aec_dump) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1485,8 +1485,8 @@ void ApmTest::ProcessDebugDump(absl::string_view in_filename,
|
||||||
if (first_init) {
|
if (first_init) {
|
||||||
// AttachAecDump() writes an additional init message. Don't start
|
// AttachAecDump() writes an additional init message. Don't start
|
||||||
// recording until after the first init to avoid the extra message.
|
// recording until after the first init to avoid the extra message.
|
||||||
auto aec_dump =
|
auto aec_dump = AecDumpFactory::Create(out_filename, max_size_bytes,
|
||||||
AecDumpFactory::Create(out_filename, max_size_bytes, &worker_queue);
|
worker_queue.Get());
|
||||||
EXPECT_TRUE(aec_dump);
|
EXPECT_TRUE(aec_dump);
|
||||||
apm_->AttachAecDump(std::move(aec_dump));
|
apm_->AttachAecDump(std::move(aec_dump));
|
||||||
first_init = false;
|
first_init = false;
|
||||||
|
@ -1632,7 +1632,7 @@ TEST_F(ApmTest, DebugDump) {
|
||||||
const std::string filename =
|
const std::string filename =
|
||||||
test::TempFilename(test::OutputPath(), "debug_aec");
|
test::TempFilename(test::OutputPath(), "debug_aec");
|
||||||
{
|
{
|
||||||
auto aec_dump = AecDumpFactory::Create("", -1, &worker_queue);
|
auto aec_dump = AecDumpFactory::Create("", -1, worker_queue.Get());
|
||||||
EXPECT_FALSE(aec_dump);
|
EXPECT_FALSE(aec_dump);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1640,7 +1640,7 @@ TEST_F(ApmTest, DebugDump) {
|
||||||
// Stopping without having started should be OK.
|
// Stopping without having started should be OK.
|
||||||
apm_->DetachAecDump();
|
apm_->DetachAecDump();
|
||||||
|
|
||||||
auto aec_dump = AecDumpFactory::Create(filename, -1, &worker_queue);
|
auto aec_dump = AecDumpFactory::Create(filename, -1, worker_queue.Get());
|
||||||
EXPECT_TRUE(aec_dump);
|
EXPECT_TRUE(aec_dump);
|
||||||
apm_->AttachAecDump(std::move(aec_dump));
|
apm_->AttachAecDump(std::move(aec_dump));
|
||||||
EXPECT_EQ(apm_->kNoError,
|
EXPECT_EQ(apm_->kNoError,
|
||||||
|
@ -1683,7 +1683,7 @@ TEST_F(ApmTest, DebugDumpFromFileHandle) {
|
||||||
// Stopping without having started should be OK.
|
// Stopping without having started should be OK.
|
||||||
apm_->DetachAecDump();
|
apm_->DetachAecDump();
|
||||||
|
|
||||||
auto aec_dump = AecDumpFactory::Create(std::move(f), -1, &worker_queue);
|
auto aec_dump = AecDumpFactory::Create(std::move(f), -1, worker_queue.Get());
|
||||||
EXPECT_TRUE(aec_dump);
|
EXPECT_TRUE(aec_dump);
|
||||||
apm_->AttachAecDump(std::move(aec_dump));
|
apm_->AttachAecDump(std::move(aec_dump));
|
||||||
EXPECT_EQ(apm_->kNoError,
|
EXPECT_EQ(apm_->kNoError,
|
||||||
|
|
|
@ -622,7 +622,7 @@ void AudioProcessingSimulator::ConfigureAudioProcessor() {
|
||||||
|
|
||||||
if (settings_.aec_dump_output_filename) {
|
if (settings_.aec_dump_output_filename) {
|
||||||
ap_->AttachAecDump(AecDumpFactory::Create(
|
ap_->AttachAecDump(AecDumpFactory::Create(
|
||||||
*settings_.aec_dump_output_filename, -1, &worker_queue_));
|
*settings_.aec_dump_output_filename, -1, worker_queue_.Get()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -197,7 +197,7 @@ void DebugDumpGenerator::SetOutputChannels(int channels) {
|
||||||
|
|
||||||
void DebugDumpGenerator::StartRecording() {
|
void DebugDumpGenerator::StartRecording() {
|
||||||
apm_->AttachAecDump(
|
apm_->AttachAecDump(
|
||||||
AecDumpFactory::Create(dump_file_name_.c_str(), -1, &worker_queue_));
|
AecDumpFactory::Create(dump_file_name_.c_str(), -1, worker_queue_.Get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void DebugDumpGenerator::Process(size_t num_blocks) {
|
void DebugDumpGenerator::Process(size_t num_blocks) {
|
||||||
|
|
|
@ -470,6 +470,7 @@ webrtc_fuzzer_test("audio_processing_fuzzer") {
|
||||||
"../../api:scoped_refptr",
|
"../../api:scoped_refptr",
|
||||||
"../../api/audio:aec3_factory",
|
"../../api/audio:aec3_factory",
|
||||||
"../../api/audio:echo_detector_creator",
|
"../../api/audio:echo_detector_creator",
|
||||||
|
"../../api/task_queue",
|
||||||
"../../api/task_queue:default_task_queue_factory",
|
"../../api/task_queue:default_task_queue_factory",
|
||||||
"../../modules/audio_processing",
|
"../../modules/audio_processing",
|
||||||
"../../modules/audio_processing:api",
|
"../../modules/audio_processing:api",
|
||||||
|
@ -479,11 +480,13 @@ webrtc_fuzzer_test("audio_processing_fuzzer") {
|
||||||
"../../modules/audio_processing/aec_dump",
|
"../../modules/audio_processing/aec_dump",
|
||||||
"../../modules/audio_processing/aec_dump:aec_dump_impl",
|
"../../modules/audio_processing/aec_dump:aec_dump_impl",
|
||||||
"../../rtc_base:macromagic",
|
"../../rtc_base:macromagic",
|
||||||
"../../rtc_base:rtc_task_queue",
|
|
||||||
"../../rtc_base:safe_minmax",
|
"../../rtc_base:safe_minmax",
|
||||||
"../../system_wrappers:field_trial",
|
"../../system_wrappers:field_trial",
|
||||||
]
|
]
|
||||||
absl_deps = [ "//third_party/abseil-cpp/absl/memory" ]
|
absl_deps = [
|
||||||
|
"//third_party/abseil-cpp/absl/base:nullability",
|
||||||
|
"//third_party/abseil-cpp/absl/memory",
|
||||||
|
]
|
||||||
seed_corpus = "corpora/audio_processing-corpus"
|
seed_corpus = "corpora/audio_processing-corpus"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,16 +11,17 @@
|
||||||
#include <bitset>
|
#include <bitset>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include "absl/base/nullability.h"
|
||||||
#include "absl/memory/memory.h"
|
#include "absl/memory/memory.h"
|
||||||
#include "api/audio/echo_canceller3_factory.h"
|
#include "api/audio/echo_canceller3_factory.h"
|
||||||
#include "api/audio/echo_detector_creator.h"
|
#include "api/audio/echo_detector_creator.h"
|
||||||
#include "api/task_queue/default_task_queue_factory.h"
|
#include "api/task_queue/default_task_queue_factory.h"
|
||||||
|
#include "api/task_queue/task_queue_base.h"
|
||||||
#include "modules/audio_processing/aec_dump/aec_dump_factory.h"
|
#include "modules/audio_processing/aec_dump/aec_dump_factory.h"
|
||||||
#include "modules/audio_processing/include/audio_processing.h"
|
#include "modules/audio_processing/include/audio_processing.h"
|
||||||
#include "modules/audio_processing/test/audio_processing_builder_for_testing.h"
|
#include "modules/audio_processing/test/audio_processing_builder_for_testing.h"
|
||||||
#include "rtc_base/arraysize.h"
|
#include "rtc_base/arraysize.h"
|
||||||
#include "rtc_base/numerics/safe_minmax.h"
|
#include "rtc_base/numerics/safe_minmax.h"
|
||||||
#include "rtc_base/task_queue.h"
|
|
||||||
#include "system_wrappers/include/field_trial.h"
|
#include "system_wrappers/include/field_trial.h"
|
||||||
#include "test/fuzzers/audio_processing_fuzzer_helper.h"
|
#include "test/fuzzers/audio_processing_fuzzer_helper.h"
|
||||||
#include "test/fuzzers/fuzz_data_helper.h"
|
#include "test/fuzzers/fuzz_data_helper.h"
|
||||||
|
@ -33,9 +34,10 @@ const std::string kFieldTrialNames[] = {
|
||||||
"WebRTC-Aec3ShortHeadroomKillSwitch",
|
"WebRTC-Aec3ShortHeadroomKillSwitch",
|
||||||
};
|
};
|
||||||
|
|
||||||
rtc::scoped_refptr<AudioProcessing> CreateApm(test::FuzzDataHelper* fuzz_data,
|
rtc::scoped_refptr<AudioProcessing> CreateApm(
|
||||||
|
test::FuzzDataHelper* fuzz_data,
|
||||||
std::string* field_trial_string,
|
std::string* field_trial_string,
|
||||||
rtc::TaskQueue* worker_queue) {
|
absl::Nonnull<TaskQueueBase*> worker_queue) {
|
||||||
// Parse boolean values for optionally enabling different
|
// Parse boolean values for optionally enabling different
|
||||||
// configurable public components of APM.
|
// configurable public components of APM.
|
||||||
bool use_ts = fuzz_data->ReadOrDefaultValue(true);
|
bool use_ts = fuzz_data->ReadOrDefaultValue(true);
|
||||||
|
@ -134,9 +136,10 @@ void FuzzOneInput(const uint8_t* data, size_t size) {
|
||||||
// for field_trial.h. Hence it's created here and not in CreateApm.
|
// for field_trial.h. Hence it's created here and not in CreateApm.
|
||||||
std::string field_trial_string = "";
|
std::string field_trial_string = "";
|
||||||
|
|
||||||
rtc::TaskQueue worker_queue(GetTaskQueueFactory()->CreateTaskQueue(
|
std::unique_ptr<TaskQueueBase, TaskQueueDeleter> worker_queue =
|
||||||
"rtc-low-prio", rtc::TaskQueue::Priority::LOW));
|
GetTaskQueueFactory()->CreateTaskQueue("rtc-low-prio",
|
||||||
auto apm = CreateApm(&fuzz_data, &field_trial_string, &worker_queue);
|
TaskQueueFactory::Priority::LOW);
|
||||||
|
auto apm = CreateApm(&fuzz_data, &field_trial_string, worker_queue.get());
|
||||||
|
|
||||||
if (apm) {
|
if (apm) {
|
||||||
FuzzAudioProcessing(&fuzz_data, std::move(apm));
|
FuzzAudioProcessing(&fuzz_data, std::move(apm));
|
||||||
|
|
Loading…
Reference in a new issue