summaryrefslogtreecommitdiff
path: root/src/audio/audio_task.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/audio_task.cpp')
-rw-r--r--src/audio/audio_task.cpp35
1 files changed, 3 insertions, 32 deletions
diff --git a/src/audio/audio_task.cpp b/src/audio/audio_task.cpp
index 2309a5e5..390e3d2d 100644
--- a/src/audio/audio_task.cpp
+++ b/src/audio/audio_task.cpp
@@ -40,34 +40,12 @@ void AudioTaskMain(std::unique_ptr<Pipeline> pipeline, IAudioSink* sink) {
std::optional<StreamInfo::Format> output_format;
std::vector<Pipeline*> elements = pipeline->GetIterationOrder();
- std::size_t max_inputs =
- (*std::max_element(elements.begin(), elements.end(),
- [](Pipeline const* first, Pipeline const* second) {
- return first->NumInputs() < second->NumInputs();
- }))
- ->NumInputs();
-
- // We need to be able to simultaneously map all of an element's inputs, plus
- // its output. So preallocate that many ranges.
- std::vector<MappableRegion<kPipelineBufferSize>> in_regions(max_inputs);
- MappableRegion<kPipelineBufferSize> out_region;
- std::for_each(in_regions.begin(), in_regions.end(),
- [](const auto& region) { assert(region.is_valid); });
- assert(out_region.is_valid);
-
- // Each element has exactly one output buffer.
- std::vector<HimemAlloc<kPipelineBufferSize>> buffers(elements.size());
- std::vector<StreamInfo> buffer_infos(buffers.size());
- std::for_each(buffers.begin(), buffers.end(),
- [](const HimemAlloc<kPipelineBufferSize>& alloc) {
- assert(alloc.is_valid);
- });
while (1) {
for (int i = 0; i < elements.size(); i++) {
std::vector<RawStream> raw_in_streams;
- elements.at(i)->InStreams(&in_regions, &raw_in_streams);
- RawStream raw_out_stream = elements.at(i)->OutStream(&out_region);
+ elements.at(i)->InStreams(&raw_in_streams);
+ RawStream raw_out_stream = elements.at(i)->OutStream();
// Crop the input and output streams to the ranges that are safe to
// touch. For the input streams, this is the region that contains
@@ -79,17 +57,12 @@ void AudioTaskMain(std::unique_ptr<Pipeline> pipeline, IAudioSink* sink) {
OutputStream out_stream(&raw_out_stream);
elements.at(i)->OutputElement()->Process(in_streams, &out_stream);
-
- std::for_each(in_regions.begin(), in_regions.end(),
- [](auto&& r) { r.Unmap(); });
- out_region.Unmap();
}
- RawStream raw_sink_stream = elements.front()->OutStream(&out_region);
+ RawStream raw_sink_stream = elements.front()->OutStream();
InputStream sink_stream(&raw_sink_stream);
if (sink_stream.info().bytes_in_stream == 0) {
- out_region.Unmap();
vTaskDelay(pdMS_TO_TICKS(100));
continue;
}
@@ -121,8 +94,6 @@ void AudioTaskMain(std::unique_ptr<Pipeline> pipeline, IAudioSink* sink) {
}
sink_stream.consume(sent);
}
-
- out_region.Unmap();
}
}