From 4bff06c76c223a156a14adc478ab1a9b083fd7b2 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Tue, 23 May 2023 09:12:26 +1000 Subject: Drop himem audio buffers (for now?) For some reason the spinlocks required now block forever? Very odd. On the plus side, this turned out to be the issue that was stopping the audio pipeline from running on the app core. --- src/audio/audio_task.cpp | 35 +++-------------------------------- 1 file changed, 3 insertions(+), 32 deletions(-) (limited to 'src/audio/audio_task.cpp') 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, IAudioSink* sink) { std::optional output_format; std::vector 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> in_regions(max_inputs); - MappableRegion 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> buffers(elements.size()); - std::vector buffer_infos(buffers.size()); - std::for_each(buffers.begin(), buffers.end(), - [](const HimemAlloc& alloc) { - assert(alloc.is_valid); - }); while (1) { for (int i = 0; i < elements.size(); i++) { std::vector 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, 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, IAudioSink* sink) { } sink_stream.consume(sent); } - - out_region.Unmap(); } } -- cgit v1.2.3