Remove audio drain task

ISR drain works fine!
custom
jacqueline 2 years ago
parent 82830f995c
commit ecee01fe97
  1. 18
      src/audio/audio_task.cpp
  2. 1
      src/audio/include/audio_task.hpp
  3. 14
      src/tasks/tasks.cpp
  4. 2
      src/tasks/tasks.hpp
  5. 8
      src/ui/lvgl_task.cpp

@ -126,30 +126,12 @@ void AudioTaskMain(std::unique_ptr<Pipeline> pipeline, IAudioSink* sink) {
}
}
static std::byte sDrainBuf[8 * 1024];
void AudioDrainMain(IAudioSink* sink) {
while (1) {
std::size_t len = xStreamBufferReceive(sink->buffer(), sDrainBuf,
sizeof(sDrainBuf), portMAX_DELAY);
if (len > 0) {
sink->Send({sDrainBuf, len});
}
}
}
auto StartPipeline(Pipeline* pipeline, IAudioSink* sink) -> void {
ESP_LOGI(kTag, "starting audio pipeline task");
tasks::StartPersistent<tasks::Type::kAudio>(
[=]() { AudioTaskMain(std::unique_ptr<Pipeline>(pipeline), sink); });
}
auto StartDrain(IAudioSink* sink) -> void {
ESP_LOGI(kTag, "starting audio drain task");
tasks::StartPersistent<tasks::Type::kAudioDrain>(
[=]() { AudioDrainMain(sink); });
}
} // namespace task
} // namespace audio

@ -16,7 +16,6 @@ namespace audio {
namespace task {
auto StartPipeline(Pipeline* pipeline, IAudioSink* sink) -> void;
auto StartDrain(IAudioSink* sink) -> void;
} // namespace task

@ -22,10 +22,6 @@ auto Name<Type::kAudio>() -> std::string {
return "AUDIO";
}
template <>
auto Name<Type::kAudioDrain>() -> std::string {
return "DRAIN";
}
template <>
auto Name<Type::kDatabase>() -> std::string {
return "DB";
}
@ -41,12 +37,6 @@ auto AllocateStack<Type::kAudio>() -> cpp::span<StackType_t> {
return {static_cast<StackType_t*>(heap_caps_malloc(size, MALLOC_CAP_DEFAULT)),
size};
}
template <>
auto AllocateStack<Type::kAudioDrain>() -> cpp::span<StackType_t> {
std::size_t size = 1024;
return {static_cast<StackType_t*>(heap_caps_malloc(size, MALLOC_CAP_DEFAULT)),
size};
}
// LVGL requires only a relatively small stack. However, it can be allocated in
// PSRAM so we give it a bit of headroom for safety.
template <>
@ -88,10 +78,6 @@ template <>
auto Priority<Type::kAudio>() -> UBaseType_t {
return 10;
}
template <>
auto Priority<Type::kAudioDrain>() -> UBaseType_t {
return 10;
}
// After audio issues, UI jank is the most noticeable kind of scheduling-induced
// slowness that the user is likely to notice or care about. Therefore we place
// this task directly below audio in terms of priority.

@ -28,8 +28,6 @@ enum class Type {
kUiFlush,
// The main audio pipeline task.
kAudio,
// Task for flushing PCM samples to the current output.
kAudioDrain,
// Task for running database queries.
kDatabase,
};

@ -23,8 +23,8 @@
#include "misc/lv_color.h"
#include "misc/lv_style.h"
#include "misc/lv_timer.h"
#include "touchwheel.hpp"
#include "tasks.hpp"
#include "touchwheel.hpp"
#include "widgets/lv_label.h"
#include "display.hpp"
@ -38,7 +38,8 @@ auto tick_hook(TimerHandle_t xTimer) -> void {
lv_tick_inc(1);
}
void LvglMain(std::weak_ptr<drivers::TouchWheel> weak_touch_wheel, std::weak_ptr<drivers::Display> weak_display) {
void LvglMain(std::weak_ptr<drivers::TouchWheel> weak_touch_wheel,
std::weak_ptr<drivers::Display> weak_display) {
ESP_LOGI(kTag, "init lvgl");
lv_init();
@ -68,7 +69,8 @@ void LvglMain(std::weak_ptr<drivers::TouchWheel> weak_touch_wheel, std::weak_ptr
auto StartLvgl(std::weak_ptr<drivers::TouchWheel> touch_wheel,
std::weak_ptr<drivers::Display> display) -> void {
tasks::StartPersistent<tasks::Type::kUi>([=]() { LvglMain(touch_wheel, display); });
tasks::StartPersistent<tasks::Type::kUi>(
[=]() { LvglMain(touch_wheel, display); });
}
} // namespace ui

Loading…
Cancel
Save