summaryrefslogtreecommitdiff
path: root/src/audio/audio_fsm.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/audio_fsm.cpp')
-rw-r--r--src/audio/audio_fsm.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/audio/audio_fsm.cpp b/src/audio/audio_fsm.cpp
index 06b98420..1b6b6cc8 100644
--- a/src/audio/audio_fsm.cpp
+++ b/src/audio/audio_fsm.cpp
@@ -26,7 +26,9 @@
#include "future_fetcher.hpp"
#include "i2s_audio_output.hpp"
#include "i2s_dac.hpp"
+#include "idf_additions.h"
#include "nvs.hpp"
+#include "sample.hpp"
#include "service_locator.hpp"
#include "system_events.hpp"
#include "track.hpp"
@@ -103,10 +105,17 @@ void Uninitialised::react(const system_fsm::BootComplete& ev) {
return;
}
+ constexpr size_t kDrainBufferSize =
+ drivers::kI2SBufferLengthFrames * sizeof(sample::Sample) * 2 * 8;
+ ESP_LOGI(kTag, "allocating drain buffer, size %u KiB",
+ kDrainBufferSize / 1024);
+ StreamBufferHandle_t stream = xStreamBufferCreateWithCaps(
+ kDrainBufferSize, sizeof(sample::Sample) * 2, MALLOC_CAP_DMA);
+
sFileSource.reset(new FatfsAudioInput(sServices->tag_parser()));
- sI2SOutput.reset(new I2SAudioOutput(sServices->gpios(),
+ sI2SOutput.reset(new I2SAudioOutput(stream, sServices->gpios(),
std::unique_ptr<drivers::I2SDac>{*dac}));
- sBtOutput.reset(new BluetoothAudioOutput(sServices->bluetooth()));
+ sBtOutput.reset(new BluetoothAudioOutput(stream, sServices->bluetooth()));
auto& nvs = sServices->nvs();
sI2SOutput->SetMaxVolume(nvs.AmpMaxVolume().get());