EchoMap 2026-07-25 6d3977c
An experimental cross-platform digital signal processing application for sound-source localisation.
Loading...
Searching...
No Matches
LoadSignalFileTask.cpp
Go to the documentation of this file.
1
9
11
13
14namespace echomap
15{
16
17LoadSignalFileTask::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
32LoadSignalFileTask::~LoadSignalFileTask() noexcept = default;
33
34WorkerResult 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.
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 specification.
Wave file specification.
An ITask represents an invocable piece of work that produces a WorkerResult.
Definition ITask.hpp:23
WorkerResult execute_work() override
Execute the work and produce a WorkerResult.
static std::vector< std::unique_ptr< Signal > > load_wave_file(const char *file_path)
Loads a WAV file from the file system.
T emplace_back(T... args)
T format(T... args)
T move(T... args)
The main EchoMap outermost namespace for all non-exported symbols.
std::variant< ErrorResult, DFTResult, DownsampleResult, LoadProjectResult, LoadSignalFileResult > WorkerResult
Issued once an ITask has completed its Worker cycle.
T reserve(T... args)