EchoMap
2026-07-25 6d3977c
An experimental cross-platform digital signal processing application for sound-source localisation.
Toggle main menu visibility
Loading...
Searching...
No Matches
LoadSignalFileTask.cpp
Go to the documentation of this file.
1
9
10
#include "
LoadSignalFileTask.hpp
"
11
12
#include "
../../objects/factories/SignalFactory.hpp
"
13
14
namespace
echomap
15
{
16
17
LoadSignalFileTask::LoadSignalFileTask(
18
const
id_type project_id,
19
const
std::filesystem::path& path,
20
std::vector<std::unique_ptr<SignalFactory>>&& factories
21
) :
22
ITask
(std::
format
(
23
"LoadSignalFileTask: {} "
,
24
path.c_str()
25
)),
26
project_id(project_id),
27
path(path),
28
factories(std::
move
(factories))
29
{
30
}
31
32
LoadSignalFileTask::~LoadSignalFileTask() noexcept = default;
33
34
WorkerResult
LoadSignalFileTask::
execute_work
()
35
{
36
// Prepare the factories as slots for the loader.
37
std::vector<SignalFactory*>
factory_refs;
38
factory_refs.
reserve
(factories.size());
39
for (
const
auto
& factory_owner : factories)
40
factory_refs.
emplace_back
(factory_owner.get());
41
42
// Load each channel into the correct factories.
43
SignalFactory::load_wave_file
(path.c_str(), factory_refs);
44
45
// Retrieve the loaded signals.
46
std::vector
<
std::unique_ptr<Signal>
> loaded_signals;
47
for (
auto
&& factory_owner : factories)
48
if
(factory_owner !=
nullptr
)
49
loaded_signals.emplace_back(std::move(factory_owner)->take_signal());
50
51
// Now we own the loaded signals, pass them onto the result.
52
return
LoadSignalFileResult
(project_id, std::move(loaded_signals));
53
}
54
55
}
// namespace echomap
LoadSignalFileTask.hpp
LoadSignalFileTask specification.
SignalFactory.hpp
Wave file specification.
echomap::ITask
An ITask represents an invocable piece of work that produces a WorkerResult.
Definition
ITask.hpp:23
echomap::LoadSignalFileResult
Definition
LoadSignalFileResult.hpp:28
echomap::LoadSignalFileTask::execute_work
WorkerResult execute_work() override
Execute the work and produce a WorkerResult.
Definition
LoadSignalFileTask.cpp:34
echomap::SignalFactory::load_wave_file
static std::vector< std::unique_ptr< Signal > > load_wave_file(const char *file_path)
Loads a WAV file from the file system.
Definition
SignalFactory.cpp:63
std::vector::emplace_back
T emplace_back(T... args)
std::format
T format(T... args)
std::ranges::move
T move(T... args)
echomap
The main EchoMap outermost namespace for all non-exported symbols.
Definition
ActionController.hpp:20
echomap::WorkerResult
std::variant< ErrorResult, DFTResult, DownsampleResult, LoadProjectResult, LoadSignalFileResult > WorkerResult
Issued once an ITask has completed its Worker cycle.
Definition
WorkerResult.hpp:27
std::vector::reserve
T reserve(T... args)
std::unique_ptr
std::vector
src
async
tasks
LoadSignalFileTask.cpp
Generated by
1.17.0